Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f2c6d0f authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
parents 4beb2584 216e39db
Loading
Loading
Loading
Loading
+5 −3
Original line number Diff line number Diff line
@@ -329,9 +329,10 @@ void __init setup_arch(char **cmdline_p)

	printk(KERN_INFO "Memory map:\n"
	       KERN_INFO "  text      = 0x%p-0x%p\n"
	       KERN_INFO "  init      = 0x%p-0x%p\n"
	       KERN_INFO "  rodata    = 0x%p-0x%p\n"
	       KERN_INFO "  data      = 0x%p-0x%p\n"
	       KERN_INFO "    stack   = 0x%p-0x%p\n"
	       KERN_INFO "  init      = 0x%p-0x%p\n"
	       KERN_INFO "  bss       = 0x%p-0x%p\n"
	       KERN_INFO "  available = 0x%p-0x%p\n"
#ifdef CONFIG_MTD_UCLINUX
@@ -341,9 +342,10 @@ void __init setup_arch(char **cmdline_p)
	       KERN_INFO "  DMA Zone  = 0x%p-0x%p\n"
#endif
	       , _stext, _etext,
	       __init_begin, __init_end,
	       __start_rodata, __end_rodata,
	       _sdata, _edata,
	       (void*)&init_thread_union, (void*)((int)(&init_thread_union) + 0x2000),
	       __init_begin, __init_end,
	       __bss_start, __bss_stop,
	       (void*)_ramstart, (void*)memory_end
#ifdef CONFIG_MTD_UCLINUX
+86 −55
Original line number Diff line number Diff line
@@ -148,8 +148,15 @@ asmlinkage void trap_c(struct pt_regs *fp)
	unsigned long trapnr = fp->seqstat & SEQSTAT_EXCAUSE;

#ifdef CONFIG_KGDB
# define CHK_DEBUGGER_TRAP() do { CHK_DEBUGGER(trapnr, sig, info.si_code, fp,); } while (0)
# define CHK_DEBUGGER_TRAP_MAYBE() do { if (kgdb_connected) CHK_DEBUGGER_TRAP(); } while (0)
# define CHK_DEBUGGER_TRAP() \
	do { \
		CHK_DEBUGGER(trapnr, sig, info.si_code, fp); \
	} while (0)
# define CHK_DEBUGGER_TRAP_MAYBE() \
	do { \
		if (kgdb_connected) \
			CHK_DEBUGGER_TRAP(); \
	} while (0)
#else
# define CHK_DEBUGGER_TRAP() do { } while (0)
# define CHK_DEBUGGER_TRAP_MAYBE() do { } while (0)
@@ -297,7 +304,8 @@ asmlinkage void trap_c(struct pt_regs *fp)
		info.si_code = ILL_CPLB_MULHIT;
#ifdef CONFIG_DEBUG_HUNT_FOR_ZERO
		sig = SIGSEGV;
		printk(KERN_EMERG "\n\nNULL pointer access (probably)\n");
		printk(KERN_EMERG "\n"
			KERN_EMERG "NULL pointer access (probably)\n");
#else
		sig = SIGILL;
		printk(KERN_EMERG EXC_0x27);
@@ -418,7 +426,9 @@ asmlinkage void trap_c(struct pt_regs *fp)
		if (current->mm) {
			fp->pc = current->mm->start_code;
		} else {
			printk(KERN_EMERG "I can't return to memory that doesn't exist - bad things happen\n");
			printk(KERN_EMERG
				"I can't return to memory that doesn't exist"
				" - bad things happen\n");
			panic("Help - I've fallen and can't get up\n");
		}
	}
