Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6

* 'master' of master.kernel.org:/pub/scm/linux/kernel/git/cooloney/blackfin-2.6:
Blackfin arch: add proper const volatile to addr argument to the read functions
Blackfin arch: Add definition of dma_mapping_error
Blackfin arch: move cond_syscall() behind __KERNEL__ like all other architectures
Blackfin arch: match kernel startup messaage with new linker script
Blackfin arch: add missing braces around array bfin serial init
Blackfin arch: update printk to use KERN_EMERG and reformat crash output
Blackfin arch: update ANOMALY handling

+295 -83
+5 -3
arch/blackfin/kernel/setup.c
··· 329 330 printk(KERN_INFO "Memory map:\n" 331 KERN_INFO " text = 0x%p-0x%p\n" 332 - KERN_INFO " init = 0x%p-0x%p\n" 333 KERN_INFO " data = 0x%p-0x%p\n" 334 - KERN_INFO " stack = 0x%p-0x%p\n" 335 KERN_INFO " bss = 0x%p-0x%p\n" 336 KERN_INFO " available = 0x%p-0x%p\n" 337 #ifdef CONFIG_MTD_UCLINUX ··· 342 KERN_INFO " DMA Zone = 0x%p-0x%p\n" 343 #endif 344 , _stext, _etext, 345 - __init_begin, __init_end, 346 _sdata, _edata, 347 (void*)&init_thread_union, (void*)((int)(&init_thread_union) + 0x2000), 348 __bss_start, __bss_stop, 349 (void*)_ramstart, (void*)memory_end 350 #ifdef CONFIG_MTD_UCLINUX
··· 329 330 printk(KERN_INFO "Memory map:\n" 331 KERN_INFO " text = 0x%p-0x%p\n" 332 + KERN_INFO " rodata = 0x%p-0x%p\n" 333 KERN_INFO " data = 0x%p-0x%p\n" 334 + KERN_INFO " stack = 0x%p-0x%p\n" 335 + KERN_INFO " init = 0x%p-0x%p\n" 336 KERN_INFO " bss = 0x%p-0x%p\n" 337 KERN_INFO " available = 0x%p-0x%p\n" 338 #ifdef CONFIG_MTD_UCLINUX ··· 341 KERN_INFO " DMA Zone = 0x%p-0x%p\n" 342 #endif 343 , _stext, _etext, 344 + __start_rodata, __end_rodata, 345 _sdata, _edata, 346 (void*)&init_thread_union, (void*)((int)(&init_thread_union) + 0x2000), 347 + __init_begin, __init_end, 348 __bss_start, __bss_stop, 349 (void*)_ramstart, (void*)memory_end 350 #ifdef CONFIG_MTD_UCLINUX
+82 -51
arch/blackfin/kernel/traps.c
··· 148 unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE; 149 150 #ifdef CONFIG_KGDB 151 - # define CHK_DEBUGGER_TRAP() do { CHK_DEBUGGER(trapnr, sig, info.si_code, fp,); } while (0) 152 - # define CHK_DEBUGGER_TRAP_MAYBE() do { if (kgdb_connected) CHK_DEBUGGER_TRAP(); } while (0) 153 #else 154 # define CHK_DEBUGGER_TRAP() do { } while (0) 155 # define CHK_DEBUGGER_TRAP_MAYBE() do { } while (0) ··· 304 info.si_code = ILL_CPLB_MULHIT; 305 #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO 306 sig = SIGSEGV; 307 - printk(KERN_EMERG "\n\nNULL pointer access (probably)\n"); 308 #else 309 sig = SIGILL; 310 printk(KERN_EMERG EXC_0x27); ··· 426 if (current->mm) { 427 fp->pc = current->mm->start_code; 428 } else { 429 - printk(KERN_EMERG "I can't return to memory that doesn't exist - bad things happen\n"); 430 panic("Help - I've fallen and can't get up\n"); 431 } 432 } ··· 532 void dump_bfin_regs(struct pt_regs *fp, void *retaddr) 533 { 534 if (current->pid) { 535 - printk("\nCURRENT PROCESS:\n\n"); 536 - printk("COMM=%s PID=%d\n", current->comm, current->pid); 537 } else { 538 printk 539 - ("\nNo Valid pid - Either things are really messed up, or you are in the kernel\n"); 540 } 541 542 if (current->mm) { 543 - printk("TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n" 544 "BSS = 0x%p-0x%p USER-STACK = 0x%p\n\n", 545 (void*)current->mm->start_code, 546 (void*)current->mm->end_code, ··· 555 (void*)current->mm->start_stack); 556 } 557 558 - printk("return address: 0x%p; contents of [PC-16...PC+8]:\n", retaddr); 559 if (retaddr != 0 && retaddr <= (void*)physical_mem_end 560 #if L1_CODE_LENGTH != 0 561 /* FIXME: Copy the code out of L1 Instruction SRAM through dma ··· 564 && retaddr < (void*)(L1_CODE_START + L1_CODE_LENGTH)) 565 #endif 566 ) { 567 - int i = 0; 568 unsigned short x = 0; 569 - for (i = -16; i < 8; i++) { 570 - if (get_user(x, (unsigned short *)retaddr + i)) 571 break; 572 #ifndef CONFIG_DEBUG_HWERR 573 /* If one of the last few instructions was a STI ··· 580 * and we just noticed 581 */ 582 if (x >= 0x0040 && x <= 0x0047 && i <= 0) 583 - panic("\n\nWARNING : You should reconfigure the kernel to turn on\n" 584 - " 'Hardware error interrupt debugging'\n" 585 - " The rest of this error is meanless\n"); 586 #endif 587 - 588 - if (i == -8) 589 - printk("\n"); 590 - if (i == 0) 591 - printk("X\n"); 592 - printk("%04x ", x); 593 } 594 } else 595 - printk("Cannot look at the [PC] for it is in unreadable L1 SRAM - sorry\n"); 596 597 - printk("\n\n"); 598 599 - printk("RETE: %08lx RETN: %08lx RETX: %08lx RETS: %08lx\n", 600 - fp->rete, fp->retn, fp->retx, fp->rets); 601 - printk("IPEND: %04lx SYSCFG: %04lx\n", fp->ipend, fp->syscfg); 602 - printk("SEQSTAT: %08lx SP: %08lx\n", (long)fp->seqstat, (long)fp); 603 - printk("R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n", 604 - fp->r0, fp->r1, fp->r2, fp->r3); 605 - printk("R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n", 606 - fp->r4, fp->r5, fp->r6, fp->r7); 607 - printk("P0: %08lx P1: %08lx P2: %08lx P3: %08lx\n", 608 - fp->p0, fp->p1, fp->p2, fp->p3); 609 - printk("P4: %08lx P5: %08lx FP: %08lx\n", fp->p4, fp->p5, fp->fp); 610 - printk("A0.w: %08lx A0.x: %08lx A1.w: %08lx A1.x: %08lx\n", 611 - fp->a0w, fp->a0x, fp->a1w, fp->a1x); 612 613 - printk("LB0: %08lx LT0: %08lx LC0: %08lx\n", fp->lb0, fp->lt0, 614 - fp->lc0); 615 - printk("LB1: %08lx LT1: %08lx LC1: %08lx\n", fp->lb1, fp->lt1, 616 - fp->lc1); 617 - printk("B0: %08lx L0: %08lx M0: %08lx I0: %08lx\n", fp->b0, fp->l0, 618 - fp->m0, fp->i0); 619 - printk("B1: %08lx L1: %08lx M1: %08lx I1: %08lx\n", fp->b1, fp->l1, 620 - fp->m1, fp->i1); 621 - printk("B2: %08lx L2: %08lx M2: %08lx I2: %08lx\n", fp->b2, fp->l2, 622 - fp->m2, fp->i2); 623 - printk("B3: %08lx L3: %08lx M3: %08lx I3: %08lx\n", fp->b3, fp->l3, 624 - fp->m3, fp->i3); 625 626 - printk("\nUSP: %08lx ASTAT: %08lx\n", rdusp(), fp->astat); 627 if ((long)fp->seqstat & SEQSTAT_EXCAUSE) { 628 - printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void*)bfin_read_DCPLB_FAULT_ADDR()); 629 - printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void*)bfin_read_ICPLB_FAULT_ADDR()); 630 } 631 632 printk("\n\n");
··· 148 unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE; 149 150 #ifdef CONFIG_KGDB 151 + # define CHK_DEBUGGER_TRAP() \ 152 + do { \ 153 + CHK_DEBUGGER(trapnr, sig, info.si_code, fp); \ 154 + } while (0) 155 + # define CHK_DEBUGGER_TRAP_MAYBE() \ 156 + do { \ 157 + if (kgdb_connected) \ 158 + CHK_DEBUGGER_TRAP(); \ 159 + } while (0) 160 #else 161 # define CHK_DEBUGGER_TRAP() do { } while (0) 162 # define CHK_DEBUGGER_TRAP_MAYBE() do { } while (0) ··· 297 info.si_code = ILL_CPLB_MULHIT; 298 #ifdef CONFIG_DEBUG_HUNT_FOR_ZERO 299 sig = SIGSEGV; 300 + printk(KERN_EMERG "\n" 301 + KERN_EMERG "NULL pointer access (probably)\n"); 302 #else 303 sig = SIGILL; 304 printk(KERN_EMERG EXC_0x27); ··· 418 if (current->mm) { 419 fp->pc = current->mm->start_code; 420 } else { 421 + printk(KERN_EMERG 422 + "I can't return to memory that doesn't exist" 423 + " - bad things happen\n"); 424 panic("Help - I've fallen and can't get up\n"); 425 } 426 } ··· 522 void dump_bfin_regs(struct pt_regs *fp, void *retaddr) 523 { 524 if (current->pid) { 525 + printk(KERN_EMERG "\n" KERN_EMERG "CURRENT PROCESS:\n" 526 + KERN_EMERG "\n"); 527 + printk(KERN_EMERG "COMM=%s PID=%d\n", 528 + current->comm, current->pid); 529 } else { 530 printk 531 + (KERN_EMERG "\n" KERN_EMERG 532 + "No Valid pid - Either things are really messed up," 533 + " or you are in the kernel\n"); 534 } 535 536 if (current->mm) { 537 + printk(KERN_EMERG "TEXT = 0x%p-0x%p DATA = 0x%p-0x%p\n" 538 "BSS = 0x%p-0x%p USER-STACK = 0x%p\n\n", 539 (void*)current->mm->start_code, 540 (void*)current->mm->end_code, ··· 541 (void*)current->mm->start_stack); 542 } 543 544 + printk(KERN_EMERG "return address: [0x%p]; contents of:", retaddr); 545 if (retaddr != 0 && retaddr <= (void*)physical_mem_end 546 #if L1_CODE_LENGTH != 0 547 /* FIXME: Copy the code out of L1 Instruction SRAM through dma ··· 550 && retaddr < (void*)(L1_CODE_START + L1_CODE_LENGTH)) 551 #endif 552 ) { 553 + int i = ((unsigned int)retaddr & 0xFFFFFFF0) - 32; 554 unsigned short x = 0; 555 + for (; i < ((unsigned int)retaddr & 0xFFFFFFF0 ) + 32 ; 556 + i += 2) { 557 + if ( !(i & 0xF) ) 558 + printk(KERN_EMERG "\n" KERN_EMERG 559 + "0x%08x: ", i); 560 + 561 + if (get_user(x, (unsigned short *)i)) 562 break; 563 #ifndef CONFIG_DEBUG_HWERR 564 /* If one of the last few instructions was a STI ··· 561 * and we just noticed 562 */ 563 if (x >= 0x0040 && x <= 0x0047 && i <= 0) 564 + panic("\n\nWARNING : You should reconfigure" 565 + " the kernel to turn on\n" 566 + " 'Hardware error interrupt" 567 + " debugging'\n" 568 + " The rest of this error" 569 + " is meanless\n"); 570 #endif 571 + if ( i == (unsigned int)retaddr ) 572 + printk("[%04x]", x); 573 + else 574 + printk(" %04x ", x); 575 } 576 + printk("\n" KERN_EMERG "\n"); 577 } else 578 + printk(KERN_EMERG 579 + "Cannot look at the [PC] for it is" 580 + "in unreadable L1 SRAM - sorry\n"); 581 582 583 + printk(KERN_EMERG 584 + "RETE: %08lx RETN: %08lx RETX: %08lx RETS: %08lx\n", 585 + fp->rete, fp->retn, fp->retx, fp->rets); 586 + printk(KERN_EMERG "IPEND: %04lx SYSCFG: %04lx\n", 587 + fp->ipend, fp->syscfg); 588 + printk(KERN_EMERG "SEQSTAT: %08lx SP: %08lx\n", 589 + (long)fp->seqstat, (long)fp); 590 + printk(KERN_EMERG "R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n", 591 + fp->r0, fp->r1, fp->r2, fp->r3); 592 + printk(KERN_EMERG "R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n", 593 + fp->r4, fp->r5, fp->r6, fp->r7); 594 + printk(KERN_EMERG "P0: %08lx P1: %08lx P2: %08lx P3: %08lx\n", 595 + fp->p0, fp->p1, fp->p2, fp->p3); 596 + printk(KERN_EMERG 597 + "P4: %08lx P5: %08lx FP: %08lx\n", 598 + fp->p4, fp->p5, fp->fp); 599 + printk(KERN_EMERG 600 + "A0.w: %08lx A0.x: %08lx A1.w: %08lx A1.x: %08lx\n", 601 + fp->a0w, fp->a0x, fp->a1w, fp->a1x); 602 603 + printk(KERN_EMERG "LB0: %08lx LT0: %08lx LC0: %08lx\n", 604 + fp->lb0, fp->lt0, fp->lc0); 605 + printk(KERN_EMERG "LB1: %08lx LT1: %08lx LC1: %08lx\n", 606 + fp->lb1, fp->lt1, fp->lc1); 607 + printk(KERN_EMERG "B0: %08lx L0: %08lx M0: %08lx I0: %08lx\n", 608 + fp->b0, fp->l0, fp->m0, fp->i0); 609 + printk(KERN_EMERG "B1: %08lx L1: %08lx M1: %08lx I1: %08lx\n", 610 + fp->b1, fp->l1, fp->m1, fp->i1); 611 + printk(KERN_EMERG "B2: %08lx L2: %08lx M2: %08lx I2: %08lx\n", 612 + fp->b2, fp->l2, fp->m2, fp->i2); 613 + printk(KERN_EMERG "B3: %08lx L3: %08lx M3: %08lx I3: %08lx\n", 614 + fp->b3, fp->l3, fp->m3, fp->i3); 615 616 + printk(KERN_EMERG "\n" KERN_EMERG "USP: %08lx ASTAT: %08lx\n", 617 + rdusp(), fp->astat); 618 if ((long)fp->seqstat & SEQSTAT_EXCAUSE) { 619 + printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", 620 + (void *)bfin_read_DCPLB_FAULT_ADDR()); 621 + printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", 622 + (void *)bfin_read_ICPLB_FAULT_ADDR()); 623 } 624 625 printk("\n\n");
+5
arch/blackfin/lib/memcmp.S
··· 61 62 LSETUP (.Lquad_loop_s, .Lquad_loop_e) LC0=P1; 63 .Lquad_loop_s: 64 MNOP || R0 = [P0++] || R1 = [I0++]; 65 CC = R0 == R1; 66 IF !CC JUMP .Lquad_different; 67 .Lquad_loop_e:
··· 61 62 LSETUP (.Lquad_loop_s, .Lquad_loop_e) LC0=P1; 63 .Lquad_loop_s: 64 + #ifdef ANOMALY_05000202 65 + R0 = [P0++]; 66 + R1 = [I0++]; 67 + #else 68 MNOP || R0 = [P0++] || R1 = [I0++]; 69 + #endif 70 CC = R0 == R1; 71 IF !CC JUMP .Lquad_different; 72 .Lquad_loop_e:
+10 -3
arch/blackfin/lib/memcpy.S
··· 94 .Lmore_than_seven: 95 /* There's at least eight bytes to copy. */ 96 P2 += -1; /* because we unroll one iteration */ 97 - LSETUP(.Lword_loop, .Lword_loop) LC0=P2; 98 R0 = R1; 99 I1 = P1; 100 R3 = [I1++]; 101 - .Lword_loop: 102 MNOP || [P0++] = R3 || R3 = [I1++]; 103 - 104 [P0++] = R3; 105 /* Any remaining bytes to copy? */ 106 R3 = 0x3;
··· 94 .Lmore_than_seven: 95 /* There's at least eight bytes to copy. */ 96 P2 += -1; /* because we unroll one iteration */ 97 + LSETUP(.Lword_loops, .Lword_loope) LC0=P2; 98 R0 = R1; 99 I1 = P1; 100 R3 = [I1++]; 101 + #ifdef ANOMALY_05000202 102 + .Lword_loops: 103 + [P0++] = R3; 104 + .Lword_loope: 105 + R3 = [I1++]; 106 + #else 107 + .Lword_loops: 108 + .Lword_loope: 109 MNOP || [P0++] = R3 || R3 = [I1++]; 110 + #endif 111 [P0++] = R3; 112 /* Any remaining bytes to copy? */ 113 R3 = 0x3;
+15 -2
arch/blackfin/lib/memmove.S
··· 69 P2 = R2; /* set remainder */ 70 R1 = [I0++]; 71 72 - LSETUP (.Lquad_loop, .Lquad_loop) LC0=P1; 73 - .Lquad_loop: MNOP || [P0++] = R1 || R1 = [I0++]; 74 [P0++] = R1; 75 76 CC = P2 == 0; /* any remaining bytes? */ ··· 102 R1 = B[P3--] (Z); 103 CC = P2 == 0; 104 IF CC JUMP .Lno_loop; 105 LSETUP (.Lol_s, .Lol_e) LC0 = P2; 106 .Lol_s: B[P0--] = R1; 107 .Lol_e: R1 = B[P3--] (Z);
··· 69 P2 = R2; /* set remainder */ 70 R1 = [I0++]; 71 72 + LSETUP (.Lquad_loops, .Lquad_loope) LC0=P1; 73 + #ifdef ANOMALY_05000202 74 + .Lquad_loops: 75 + [P0++] = R1; 76 + .Lquad_loope: 77 + R1 = [I0++]; 78 + #else 79 + .Lquad_loops: 80 + .Lquad_loope: 81 + MNOP || [P0++] = R1 || R1 = [I0++]; 82 + #endif 83 [P0++] = R1; 84 85 CC = P2 == 0; /* any remaining bytes? */ ··· 93 R1 = B[P3--] (Z); 94 CC = P2 == 0; 95 IF CC JUMP .Lno_loop; 96 + #ifdef ANOMALY_05000245 97 + NOP; 98 + NOP; 99 + #endif 100 LSETUP (.Lol_s, .Lol_e) LC0 = P2; 101 .Lol_s: B[P0--] = R1; 102 .Lol_e: R1 = B[P3--] (Z);
+10 -10
arch/blackfin/mach-common/cache.S
··· 123 R2 = R0 & R2; 124 P0 = R2; 125 P1 = R1; 126 - CSYNC; 127 IFLUSH [P0]; 128 1: 129 IFLUSH [P0++]; 130 CC = P0 < P1 (iu); 131 IF CC JUMP 1b (bp); 132 IFLUSH [P0]; 133 - SSYNC; 134 RTS; 135 ENDPROC(_blackfin_icache_flush_range) 136 ··· 148 R2 = R0 & R2; 149 P0 = R2; 150 P1 = R1; 151 - CSYNC; 152 IFLUSH [P0]; 153 1: 154 FLUSH [P0]; ··· 157 IF CC JUMP 1b (bp); 158 IFLUSH [P0]; 159 FLUSH [P0]; 160 - SSYNC; 161 RTS; 162 ENDPROC(_blackfin_icache_dcache_flush_range) 163 ··· 174 R2 = R0 & R2; 175 P0 = R2; 176 P1 = R1; 177 - CSYNC; 178 FLUSHINV[P0]; 179 1: 180 FLUSHINV[P0++]; ··· 186 * so do one more. 187 */ 188 FLUSHINV[P0]; 189 - SSYNC; 190 RTS; 191 ENDPROC(_blackfin_dcache_invalidate_range) 192 ··· 235 R2 = R0 & R2; 236 P0 = R2; 237 P1 = R1; 238 - CSYNC; 239 FLUSH[P0]; 240 1: 241 FLUSH[P0++]; ··· 247 * one more. 248 */ 249 FLUSH[P0]; 250 - SSYNC; 251 RTS; 252 ENDPROC(_blackfin_dcache_flush_range) 253 254 ENTRY(_blackfin_dflush_page) 255 P1 = 1 << (PAGE_SHIFT - L1_CACHE_SHIFT); 256 P0 = R0; 257 - CSYNC; 258 FLUSH[P0]; 259 LSETUP (.Lfl1, .Lfl1) LC0 = P1; 260 .Lfl1: FLUSH [P0++]; 261 - SSYNC; 262 RTS; 263 ENDPROC(_blackfin_dflush_page)
··· 123 R2 = R0 & R2; 124 P0 = R2; 125 P1 = R1; 126 + CSYNC(R3); 127 IFLUSH [P0]; 128 1: 129 IFLUSH [P0++]; 130 CC = P0 < P1 (iu); 131 IF CC JUMP 1b (bp); 132 IFLUSH [P0]; 133 + SSYNC(R3); 134 RTS; 135 ENDPROC(_blackfin_icache_flush_range) 136 ··· 148 R2 = R0 & R2; 149 P0 = R2; 150 P1 = R1; 151 + CSYNC(R3); 152 IFLUSH [P0]; 153 1: 154 FLUSH [P0]; ··· 157 IF CC JUMP 1b (bp); 158 IFLUSH [P0]; 159 FLUSH [P0]; 160 + SSYNC(R3); 161 RTS; 162 ENDPROC(_blackfin_icache_dcache_flush_range) 163 ··· 174 R2 = R0 & R2; 175 P0 = R2; 176 P1 = R1; 177 + CSYNC(R3); 178 FLUSHINV[P0]; 179 1: 180 FLUSHINV[P0++]; ··· 186 * so do one more. 187 */ 188 FLUSHINV[P0]; 189 + SSYNC(R3); 190 RTS; 191 ENDPROC(_blackfin_dcache_invalidate_range) 192 ··· 235 R2 = R0 & R2; 236 P0 = R2; 237 P1 = R1; 238 + CSYNC(R3); 239 FLUSH[P0]; 240 1: 241 FLUSH[P0++]; ··· 247 * one more. 248 */ 249 FLUSH[P0]; 250 + SSYNC(R3); 251 RTS; 252 ENDPROC(_blackfin_dcache_flush_range) 253 254 ENTRY(_blackfin_dflush_page) 255 P1 = 1 << (PAGE_SHIFT - L1_CACHE_SHIFT); 256 P0 = R0; 257 + CSYNC(R3); 258 FLUSH[P0]; 259 LSETUP (.Lfl1, .Lfl1) LC0 = P1; 260 .Lfl1: FLUSH [P0++]; 261 + SSYNC(R3); 262 RTS; 263 ENDPROC(_blackfin_dflush_page)
+1 -1
arch/blackfin/mach-common/interrupt.S
··· 139 fp = 0; 140 #endif 141 142 - #ifdef ANOMALY_05000283 143 cc = r7 == r7; 144 p5.h = 0xffc0; 145 p5.l = 0x0014;
··· 139 fp = 0; 140 #endif 141 142 + #if defined (ANOMALY_05000283) || defined (ANOMALY_05000315) 143 cc = r7 == r7; 144 p5.h = 0xffc0; 145 p5.l = 0x0014;
+31 -2
include/asm-blackfin/blackfin.h
··· 39 #elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244) 40 static inline void SSYNC (void) 41 { 42 - __builtin_bfin_ssync(); 43 } 44 #elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244) 45 static inline void SSYNC (void) ··· 73 #elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244) 74 static inline void CSYNC (void) 75 { 76 - __builtin_bfin_csync(); 77 } 78 #elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244) 79 static inline void CSYNC (void) ··· 83 __asm__ __volatile__ ("csync;\n\t"); 84 } 85 #endif 86 87 #endif /* __ASSEMBLY__ */ 88
··· 39 #elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244) 40 static inline void SSYNC (void) 41 { 42 + __asm__ __volatile__ ("nop; nop; nop;\n\t" 43 + "ssync;\n\t" 44 + ::); 45 } 46 #elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244) 47 static inline void SSYNC (void) ··· 71 #elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244) 72 static inline void CSYNC (void) 73 { 74 + __asm__ __volatile__ ("nop; nop; nop;\n\t" 75 + "ssync;\n\t" 76 + ::); 77 } 78 #elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244) 79 static inline void CSYNC (void) ··· 79 __asm__ __volatile__ ("csync;\n\t"); 80 } 81 #endif 82 + 83 + #else /* __ASSEMBLY__ */ 84 + 85 + /* SSYNC & CSYNC implementations for assembly files */ 86 + 87 + #define ssync(x) SSYNC(x) 88 + #define csync(x) CSYNC(x) 89 + 90 + #if defined(ANOMALY_05000312) && defined(ANOMALY_05000244) 91 + #define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch; 92 + #define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch; 93 + 94 + #elif defined(ANOMALY_05000312) && !defined(ANOMALY_05000244) 95 + #define SSYNC(scratch) cli scratch; nop; nop; SSYNC; sti scratch; 96 + #define CSYNC(scratch) cli scratch; nop; nop; CSYNC; sti scratch; 97 + 98 + #elif !defined(ANOMALY_05000312) && defined(ANOMALY_05000244) 99 + #define SSYNC(scratch) nop; nop; nop; SSYNC; 100 + #define CSYNC(scratch) nop; nop; nop; CSYNC; 101 + 102 + #elif !defined(ANOMALY_05000312) && !defined(ANOMALY_05000244) 103 + #define SSYNC(scratch) SSYNC; 104 + #define CSYNC(scratch) CSYNC; 105 + 106 + #endif /* ANOMALY_05000312 & ANOMALY_05000244 handling */ 107 108 #endif /* __ASSEMBLY__ */ 109
+2
include/asm-blackfin/dma-mapping.h
··· 15 #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) 16 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) 17 18 /* 19 * Map a single buffer of the indicated size for DMA in streaming mode. 20 * The 32-bit bus address to use is returned.
··· 15 #define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f) 16 #define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h) 17 18 + #define dma_mapping_error 19 + 20 /* 21 * Map a single buffer of the indicated size for DMA in streaming mode. 22 * The 32-bit bus address to use is returned.
+3 -3
include/asm-blackfin/io.h
··· 20 */ 21 #ifndef __ASSEMBLY__ 22 23 - static inline unsigned char readb(void __iomem *addr) 24 { 25 unsigned int val; 26 int tmp; ··· 35 return (unsigned char) val; 36 } 37 38 - static inline unsigned short readw(void __iomem *addr) 39 { 40 unsigned int val; 41 int tmp; ··· 50 return (unsigned short) val; 51 } 52 53 - static inline unsigned int readl(void __iomem *addr) 54 { 55 unsigned int val; 56 int tmp;
··· 20 */ 21 #ifndef __ASSEMBLY__ 22 23 + static inline unsigned char readb(const volatile void __iomem *addr) 24 { 25 unsigned int val; 26 int tmp; ··· 35 return (unsigned char) val; 36 } 37 38 + static inline unsigned short readw(const volatile void __iomem *addr) 39 { 40 unsigned int val; 41 int tmp; ··· 50 return (unsigned short) val; 51 } 52 53 + static inline unsigned int readl(const volatile void __iomem *addr) 54 { 55 unsigned int val; 56 int tmp;
+78 -6
include/asm-blackfin/mach-bf533/anomaly.h
··· 43 #endif 44 45 /* Issues that are common to 0.5, 0.4, and 0.3 silicon */ 46 - #if (defined(CONFIG_BF_REV_0_5) || defined(CONFIG_BF_REV_0_4) || defined(CONFIG_BF_REV_0_3)) 47 #define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in 48 slot1 and store of a P register in slot 2 is not 49 supported */ ··· 77 control */ 78 #define ANOMALY_05000283 /* A system MMR write is stalled indefinitely when 79 killed in a particular stage*/ 80 #define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC 81 registers are interrupted */ 82 - #define ANOMALY_05000311 /* Erroneous flag pin operations under specific sequences*/ 83 - 84 - #endif 85 86 /* These issues only occur on 0.3 or 0.4 BF533 */ 87 #if (defined(CONFIG_BF_REV_0_4) || defined(CONFIG_BF_REV_0_3)) ··· 140 internal voltage regulator (VDDint) to increase. */ 141 #define ANOMALY_05000270 /* High I/O activity causes the output voltage of the 142 internal voltage regulator (VDDint) to decrease */ 143 - #endif 144 145 /* These issues are only on 0.4 silicon */ 146 #if (defined(CONFIG_BF_REV_0_4)) 147 #define ANOMALY_05000234 /* Incorrect Revision Number in DSPID Register */ 148 #define ANOMALY_05000250 /* Incorrect Bit-Shift of Data Word in Multichannel 149 (TDM) */ 150 - #endif 151 152 /* These issues are only on 0.3 silicon */ 153 #if defined(CONFIG_BF_REV_0_3) ··· 176 #define ANOMALY_05000233 /* PPI_FS3 is not driven in 2 or 3 internal Frame 177 Sync Transmit Mode */ 178 #define ANOMALY_05000271 /* Spontaneous reset of Internal Voltage Regulator */ 179 #endif 180 181 #endif /* _MACH_ANOMALY_H_ */
··· 43 #endif 44 45 /* Issues that are common to 0.5, 0.4, and 0.3 silicon */ 46 + #if (defined(CONFIG_BF_REV_0_5) || defined(CONFIG_BF_REV_0_4) \ 47 + || defined(CONFIG_BF_REV_0_3)) 48 #define ANOMALY_05000074 /* A multi issue instruction with dsp32shiftimm in 49 slot1 and store of a P register in slot 2 is not 50 supported */ ··· 76 control */ 77 #define ANOMALY_05000283 /* A system MMR write is stalled indefinitely when 78 killed in a particular stage*/ 79 + #define ANOMALY_05000311 /* Erroneous flag pin operations under specific 80 + sequences */ 81 #define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC 82 registers are interrupted */ 83 + #define ANOMALY_05000313 /* PPI Is Level-Sensitive on First Transfer */ 84 + #define ANOMALY_05000315 /* Killed System MMR Write Completes Erroneously On 85 + * Next System MMR Access */ 86 + #define ANOMALY_05000319 /* Internal Voltage Regulator Values of 1.05V, 1.10V 87 + * and 1.15V Not Allowed for LQFP Packages */ 88 + #endif /* Issues that are common to 0.5, 0.4, and 0.3 silicon */ 89 90 /* These issues only occur on 0.3 or 0.4 BF533 */ 91 #if (defined(CONFIG_BF_REV_0_4) || defined(CONFIG_BF_REV_0_3)) ··· 134 internal voltage regulator (VDDint) to increase. */ 135 #define ANOMALY_05000270 /* High I/O activity causes the output voltage of the 136 internal voltage regulator (VDDint) to decrease */ 137 + #endif /* issues only occur on 0.3 or 0.4 BF533 */ 138 139 /* These issues are only on 0.4 silicon */ 140 #if (defined(CONFIG_BF_REV_0_4)) 141 #define ANOMALY_05000234 /* Incorrect Revision Number in DSPID Register */ 142 #define ANOMALY_05000250 /* Incorrect Bit-Shift of Data Word in Multichannel 143 (TDM) */ 144 + #endif /* issues are only on 0.4 silicon */ 145 146 /* These issues are only on 0.3 silicon */ 147 #if defined(CONFIG_BF_REV_0_3) ··· 170 #define ANOMALY_05000233 /* PPI_FS3 is not driven in 2 or 3 internal Frame 171 Sync Transmit Mode */ 172 #define ANOMALY_05000271 /* Spontaneous reset of Internal Voltage Regulator */ 173 + #endif /* only on 0.3 silicon */ 174 + 175 + #if defined(CONFIG_BF_REV_0_2) 176 + #define ANOMALY_05000067 /* Watchpoints (Hardware Breakpoints) are not 177 + * supported */ 178 + #define ANOMALY_05000109 /* Reserved bits in SYSCFG register not set at 179 + * power on */ 180 + #define ANOMALY_05000116 /* Trace Buffers may record discontinuities into 181 + * emulation mode and/or exception, NMI, reset 182 + * handlers */ 183 + #define ANOMALY_05000123 /* DTEST_COMMAND initiated memory access may be 184 + * incorrect if data cache or DMA is active */ 185 + #define ANOMALY_05000124 /* DMA Lock-up at CCLK to SCLK ratios of 4:1, 2:1, 186 + * or 1:1 */ 187 + #define ANOMALY_05000125 /* Erroneous exception when enabling cache */ 188 + #define ANOMALY_05000126 /* SPI clock polarity and phase bits incorrect 189 + * during booting */ 190 + #define ANOMALY_05000137 /* DMEM_CONTROL is not set on Reset */ 191 + #define ANOMALY_05000138 /* SPI boot will not complete if there is a zero fill 192 + * block in the loader file */ 193 + #define ANOMALY_05000140 /* Allowing the SPORT RX FIFO to fill will cause an 194 + * overflow */ 195 + #define ANOMALY_05000141 /* An Infinite Stall occurs with a particular sequence 196 + * of consecutive dual dag events */ 197 + #define ANOMALY_05000142 /* Interrupts may be lost when a programmable input 198 + * flag is configured to be edge sensitive */ 199 + #define ANOMALY_05000143 /* A read from external memory may return a wrong 200 + * value with data cache enabled */ 201 + #define ANOMALY_05000144 /* DMA and TESTSET conflict when both are accessing 202 + * external memory */ 203 + #define ANOMALY_05000145 /* In PWM_OUT mode, you must enable the PPI block to 204 + * generate a waveform from PPI_CLK */ 205 + #define ANOMALY_05000146 /* MDMA may lose the first few words of a descriptor 206 + * chain */ 207 + #define ANOMALY_05000147 /* The source MDMA descriptor may stop with a DMA 208 + * Error */ 209 + #define ANOMALY_05000148 /* When booting from a 16-bit asynchronous memory 210 + * device, the upper 8-bits of each word must be 211 + * 0x00 */ 212 + #define ANOMALY_05000153 /* Frame Delay in SPORT Multichannel Mode */ 213 + #define ANOMALY_05000154 /* SPORT TFS signal is active in Multi-channel mode 214 + * outside of valid channels */ 215 + #define ANOMALY_05000155 /* Timer1 can not be used for PWMOUT mode when a 216 + * certain PPI mode is in use */ 217 + #define ANOMALY_05000157 /* A killed 32-bit System MMR write will lead to 218 + * the next system MMR access thinking it should be 219 + * 32-bit. */ 220 + #define ANOMALY_05000163 /* SPORT transmit data is not gated by external frame 221 + * sync in certain conditions */ 222 + #define ANOMALY_05000168 /* SDRAM auto-refresh and subsequent Power Ups */ 223 + #define ANOMALY_05000169 /* DATA CPLB page miss can result in lost 224 + * write-through cache data writes */ 225 + #define ANOMALY_05000173 /* DMA vs Core accesses to external memory */ 226 + #define ANOMALY_05000174 /* Cache Fill Buffer Data lost */ 227 + #define ANOMALY_05000175 /* Overlapping Sequencer and Memory Stalls */ 228 + #define ANOMALY_05000176 /* Multiplication of (-1) by (-1) followed by an 229 + * accumulator saturation */ 230 + #define ANOMALY_05000181 /* Disabling the PPI resets the PPI configuration 231 + * registers */ 232 + #define ANOMALY_05000185 /* PPI TX Mode with 2 External Frame Syncs */ 233 + #define ANOMALY_05000191 /* PPI does not invert the Driving PPICLK edge in 234 + * Transmit Modes */ 235 + #define ANOMALY_05000192 /* In PPI Transmit Modes with External Frame Syncs 236 + * POLC */ 237 + #define ANOMALY_05000206 /* Internal Voltage Regulator may not start up */ 238 + 239 #endif 240 241 #endif /* _MACH_ANOMALY_H_ */
+2
include/asm-blackfin/mach-bf533/bfin_serial_5xx.h
··· 78 }; 79 80 struct bfin_serial_res bfin_serial_resource[] = { 81 0xFFC00400, 82 IRQ_UART_RX, 83 #ifdef CONFIG_SERIAL_BFIN_DMA ··· 89 CONFIG_UART0_CTS_PIN, 90 CONFIG_UART0_RTS_PIN, 91 #endif 92 }; 93 94
··· 78 }; 79 80 struct bfin_serial_res bfin_serial_resource[] = { 81 + { 82 0xFFC00400, 83 IRQ_UART_RX, 84 #ifdef CONFIG_SERIAL_BFIN_DMA ··· 88 CONFIG_UART0_CTS_PIN, 89 CONFIG_UART0_RTS_PIN, 90 #endif 91 + } 92 }; 93 94
+20 -1
include/asm-blackfin/mach-bf537/anomaly.h
··· 73 control */ 74 #define ANOMALY_05000283 /* A system MMR write is stalled indefinitely when 75 killed in a particular stage*/ 76 #define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC 77 registers are interrupted */ 78 #endif 79 80 #if defined(CONFIG_BF_REV_0_2) ··· 119 DMA system instability */ 120 #define ANOMALY_05000280 /* SPI Master boot mode does not work well with 121 Atmel Dataflash devices */ 122 - 123 #endif /* CONFIG_BF_REV_0_2 */ 124 125 #endif /* _MACH_ANOMALY_H_ */
··· 73 control */ 74 #define ANOMALY_05000283 /* A system MMR write is stalled indefinitely when 75 killed in a particular stage*/ 76 + #define ANOMALY_05000310 /* False hardware errors caused by fetches at the 77 + * boundary of reserved memory */ 78 #define ANOMALY_05000312 /* Errors when SSYNC, CSYNC, or loads to LT, LB and LC 79 registers are interrupted */ 80 + #define ANOMALY_05000313 /* PPI is level sensitive on first transfer */ 81 + #define ANOMALY_05000322 /* EMAC RMII mode at 10-Base-T speed: RX frames not 82 + * received properly */ 83 #endif 84 85 #if defined(CONFIG_BF_REV_0_2) ··· 114 DMA system instability */ 115 #define ANOMALY_05000280 /* SPI Master boot mode does not work well with 116 Atmel Dataflash devices */ 117 + #define ANOMALY_05000281 /* False Hardware Error Exception when ISR context 118 + * is not restored */ 119 + #define ANOMALY_05000282 /* Memory DMA corruption with 32-bit data and traffic 120 + * control */ 121 + #define ANOMALY_05000283 /* System MMR Write Is Stalled Indefinitely When 122 + * Killed in a Particular Stage */ 123 + #define ANOMALY_05000285 /* New Feature: EMAC TX DMA Word Alignment 124 + * (Not Available On Older Silicon) */ 125 + #define ANOMALY_05000288 /* SPORTs may receive bad data if FIFOs fill up */ 126 + #define ANOMALY_05000315 /* Killed System MMR Write Completes Erroneously 127 + * On Next System MMR Access */ 128 + #define ANOMALY_05000316 /* EMAC RMII mode: collisions occur in Full Duplex 129 + * mode */ 130 + #define ANOMALY_05000321 /* EMAC RMII mode: TX frames in half duplex fail with 131 + * status No Carrier */ 132 #endif /* CONFIG_BF_REV_0_2 */ 133 134 #endif /* _MACH_ANOMALY_H_ */
+2
include/asm-blackfin/mach-bf561/bfin_serial_5xx.h
··· 78 }; 79 80 struct bfin_serial_res bfin_serial_resource[] = { 81 0xFFC00400, 82 IRQ_UART_RX, 83 #ifdef CONFIG_SERIAL_BFIN_DMA ··· 89 CONFIG_UART0_CTS_PIN, 90 CONFIG_UART0_RTS_PIN, 91 #endif 92 }; 93 94
··· 78 }; 79 80 struct bfin_serial_res bfin_serial_resource[] = { 81 + { 82 0xFFC00400, 83 IRQ_UART_RX, 84 #ifdef CONFIG_SERIAL_BFIN_DMA ··· 88 CONFIG_UART0_CTS_PIN, 89 CONFIG_UART0_RTS_PIN, 90 #endif 91 + } 92 }; 93 94
+27
include/asm-blackfin/mach-common/cdef_LPBlackfin.h
··· 39 #define bfin_read_SRAM_BASE_ADDRESS() bfin_read32(SRAM_BASE_ADDRESS) 40 #define bfin_write_SRAM_BASE_ADDRESS(val) bfin_write32(SRAM_BASE_ADDRESS,val) 41 #define bfin_read_DMEM_CONTROL() bfin_read32(DMEM_CONTROL) 42 #define bfin_write_DMEM_CONTROL(val) bfin_write32(DMEM_CONTROL,val) 43 #define bfin_read_DCPLB_STATUS() bfin_read32(DCPLB_STATUS) 44 #define bfin_write_DCPLB_STATUS(val) bfin_write32(DCPLB_STATUS,val) 45 #define bfin_read_DCPLB_FAULT_ADDR() bfin_read32(DCPLB_FAULT_ADDR) ··· 138 #define DTEST_DATA3 0xFFE0040C 139 */ 140 #define bfin_read_IMEM_CONTROL() bfin_read32(IMEM_CONTROL) 141 #define bfin_write_IMEM_CONTROL(val) bfin_write32(IMEM_CONTROL,val) 142 #define bfin_read_ICPLB_STATUS() bfin_read32(ICPLB_STATUS) 143 #define bfin_write_ICPLB_STATUS(val) bfin_write32(ICPLB_STATUS,val) 144 #define bfin_read_ICPLB_FAULT_ADDR() bfin_read32(ICPLB_FAULT_ADDR)
··· 39 #define bfin_read_SRAM_BASE_ADDRESS() bfin_read32(SRAM_BASE_ADDRESS) 40 #define bfin_write_SRAM_BASE_ADDRESS(val) bfin_write32(SRAM_BASE_ADDRESS,val) 41 #define bfin_read_DMEM_CONTROL() bfin_read32(DMEM_CONTROL) 42 + #ifdef ANOMALY_05000125 43 + static __inline__ void bfin_write_DMEM_CONTROL(unsigned int val) 44 + { 45 + unsigned long flags, iwr; 46 + 47 + local_irq_save(flags); 48 + __asm__(".align 8\n"); 49 + bfin_write32(IMEM_CONTROL, val); 50 + __builtin_bfin_ssync(); 51 + local_irq_restore(flags); 52 + } 53 + #else 54 #define bfin_write_DMEM_CONTROL(val) bfin_write32(DMEM_CONTROL,val) 55 + #endif 56 #define bfin_read_DCPLB_STATUS() bfin_read32(DCPLB_STATUS) 57 #define bfin_write_DCPLB_STATUS(val) bfin_write32(DCPLB_STATUS,val) 58 #define bfin_read_DCPLB_FAULT_ADDR() bfin_read32(DCPLB_FAULT_ADDR) ··· 125 #define DTEST_DATA3 0xFFE0040C 126 */ 127 #define bfin_read_IMEM_CONTROL() bfin_read32(IMEM_CONTROL) 128 + #ifdef ANOMALY_05000125 129 + static __inline__ void bfin_write_IMEM_CONTROL(unsigned int val) 130 + { 131 + unsigned long flags, iwr; 132 + 133 + local_irq_save(flags); 134 + __asm__(".align 8\n"); 135 + bfin_write32(IMEM_CONTROL, val); 136 + __builtin_bfin_ssync(); 137 + local_irq_restore(flags); 138 + 139 + } 140 + #else 141 #define bfin_write_IMEM_CONTROL(val) bfin_write32(IMEM_CONTROL,val) 142 + #endif 143 #define bfin_read_ICPLB_STATUS() bfin_read32(ICPLB_STATUS) 144 #define bfin_write_ICPLB_STATUS(val) bfin_write32(ICPLB_STATUS,val) 145 #define bfin_read_ICPLB_FAULT_ADDR() bfin_read32(ICPLB_FAULT_ADDR)
+2 -1
include/asm-blackfin/unistd.h
··· 369 #define __ARCH_WANT_SYS_NICE 370 #define __ARCH_WANT_SYS_RT_SIGACTION 371 #define __ARCH_WANT_SYS_RT_SIGSUSPEND 372 - #endif 373 374 /* 375 * "Conditional" syscalls ··· 377 * but it doesn't work on all toolchains, so we just do it by hand 378 */ 379 #define cond_syscall(x) asm(".weak\t_" #x "\n\t.set\t_" #x ",_sys_ni_syscall"); 380 381 #endif /* __ASM_BFIN_UNISTD_H */
··· 369 #define __ARCH_WANT_SYS_NICE 370 #define __ARCH_WANT_SYS_RT_SIGACTION 371 #define __ARCH_WANT_SYS_RT_SIGSUSPEND 372 373 /* 374 * "Conditional" syscalls ··· 378 * but it doesn't work on all toolchains, so we just do it by hand 379 */ 380 #define cond_syscall(x) asm(".weak\t_" #x "\n\t.set\t_" #x ",_sys_ni_syscall"); 381 + 382 + #endif /* __KERNEL__ */ 383 384 #endif /* __ASM_BFIN_UNISTD_H */