@@ -522,15 +532,19 @@ EXPORT_SYMBOL(dump_stack);
void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
{
	if (current->pid) {
		printk("\nCURRENT PROCESS:\n\n");
		printk("COMM=%s PID=%d\n", current->comm, current->pid);
		printk(KERN_EMERG "\n" KERN_EMERG "CURRENT PROCESS:\n"
			KERN_EMERG "\n");
		printk(KERN_EMERG "COMM=%s PID=%d\n",
			current->comm, current->pid);
	} else {
		printk
		    ("\nNo Valid pid - Either things are really messed up, or you are in the kernel\n");
		    (KERN_EMERG "\n" KERN_EMERG
		     "No Valid pid - Either things are really messed up,"
		     " or you are in the kernel\n");
	}

	if (current->mm) {
		printk("TEXT = 0x%p-0x%p  DATA = 0x%p-0x%p\n"
		printk(KERN_EMERG "TEXT = 0x%p-0x%p  DATA = 0x%p-0x%p\n"
		       "BSS = 0x%p-0x%p   USER-STACK = 0x%p\n\n",
		       (void*)current->mm->start_code,
		       (void*)current->mm->end_code,
@@ -541,7 +555,7 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
		       (void*)current->mm->start_stack);
	}

	printk("return address: 0x%p; contents of [PC-16...PC+8]:\n", retaddr);
	printk(KERN_EMERG "return address: [0x%p]; contents of:", retaddr);
	if (retaddr != 0 && retaddr <= (void*)physical_mem_end
#if L1_CODE_LENGTH != 0
	    /* FIXME: Copy the code out of L1 Instruction SRAM through dma
@@ -550,10 +564,15 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
	         && retaddr < (void*)(L1_CODE_START + L1_CODE_LENGTH))
#endif
	) {
		int i = 0;
		int i = ((unsigned int)retaddr & 0xFFFFFFF0) - 32;
		unsigned short x = 0;
		for (i = -16; i < 8; i++) {
			if (get_user(x, (unsigned short *)retaddr + i))
		for (; i < ((unsigned int)retaddr & 0xFFFFFFF0 ) + 32 ;
			i += 2) {
			if ( !(i & 0xF) )
				printk(KERN_EMERG "\n" KERN_EMERG
					"0x%08x: ", i);

			if (get_user(x, (unsigned short *)i))
				break;
#ifndef CONFIG_DEBUG_HWERR
			/* If one of the last few instructions was a STI
@@ -561,53 +580,65 @@ void dump_bfin_regs(struct pt_regs *fp, void *retaddr)
			 * and we just noticed
			 */
			if (x >= 0x0040 && x <= 0x0047 && i <= 0)
				panic("\n\nWARNING : You should reconfigure the kernel to turn on\n"
					" 'Hardware error interrupt debugging'\n"
					" The rest of this error is meanless\n");
				panic("\n\nWARNING : You should reconfigure"
					" the kernel to turn on\n"
					" 'Hardware error interrupt"
					" debugging'\n"
					" The rest of this error"
					" is meanless\n");
#endif

			if (i == -8)
				printk("\n");
			if (i == 0)
				printk("X\n");
			if ( i == (unsigned int)retaddr )
				printk("[%04x]", x);
			else
				printk(" %04x ", x);
		}
		printk("\n" KERN_EMERG "\n");
	} else
		printk("Cannot look at the [PC] for it is in unreadable L1 SRAM - sorry\n");
		printk(KERN_EMERG
			"Cannot look at the [PC] for it is"
			"in unreadable L1 SRAM - sorry\n");

	printk("\n\n");

	printk("RETE:  %08lx  RETN: %08lx  RETX: %08lx  RETS: %08lx\n",
	printk(KERN_EMERG
		"RETE:  %08lx  RETN: %08lx  RETX: %08lx  RETS: %08lx\n",
		fp->rete, fp->retn, fp->retx, fp->rets);
	printk("IPEND: %04lx  SYSCFG: %04lx\n", fp->ipend, fp->syscfg);
	printk("SEQSTAT: %08lx    SP: %08lx\n", (long)fp->seqstat, (long)fp);
	printk("R0: %08lx    R1: %08lx    R2: %08lx    R3: %08lx\n",
	printk(KERN_EMERG "IPEND: %04lx  SYSCFG: %04lx\n",
		fp->ipend, fp->syscfg);
	printk(KERN_EMERG "SEQSTAT: %08lx    SP: %08lx\n",
		(long)fp->seqstat, (long)fp);
	printk(KERN_EMERG "R0: %08lx    R1: %08lx    R2: %08lx    R3: %08lx\n",
		fp->r0, fp->r1, fp->r2, fp->r3);
	printk("R4: %08lx    R5: %08lx    R6: %08lx    R7: %08lx\n",
	printk(KERN_EMERG "R4: %08lx    R5: %08lx    R6: %08lx    R7: %08lx\n",
		fp->r4, fp->r5, fp->r6, fp->r7);
	printk("P0: %08lx    P1: %08lx    P2: %08lx    P3: %08lx\n",
	printk(KERN_EMERG "P0: %08lx    P1: %08lx    P2: %08lx    P3: %08lx\n",
		fp->p0, fp->p1, fp->p2, fp->p3);
	printk("P4: %08lx    P5: %08lx    FP: %08lx\n", fp->p4, fp->p5, fp->fp);
	printk("A0.w: %08lx    A0.x: %08lx    A1.w: %08lx    A1.x: %08lx\n",
	printk(KERN_EMERG
		"P4: %08lx    P5: %08lx    FP: %08lx\n",
		fp->p4, fp->p5, fp->fp);
	printk(KERN_EMERG
		"A0.w: %08lx    A0.x: %08lx    A1.w: %08lx    A1.x: %08lx\n",
		fp->a0w, fp->a0x, fp->a1w, fp->a1x);

	printk("LB0: %08lx  LT0: %08lx  LC0: %08lx\n", fp->lb0, fp->lt0,
	       fp->lc0);
	printk("LB1: %08lx  LT1: %08lx  LC1: %08lx\n", fp->lb1, fp->lt1,
	       fp->lc1);
	printk("B0: %08lx  L0: %08lx  M0: %08lx  I0: %08lx\n", fp->b0, fp->l0,
	       fp->m0, fp->i0);
	printk("B1: %08lx  L1: %08lx  M1: %08lx  I1: %08lx\n", fp->b1, fp->l1,
	       fp->m1, fp->i1);
	printk("B2: %08lx  L2: %08lx  M2: %08lx  I2: %08lx\n", fp->b2, fp->l2,
	       fp->m2, fp->i2);
	printk("B3: %08lx  L3: %08lx  M3: %08lx  I3: %08lx\n", fp->b3, fp->l3,
	       fp->m3, fp->i3);

	printk("\nUSP: %08lx   ASTAT: %08lx\n", rdusp(), fp->astat);
	printk(KERN_EMERG "LB0: %08lx  LT0: %08lx  LC0: %08lx\n",
		fp->lb0, fp->lt0, fp->lc0);
	printk(KERN_EMERG "LB1: %08lx  LT1: %08lx  LC1: %08lx\n",
		fp->lb1, fp->lt1, fp->lc1);
	printk(KERN_EMERG "B0: %08lx  L0: %08lx  M0: %08lx  I0: %08lx\n",
		fp->b0, fp->l0, fp->m0, fp->i0);
	printk(KERN_EMERG "B1: %08lx  L1: %08lx  M1: %08lx  I1: %08lx\n",
		fp->b1, fp->l1, fp->m1, fp->i1);
	printk(KERN_EMERG "B2: %08lx  L2: %08lx  M2: %08lx  I2: %08lx\n",
		fp->b2, fp->l2, fp->m2, fp->i2);
	printk(KERN_EMERG "B3: %08lx  L3: %08lx  M3: %08lx  I3: %08lx\n",
		fp->b3, fp->l3, fp->m3, fp->i3);

	printk(KERN_EMERG "\n" KERN_EMERG "USP: %08lx   ASTAT: %08lx\n",
		rdusp(), fp->astat);
	if ((long)fp->seqstat & SEQSTAT_EXCAUSE) {
		printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n", (void*)bfin_read_DCPLB_FAULT_ADDR());
		printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n", (void*)bfin_read_ICPLB_FAULT_ADDR());
		printk(KERN_EMERG "DCPLB_FAULT_ADDR=%p\n",
			(void *)bfin_read_DCPLB_FAULT_ADDR());
		printk(KERN_EMERG "ICPLB_FAULT_ADDR=%p\n",
			(void *)bfin_read_ICPLB_FAULT_ADDR());
	}

	printk("\n\n");
+5 −0
Original line number Diff line number Diff line
@@ -61,7 +61,12 @@ ENTRY(_memcmp)

	LSETUP (.Lquad_loop_s, .Lquad_loop_e) LC0=P1;
.Lquad_loop_s:
#ifdef ANOMALY_05000202
	R0 = [P0++];
	R1 = [I0++];
#else
	MNOP || R0 = [P0++] || R1 = [I0++];
#endif
	CC = R0 == R1;
	IF !CC JUMP .Lquad_different;
.Lquad_loop_e:
+10 −3
Original line number Diff line number Diff line
@@ -94,13 +94,20 @@ ENTRY(_memcpy)
.Lmore_than_seven:
	/* There's at least eight bytes to copy. */
	P2 += -1;	/* because we unroll one iteration */
	LSETUP(.Lword_loop, .Lword_loop) LC0=P2;
	LSETUP(.Lword_loops, .Lword_loope) LC0=P2;
	R0 = R1;
	I1 = P1;
	R3 = [I1++];
.Lword_loop:
#ifdef ANOMALY_05000202
.Lword_loops:
	[P0++] = R3;
.Lword_loope:
	R3 = [I1++];
#else
.Lword_loops:
.Lword_loope:
	MNOP || [P0++] = R3 || R3 = [I1++];

#endif
	[P0++] = R3;
	/* Any remaining bytes to copy? */
	R3 = 0x3;
+15 −2
Original line number Diff line number Diff line
@@ -69,8 +69,17 @@ ENTRY(_memmove)
	P2 = R2;                  /* set remainder */
	R1 = [I0++];

	LSETUP (.Lquad_loop, .Lquad_loop) LC0=P1;
.Lquad_loop: MNOP || [P0++] = R1 || R1 = [I0++];
	LSETUP (.Lquad_loops, .Lquad_loope) LC0=P1;
#ifdef ANOMALY_05000202
.Lquad_loops:
	[P0++] = R1;
.Lquad_loope:
	R1 = [I0++];
#else
.Lquad_loops:
.Lquad_loope:
	 MNOP || [P0++] = R1 || R1 = [I0++];
#endif
	[P0++] = R1;

	CC = P2 == 0;             /* any remaining bytes? */
@@ -93,6 +102,10 @@ ENTRY(_memmove)
	R1 = B[P3--] (Z);
	CC = P2 == 0;
	IF CC JUMP .Lno_loop;
#ifdef ANOMALY_05000245
	NOP;
	NOP;
#endif
	LSETUP (.Lol_s, .Lol_e) LC0 = P2;
.Lol_s:    B[P0--] = R1;
.Lol_e:    R1 = B[P3--] (Z);
Loading