* crash loadin bash after booting linux on a MPC860ADS
@ 2000-04-04 16:07 Eisenzopf Thomas
2000-04-04 16:49 ` Marcus Sundberg
0 siblings, 1 reply; 7+ messages in thread
From: Eisenzopf Thomas @ 2000-04-04 16:07 UTC (permalink / raw)
To: 'linuxppc-embedded@lists.linuxppc.org'
Hello,
thanks again for the suggestions from some members of this mailing list. I
managed to reconfigure my kernel and now I can boot linux until the NFS root
filesystem is mounted.
But after this the kernel tries to load the shell /bin/sh from NFS, at this
point the system crashes. My kernel includes the patches from
www.s4l.de/powerpc.html.
Please, can anyone help? I took the ramdisk.image.gz filesystem from
www.s4l.de/powerpc.html. This should be working for PowerPC(?). On the other
hand I tried to get my own filesystem (crosscompile bash, ...), but it
didn´t work. Perhaps someone could support me with a tarball of a filesystem
working on a MPC860ADS board with NFS root filesystem? How can I make a
filesystem on my own (on an Intel PC)?
Any help is appreciated.
Best regards,
Thomas.
8xxROM 0.3.0
compiletime options:
board: ADS DRAM_50MHZ
disk: DISK_ROM
cpu: XPC860xxZPnnA3 at 48 MHz: 4Kbyte icache 4Kbyte dcache
<warning: cpu core has silicon bugs, check the errata>
board: ADS rev B
flash: 2 Mbytes, delay 90 ns
dram: EDO, 16 Mbyte, 60 ns, OK
pcmcia: No card present.
Boot device list:
rom: rom_disk
Found ext2 filesystem
rom:0:/> bootz
Size 474838
4 blocks
entry 0x100000, phoff 0x34, shoff 0x72e6c
phnum 0x1, shnum 0x9
p_offset 0x10000, p_vaddr 0x100000, p_paddr 0x100000
p_filesz 0x530c, p_memsz 0xb1cc
Loading at 0x10c000
Size 474838
464 blocks
Starting 0x11c000
loaded at: 0011C000 001271CC
relocated to: 00100000 0010B1CC
board data at: 00FF0000 00FF001C
relocated to: 00200100 0020011C
zimage at: 00122000 0017EE32
avail ram: 0017F000 01000000
Linux/PPC load: mem=0x1000000
Uncompressing Linux...done.
Now booting the kernel
Linux version 2.2.13 (eisenzopft@pca355) (gcc version 2.95.2 19991024
(release))
#39 Tue Apr 4 17:12:01 Local time zone must be set--see zic manual page
2000
Boot arguments: mem=0x1000000
time_init: decrementer frequency = 180000000/60
Calibrating delay loop... 47.10 BogoMIPS
Memory: 15212k available (708k kernel code, 428k data, 36k init)
[c0000000,c1000
000]
DENTRY hash table entries: 262144 (order: 9, 2097152 bytes)
Buffer-cache hash table entries: 32768 (order: 5, 131072 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP
TCP: Hash tables configured (ehash 16384 bhash 16384)
Starting kswapd v 1.5
Serial driver version 4.27 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16450
ttyS01 at 0x02f8 (irq = 3) is a 16450
ttyS02 at 0x03e8 (irq = 4) is a 16450
CPM UART driver version 0.02
ttyS00 at 0x0280 is a SMC
ttyS01 at 0x0100 is a SCC
ttyS02 at 0x0200 is a SCC
loop: registered device at major 7
eth0: CPM ENET Version 0.2, 08:00:3e:26:15:59
Sending BOOTP and RARP requests.... OK
IP-Config: Got BOOTP answer from 195.2.106.145, my address is 195.2.106.33
Looking up port of RPC 100003/2 on 195.2.106.145
Looking up port of RPC 100005/1 on 195.2.106.145
VFS: Mounted root (NFS filesystem) readonly.
Freeing unused kernel memory: 36k init
page fault in interrupt handler, addr=333c
NIP: C009402C XER: E000B77F LR: C00941FC REGS: c012d250 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: 00000001 C012D300 C012C000 C00C0000 00008000 00000000 C01DEFFC
7C0803A6
GPR08: 38210010 00000000 C00D0000 FFFFFCEF 55053059 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012D490 00000000
C0002544
GPR24: C0004294 C00D0000 C0132700 C01F32C0 C01EB000 C01EFB40 C01EB144
00009032
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012d110 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012D1C0 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012D100 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012D240 00000000
C0002544
GPR24: C0008D84 C00D0000 C012D1F8 C012C000 C00D0000 00000000 00000000
C012D1C0
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012cfd0 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012D080 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012CFC0 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012D100 00000000
C0002544
GPR24: C0008D84 C00D0000 C012D0B8 C012C000 C00D0000 00000000 00000000
C012D080
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012ce90 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012CF40 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012CE80 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012CFC0 00000000
C0002544
GPR24: C0008D84 C00D0000 C012CF78 C012C000 C00D0000 00000000 00000000
C012CF40
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012cd50 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012CE00 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012CD40 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012CE80 00000000
C0002544
GPR24: C0008D84 C00D0000 C012CE38 C012C000 C00D0000 00000000 00000000
C012CE00
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012cc10 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012CCC0 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012CC00 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012CD40 00000000
C0002544
GPR24: C0008D84 C00D0000 C012CCF8 C012C000 C00D0000 00000000 00000000
C012CCC0
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012cad0 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012CB80 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012CAC0 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012CC00 00000000
C0002544
GPR24: C0008D84 C00D0000 C012CBB8 C012C000 C00D0000 00000000 00000000
C012CB80
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012c990 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012CA40 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012C980 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012CAC0 00000000
C0002544
GPR24: C0008D84 C00D0000 C012CA78 C012C000 C00D0000 00000000 00000000
C012CA40
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012c850 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012C900 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012C840 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012C980 00000000
C0002544
GPR24: C0008D84 C00D0000 C012C938 C012C000 C00D0000 00000000 00000000
C012C900
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012c710 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012C7C0 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012C700 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012C840 00000000
C0002544
GPR24: C0008D84 C00D0000 C012C7F8 C012C000 C00D0000 00000000 00000000
C012C7C0
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012c5d0 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd c01e3000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012C680 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012C5C0 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012C700 00000000
C0002544
GPR24: C0008D84 C00D0000 C012C6B8 C012C000 C00D0000 00000000 00000000
C012C680
Scheduling in interrupt
page fault in interrupt handler, addr=0
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012c490 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd 645d2027 Last syscall: 11
last math 00000000
GPR00: C000C874 C012C540 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012C480 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012C5C0 00000000
C0002544
GPR24: C0008D84 C00D0000 C012C578 C012C000 C00D0000 00000000 00000000
C012C540
Scheduling in interrupt
Kernel stack overflow in process c012c000, r1=c012c400
NIP: C000C874 XER: C000B77F LR: C000C874 REGS: c012c350 TRAP: 0300
MSR: 00001032 EE: 0 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c012c000[1] 'sh' mm->pgd 00000000 Last syscall: 11
last math 00000000
GPR00: C000C874 C012C400 C012C000 00000018 00000001 00000018 C0135680
C00DE7A3
GPR08: 00000018 00000000 FF002830 C012C340 55053039 00000000 018BBC8C
01800000
GPR16: 018BBC8C C0100AA4 C0100AA0 00000000 00001032 0012C480 00000000
C0002544
GPR24: C0008D84 C00D0000 C012C438 C012C000 C00D0000 00000000 00000000
C012C400
Call backtrace:
C000C874 C000C9F4 C0008E28 C0002544 C000C874 C000C9F4 C0008E28
C0002544 C000C874 C000C9F4 C0008E28 C0002544 C000C874 C000C9F4
C0008E28 C0002544 C000C874 C000C9F4 C0008E28 C0002544 C000C874
C000C9F4 C0008E28 C0002544 C000C874 C000C9F4 C0008E28 C0002544
C000C874 C000C9F4 C0008E28 C0002544 C000C874
Kernel panic: kernel stack overflow
In interrupt handler - not syncing
Rebooting in 180 seconds..
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: crash loadin bash after booting linux on a MPC860ADS
2000-04-04 16:07 Eisenzopf Thomas
@ 2000-04-04 16:49 ` Marcus Sundberg
0 siblings, 0 replies; 7+ messages in thread
From: Marcus Sundberg @ 2000-04-04 16:49 UTC (permalink / raw)
To: Eisenzopf Thomas; +Cc: 'linuxppc-embedded@lists.linuxppc.org'
Eisenzopf Thomas <thomas.eisenzopf@siemens.at> writes:
> Hello,
>
> thanks again for the suggestions from some members of this mailing list. I
> managed to reconfigure my kernel and now I can boot linux until the NFS root
> filesystem is mounted.
>
> But after this the kernel tries to load the shell /bin/sh from NFS, at this
> point the system crashes. My kernel includes the patches from
> www.s4l.de/powerpc.html.
>
> Please, can anyone help? I took the ramdisk.image.gz filesystem from
> www.s4l.de/powerpc.html. This should be working for PowerPC(?). On the other
> hand I tried to get my own filesystem (crosscompile bash, ...), but it
> didn´t work. Perhaps someone could support me with a tarball of a filesystem
> working on a MPC860ADS board with NFS root filesystem? How can I make a
> filesystem on my own (on an Intel PC)?
>
>
> 8xxROM 0.3.0
>
> compiletime options:
> board: ADS DRAM_50MHZ
> disk: DISK_ROM
>
> cpu: XPC860xxZPnnA3 at 48 MHz: 4Kbyte icache 4Kbyte dcache
>
> <warning: cpu core has silicon bugs, check the errata>
Well, guess you didn't do this...
Either put your CPU on a hard surface, apply a sledgehammer to it,
and get a new(er) one. ;)
Or apply the following diff and see if things get better:
diff -u -r1.2 -r1.3
--- head.S 2000/01/11 18:13:31 1.2
+++ head.S 2000/01/11 18:27:59 1.3
@@ -883,11 +886,26 @@
* only perform the attribute functions.
*/
InstructionTLBMiss:
+#ifndef NO_MPC8xxBUG_CPU6
+ stw r3, 8(r0)
+ li r3, M_TW_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
mtspr M_TW, r20 /* Save a couple of working registers */
mfcr r20
stw r20, 0(r0)
stw r21, 4(r0)
mfspr r20, SRR0 /* Get effective address of fault */
+ li r3, MD_EPN_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#else /* NO_MPC8xxBUG_CPU6 */
+ mtspr M_TW, r20 /* Save a couple of working registers */
+ mfcr r20
+ stw r20, 0(r0)
+ stw r21, 4(r0)
+ mfspr r20, SRR0 /* Get effective address of fault */
+#endif /* NO_MPC8xxBUG_CPU6 */
mtspr MD_EPN, r20 /* Have to use MD_EPN for walk, MI_EPN can't */
mfspr r20, M_TWB /* Get level 1 table entry address */
lwz r21, 0(r20) /* Get the level 1 entry */
@@ -899,8 +917,19 @@
*/
tophys(r21,r21,0)
ori r21,r21,1 /* Set valid bit */
+#ifndef NO_MPC8xxBUG_CPU6
+ li r3, MI_TWC_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+ mtspr MI_TWC, r21 /* Set page attributes */
+ li r3, MD_TWC_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+ mtspr MD_TWC, r21 /* Load pte table base address */
+#else
mtspr MI_TWC, r21 /* Set page attributes */
mtspr MD_TWC, r21 /* Load pte table base address */
+#endif /* NO_MPC8xxBUG_CPU6 */
mfspr r21, MD_TWC /* ....and get the pte address */
lwz r21, 0(r21) /* Get the pte */
@@ -920,18 +949,29 @@
*/
ori r20, r21, 0x00f0
+#ifndef NO_MPC8xxBUG_CPU6
+ li r3, MI_RPN_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#endif
mtspr MI_RPN, r20 /* Update TLB entry */
mfspr r20, M_TW /* Restore registers */
lwz r21, 0(r0)
mtcr r21
lwz r21, 4(r0)
+#ifndef NO_MPC8xxBUG_CPU6
+ lwz r3, 8(r0)
+#endif
rfi
2: mfspr r20, M_TW /* Restore registers */
lwz r21, 0(r0)
mtcr r21
lwz r21, 4(r0)
+#ifndef NO_MPC8xxBUG_CPU6
+ lwz r3, 8(r0)
+#endif
b InstructionAccess
#endif /* CONFIG_8xx */
@@ -1009,6 +1049,12 @@
b 00b /* Try lookup again */
#endif /* NO_RELOAD_HTAB */
#else /* CONFIG_8xx */
+#ifndef NO_MPC8xxBUG_CPU6
+ stw r3, 8(r0)
+ li r3, M_TW_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#endif
mtspr M_TW, r20 /* Save a couple of working registers */
mfcr r20
stw r20, 0(r0)
@@ -1022,6 +1068,11 @@
*/
tophys(r21, r21, 0)
ori r21, r21, 1 /* Set valid bit in physical L2 page */
+#ifndef NO_MPC8xxBUG_CPU6
+ li r3, MD_TWC_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#endif
mtspr MD_TWC, r21 /* Load pte table base address */
mfspr r21, MD_TWC /* ....and get the pte address */
lwz r21, 0(r21) /* Get the pte */
@@ -1042,18 +1093,29 @@
*/
ori r20, r21, 0x00f0
+#ifndef NO_MPC8xxBUG_CPU6
+ li r3, MD_RPN_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#endif
mtspr MD_RPN, r20 /* Update TLB entry */
mfspr r20, M_TW /* Restore registers */
lwz r21, 0(r0)
mtcr r21
lwz r21, 4(r0)
+#ifndef NO_MPC8xxBUG_CPU6
+ lwz r3, 8(r0)
+#endif
rfi
2: mfspr r20, M_TW /* Restore registers */
lwz r21, 0(r0)
mtcr r21
lwz r21, 4(r0)
+#ifndef NO_MPC8xxBUG_CPU6
+ lwz r3, 8(r0)
+#endif
b DataAccess
#endif /* CONFIG_8xx */
@@ -1086,6 +1148,12 @@
*/
. = 0x1400
DataTLBError:
+#ifndef NO_MPC8xxBUG_CPU6
+ stw r3, 8(r0)
+ li r3, M_TW_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#endif
mtspr M_TW, r20 /* Save a couple of working registers */
mfcr r20
stw r20, 0(r0)
@@ -1106,6 +1174,11 @@
*/
tophys(r21, r21, 0)
ori r21, r21, 1 /* Set valid bit in physical L2 page */
+#ifndef NO_MPC8xxBUG_CPU6
+ li r3, MD_TWC_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#endif
mtspr MD_TWC, r21 /* Load pte table base address */
mfspr r21, MD_TWC /* ....and get the pte address */
lwz r21, 0(r21) /* Get the pte */
@@ -1133,18 +1206,29 @@
*/
ori r20, r21, 0x00f0
+#ifndef NO_MPC8xxBUG_CPU6
+ li r3, MD_RPN_ADDR
+ stw r3, 12(r0)
+ lwz r3, 12(r0)
+#endif
mtspr MD_RPN, r20 /* Update TLB entry */
mfspr r20, M_TW /* Restore registers */
lwz r21, 0(r0)
mtcr r21
lwz r21, 4(r0)
+#ifndef NO_MPC8xxBUG_CPU6
+ lwz r3, 8(r0)
+#endif
rfi
2:
mfspr r20, M_TW /* Restore registers */
lwz r21, 0(r0)
mtcr r21
lwz r21, 4(r0)
+#ifndef NO_MPC8xxBUG_CPU6
+ lwz r3, 8(r0)
+#endif
b DataAccess
#endif /* CONFIG_8xx */
@@ -2214,7 +2307,19 @@
lwz r9,MM-TSS(r4) /* Get virtual address of mm */
lwz r9,PGD(r9) /* get new->mm->pgd */
addis r9,r9,-KERNELBASE@h /* convert to phys addr */
+#ifndef NO_MPC8xxBUG_CPU6
+ lis r6, cmd_line@h
+ ori r6, r6, cmd_line@l
+ li r7, M_TWB_ADDR
+ stw r7, 12(r6)
+ lwz r7, 12(r6)
+ mtspr M_TWB, r9 /* Update MMU base address */
+ li r7, M_CASID_ADDR
+ stw r7, 12(r6)
+ lwz r7, 12(r6)
+#else
mtspr M_TWB, r9 /* Update MMU base address */
+#endif /* NO_MPC8xxBUG_CPU6 */
mtspr M_CASID, r5 /* Update context */
tlbia
#endif
//Marcus
--
Signature under construction, please come back later.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: crash loadin bash after booting linux on a MPC860ADS
[not found] <D53137D1F3DDD211A3750800060DA313017023B4@viee122a.erd.siemens.at>
@ 2000-04-05 9:12 ` Marcus Sundberg
0 siblings, 0 replies; 7+ messages in thread
From: Marcus Sundberg @ 2000-04-05 9:12 UTC (permalink / raw)
To: Eisenzopf Thomas; +Cc: linuxppc-embedded
Eisenzopf Thomas <thomas.eisenzopf@siemens.at> writes:
> Hello,
>
> thank you for your patches!
>
> I applied them, but unfortunately I get the following error when compiling:
>
> make -C arch/ppc/kernel
> make[1]: Entering directory `/home/eisenzopft/ppc/tmplinux/arch/ppc/kernel'
> powerpc-linux-gcc -D__KERNEL__ -I/home/eisenzopft/ppc/tmplinux/include -Wall
> -Wstrict-prototypes -O2 -fomit-frame-pointer -fno-strict-aliasing
> -D__powerpc__ -fsigned-char -msoft-float -pipe -fno-builtin -ffixed-r2
> -Wno-uninitialized -mmultiple -mstring -mcpu=860 -I../8xx_io -D__ASSEMBLY__
> -c head.S -o head.o
> head.S: Assembler messages:
> head.S:888: Error: unsupported relocation type
> head.S:896: Error: unsupported relocation type
> head.S:918: Error: unsupported relocation type
> head.S:922: Error: unsupported relocation type
> head.S:950: Error: unsupported relocation type
> head.S:1051: Error: unsupported relocation type
> head.S:1069: Error: unsupported relocation type
> head.S:1094: Error: unsupported relocation type
> head.S:1150: Error: unsupported relocation type
> head.S:1175: Error: unsupported relocation type
> head.S:1207: Error: unsupported relocation type
> head.S:2301: Error: unsupported relocation type
> head.S:2305: Error: unsupported relocation type
> make[1]: *** [head.o] Error 1
> make[1]: Leaving directory `/home/eisenzopft/ppc/tmplinux/arch/ppc/kernel'
> make: *** [_dir_arch/ppc/kernel] Error 2
>
>
> Do you have an idea, what´s wrong? The lines with errors in head.S are:
>
> 888: li r3, M_TW_ADDR
> 922: li r3, MD_TWC_ADDR
> 950: li r3, MI_RPN_ADDR
> 1051: li r3, M_TW_ADDR
> ...
Ah, sorry. These are the missing defines (most are not used):
/*
MPC860* CPU6 workaround defines
*/
#define IMMR_ADDR 0x3d30
#define IC_CST_ADDR 0x2110
#define IC_ADR_ADDR 0x2310
#define IC_DAT_ADDR 0x2510
#define DC_CST_ADDR 0x3110
#define DC_ADR_ADDR 0x3310
#define DC_DAT_ADDR 0x3510
#define MI_CTR_ADDR 0x2180
#define MI_AP_ADDR 0x2580
#define MI_EPN_ADDR 0x2780
#define MI_TWC_ADDR 0x2b80
#define MI_RPN_ADDR 0x2d80
#define MI_DBCAM_ADDR 0x2190
#define MI_DBRAM0_ADDR 0x2390
#define MI_DBRAM1_ADDR 0x2590
#define MD_CTR_ADDR 0x3180
#define M_CASID_ADDR 0x3380
#define MD_AP_ADDR 0x3580
#define MD_EPN_ADDR 0x3780
#define M_TWB_ADDR 0x3980
#define MD_TWC_ADDR 0x3b80
#define MD_RPN_ADDR 0x3d80
#define M_TW_ADDR 0x3f80
#define MD_DBCAM_ADDR 0x3190
#define MD_DBRAM0_ADDR 0x3390
#define MD_DBRAM1_ADDR 0x3590
#define DEC_ADDR 0x2c00
#define TB_ADDR 0x3880
#define TBU_ADDR 0x3a80
#define DPDR_ADDR 0x2d30
Now that I think of it you will also need the following diff:
diff -u -r1.1 -r1.2
--- include/asm-ppc/pgtable.h 2000/01/11 17:53:57 1.1
+++ include/asm-ppc/pgtable.h 2000/01/11 18:44:12 1.2
@@ -8,6 +8,6 @@
#include <asm/processor.h> /* For TASK_SIZE */
#include <asm/mmu.h>
#include <asm/page.h>
extern void local_flush_tlb_all(void);
extern void local_flush_tlb_mm(struct mm_struct *mm);
@@ -230,7 +231,7 @@
do { \
unsigned long __pgdir = (unsigned long)pgdir; \
((tsk)->tss.pg_tables = (unsigned long *)(__pgdir)); \
- asm("mtspr %0,%1 \n\t" : : "i"(M_TWB), "r"(__pa(__pgdir))); \
+ set_m_twb(__pa(__pgdir)); \
} while (0)
#endif /* CONFIG_8xx */
Where set_m_twb is defined as:
# define set_m_twb(val) \
do { unsigned long dummy_var; \
register unsigned long reg5 __asm__ ("r5") = M_TWB_ADDR; \
register unsigned long reg4 __asm__ ("r4") = (unsigned long) &dummy_var; \
asm volatile ( \
"stw %3,0(%2)\n\t" \
"lwz %3,0(%2)\n\t" \
"mtspr %0,%1 \n\t" \
: : "i"(M_TWB), "r"((val)), "r"(reg4), "r"(reg5) \
: "r4", "r5", "memory"); }while(0)
> As I understood your patches, the define NO_MPC8xxBUG_CPU6 should NOT be
> applied, is this correct?
Yes, that's correct.
//Marcus
--
Signature under construction, please come back later.
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: crash loadin bash after booting linux on a MPC860ADS
@ 2000-04-05 10:45 Eisenzopf Thomas
0 siblings, 0 replies; 7+ messages in thread
From: Eisenzopf Thomas @ 2000-04-05 10:45 UTC (permalink / raw)
To: 'Marcus Sundberg'; +Cc: linuxppc-embedded
Hello,
many thank´s to Marcus Sundberg!
Your patches and all other tips from the members of this mailing list
finally helped me to get Linux on my ADS board running.
Best regards,
Thomas.
> -----Original Message-----
> From: Marcus Sundberg
> [mailto:erammsu@kieraypc01.p.y.ki.era.ericsson.se]
> Sent: Wednesday, April 05, 2000 11:13 AM
> To: Eisenzopf Thomas
> Cc: linuxppc-embedded@lists.linuxppc.org
> Subject: Re: crash loadin bash after booting linux on a MPC860ADS
>
> Ah, sorry. These are the missing defines (most are not used):
>
> /*
> MPC860* CPU6 workaround defines
> */
> #define IMMR_ADDR 0x3d30
> #define IC_CST_ADDR 0x2110
> #define IC_ADR_ADDR 0x2310
> #define IC_DAT_ADDR 0x2510
> #define DC_CST_ADDR 0x3110
> #define DC_ADR_ADDR 0x3310
> #define DC_DAT_ADDR 0x3510
> #define MI_CTR_ADDR 0x2180
> #define MI_AP_ADDR 0x2580
> #define MI_EPN_ADDR 0x2780
> #define MI_TWC_ADDR 0x2b80
> #define MI_RPN_ADDR 0x2d80
> #define MI_DBCAM_ADDR 0x2190
> #define MI_DBRAM0_ADDR 0x2390
> #define MI_DBRAM1_ADDR 0x2590
> #define MD_CTR_ADDR 0x3180
> #define M_CASID_ADDR 0x3380
> #define MD_AP_ADDR 0x3580
> #define MD_EPN_ADDR 0x3780
> #define M_TWB_ADDR 0x3980
> #define MD_TWC_ADDR 0x3b80
> #define MD_RPN_ADDR 0x3d80
> #define M_TW_ADDR 0x3f80
> #define MD_DBCAM_ADDR 0x3190
> #define MD_DBRAM0_ADDR 0x3390
> #define MD_DBRAM1_ADDR 0x3590
> #define DEC_ADDR 0x2c00
> #define TB_ADDR 0x3880
> #define TBU_ADDR 0x3a80
> #define DPDR_ADDR 0x2d30
>
>
> Now that I think of it you will also need the following diff:
>
> diff -u -r1.1 -r1.2
> --- include/asm-ppc/pgtable.h 2000/01/11 17:53:57 1.1
> +++ include/asm-ppc/pgtable.h 2000/01/11 18:44:12 1.2
> @@ -8,6 +8,6 @@
> #include <asm/processor.h> /* For TASK_SIZE */
> #include <asm/mmu.h>
> #include <asm/page.h>
>
> extern void local_flush_tlb_all(void);
> extern void local_flush_tlb_mm(struct mm_struct *mm);
> @@ -230,7 +231,7 @@
> do { \
> unsigned long __pgdir = (unsigned long)pgdir; \
> ((tsk)->tss.pg_tables = (unsigned long *)(__pgdir)); \
> - asm("mtspr %0,%1 \n\t" : : "i"(M_TWB), "r"(__pa(__pgdir))); \
> + set_m_twb(__pa(__pgdir)); \
> } while (0)
> #endif /* CONFIG_8xx */
>
>
> Where set_m_twb is defined as:
>
> # define set_m_twb(val) \
> do { unsigned long dummy_var; \
> register unsigned long reg5 __asm__ ("r5") = M_TWB_ADDR; \
> register unsigned long reg4 __asm__ ("r4") = (unsigned
> long) &dummy_var; \
> asm volatile ( \
> "stw %3,0(%2)\n\t" \
> "lwz %3,0(%2)\n\t" \
> "mtspr %0,%1 \n\t" \
> : : "i"(M_TWB), "r"((val)), "r"(reg4), "r"(reg5) \
> : "r4", "r5", "memory"); }while(0)
>
> > As I understood your patches, the define NO_MPC8xxBUG_CPU6
> should NOT be
> > applied, is this correct?
>
> Yes, that's correct.
>
> //Marcus
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: crash loadin bash after booting linux on a MPC860ADS
@ 2000-05-16 12:49 t.shantha.laxmi
2000-05-16 23:55 ` Graham Stoney
0 siblings, 1 reply; 7+ messages in thread
From: t.shantha.laxmi @ 2000-05-16 12:49 UTC (permalink / raw)
To: erammsu, thomas.eisenzopf; +Cc: linuxppc-embedded
Hi,
I was facing similar problem when I tried to load the Linux kernel 2.2.13
into 860ADS- Rev B board. I have put the patches that you have mentioned in
your mails. I am using the bootrom and kernel from the site:
http://www.s4l.de/powerpc.html. I have also put the ADS patches suggested
there. The kernel is crasing with the following messages:
:> mbootz fe00f400
Booting kernel at 0xfe01f400
loaded at: FE01F400 FE02A5CC
relocated to: 00100000 0010B1CC
board data at: 007F0000 007F001C
relocated to: 00200100 0020011C
zimage at: FE025400 FE086B01
avail ram: 00201000 01000000
Linux/PPC load:
Uncompressing Linux...done.
Now booting the kernel
Linux version 2.2.13 (root@mickey.india.tek.com) (gcc version 2.95.2
19991024 (r
elease)) #26 Tue May 16 17:40:06 IST 2000
Boot arguments: root=/dev/nfs rw
time_init: decrementer frequency = 180000000/60
Calibrating delay loop... 43.93 BogoMIPS
Memory: 15188k available (716k kernel code, 440k data, 40k init)
[c0000000,c1000
000]
DENTRY hash table entries: 262144 (order: 9, 2097152 bytes)
Buffer-cache hash table entries: 32768 (order: 5, 131072 bytes)
Page-cache hash table entries: 4096 (order: 2, 16384 bytes)
POSIX conformance testing by UNIFIX
Linux NET4.0 for Linux 2.2
Based upon Swansea University Computer Society NET3.039
NET4: Unix domain sockets 1.0 for Linux NET4.0.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
TCP: Hash tables configured (ehash 16384 bhash 16384)
Initializing RT netlink socket
Starting kswapd v 1.5
Serial driver version 4.27 with no serial options enabled
ttyS00 at 0x03f8 (irq = 4) is a 16450
ttyS01 at 0x02f8 (irq = 3) is a 16450
ttyS02 at 0x03e8 (irq = 4) is a 16450
CPM UART driver version 0.02
ttyS00 at 0x0280 is a SMC
ttyS01 at 0x0100 is a SCC
ttyS02 at 0x0200 is a SCC
pty: 256 Unix98 ptys configured
RAM disk driver initialized: 16 RAM disks of 4096K size
loop: registered device at major 7
eth0: CPM ENET Version 0.2, 00:00:11:01:c4:96
PPP: version 2.3.7 (demand dialling)
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
IP-Config: Guessing netmask 255.255.255.0
Root-NFS: Mounting /project/downloads/linux/export on server 192.158.104.71
as r
oot
Root-NFS: rsize = 4096, wsize = 4096, timeo = 7, retrans = 3
Root-NFS: acreg (min,max) = (3,60), acdir (min,max) = (30,60)
Root-NFS: nfsd port = -1, mountd port = 0, flags = 00000200
Looking up port of RPC 100003/2 on 192.158.104.71
Root-NFS: Portmapper on server returned 2049 as nfsd port
Looking up port of RPC 100005/1 on 192.158.104.71
Root-NFS: mountd port is 649
NFS: nfs_mount(c09e6847:/project/downloads/linux/export)
VFS: Mounted root (NFS filesystem).
Freeing unused kernel memory: 40k init
page fault in interrupt handler, addr=c0002578
NIP: C005EE64 XER: 0000B86D LR: C005EE44 REGS: c00c99c0 TRAP: 0300
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c00c7c90[0] 'swapper' mm->pgd c00c6000 Last syscall: 112
last math 00000000
GPR00: C0069248 C00C9A70 C00C7C90 C01EB360 00008000 C00D073C C01D7032
C09E6854
GPR08: C00CAEC0 4C00012B C00CAE8C C00E7BDC 240FF044 00000000 FE000000
FE000000
GPR16: FE000000 FE000000 FE000000 FE000000 00001032 000C9A90 00000000
C0002564
GPR24: C00043F0 C00F2FF8 0000FFFE C00E0000 00000800 C00E7BDC C00D073C
C0002570
NIP: C005EE64 XER: 0000B86D LR: C005EE44 REGS: c00c99c0 TRAP: 0300
MSR: 00009032 EE: 1 PR: 0 FP: 0 ME: 1 IR/DR: 11
TASK = c00c7c90[0] 'swapper' mm->pgd c00c6000 Last syscall: 112
last math 00000000
GPR00: C0069248 C00C9A70 C00C7C90 C01EB360 00008000 C00D073C C01D7032
C09E6854
GPR08: C00CAEC0 4C00012B C00CAE8C C00E7BDC 240FF044 00000000 FE000000
FE000000
GPR16: FE000000 FE000000 FE000000 FE000000 00001032 000C9A90 00000000
C0002564
GPR24: C00043F0 C00F2FF8 0000FFFE C00E0000 00000800 C00E7BDC C00D073C
C0002570
Call backtrace:
C0014ED0 C00025CC C00178F4 C00044DC C0004508 C00022D8 C00D0000
C00D773C C000221C
Kernel panic: kernel access of bad area pc c005ee64 lr c005ee44 address
C0002578
tsk swapper/0
In swapper task - not syncing
Rebooting in 180 seconds..
Any help on this would be greatly appreciated.
Thanks in advance,
- Shantha
-> -----Original Message-----
-> From: Marcus Sundberg
-> [mailto:erammsu@kieraypc01.p.y.ki.era.ericsson.se]
-> Sent: Tuesday, April 04, 2000 10:20 PM
-> To: Eisenzopf Thomas
-> Cc: 'linuxppc-embedded@lists.linuxppc.org'
-> Subject: Re: crash loadin bash after booting linux on a MPC860ADS
->
->
->
-> Eisenzopf Thomas <thomas.eisenzopf@siemens.at> writes:
->
-> > Hello,
-> >
-> > thanks again for the suggestions from some members of this
-> mailing list. I
-> > managed to reconfigure my kernel and now I can boot linux
-> until the NFS root
-> > filesystem is mounted.
-> >
-> > But after this the kernel tries to load the shell /bin/sh
-> from NFS, at this
-> > point the system crashes. My kernel includes the patches from
-> > www.s4l.de/powerpc.html.
-> >
-> > Please, can anyone help? I took the ramdisk.image.gz
-> filesystem from
-> > www.s4l.de/powerpc.html. This should be working for
-> PowerPC(?). On the other
-> > hand I tried to get my own filesystem (crosscompile bash,
-> ...), but it
-> > didn´t work. Perhaps someone could support me with a
-> tarball of a filesystem
-> > working on a MPC860ADS board with NFS root filesystem? How
-> can I make a
-> > filesystem on my own (on an Intel PC)?
-> >
-> >
-> > 8xxROM 0.3.0
-> >
-> > compiletime options:
-> > board: ADS DRAM_50MHZ
-> > disk: DISK_ROM
-> >
-> > cpu: XPC860xxZPnnA3 at 48 MHz: 4Kbyte icache 4Kbyte dcache
-> >
-> > <warning: cpu core has silicon bugs, check the errata>
->
-> Well, guess you didn't do this...
-> Either put your CPU on a hard surface, apply a sledgehammer to it,
-> and get a new(er) one. ;)
-> Or apply the following diff and see if things get better:
->
-> diff -u -r1.2 -r1.3
-> --- head.S 2000/01/11 18:13:31 1.2
-> +++ head.S 2000/01/11 18:27:59 1.3
-> @@ -883,11 +886,26 @@
-> * only perform the attribute functions.
-> */
-> InstructionTLBMiss:
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + stw r3, 8(r0)
-> + li r3, M_TW_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> mtspr M_TW, r20 /* Save a couple of working registers */
-> mfcr r20
-> stw r20, 0(r0)
-> stw r21, 4(r0)
-> mfspr r20, SRR0 /* Get effective address of fault */
-> + li r3, MD_EPN_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#else /* NO_MPC8xxBUG_CPU6 */
-> + mtspr M_TW, r20 /* Save a couple of working registers */
-> + mfcr r20
-> + stw r20, 0(r0)
-> + stw r21, 4(r0)
-> + mfspr r20, SRR0 /* Get effective address of fault */
-> +#endif /* NO_MPC8xxBUG_CPU6 */
-> mtspr MD_EPN, r20 /* Have to use MD_EPN for walk,
-> MI_EPN can't */
-> mfspr r20, M_TWB /* Get level 1 table entry address */
-> lwz r21, 0(r20) /* Get the level 1 entry */
-> @@ -899,8 +917,19 @@
-> */
-> tophys(r21,r21,0)
-> ori r21,r21,1 /* Set valid bit */
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + li r3, MI_TWC_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> + mtspr MI_TWC, r21 /* Set page attributes */
-> + li r3, MD_TWC_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> + mtspr MD_TWC, r21 /* Load pte table base address */
-> +#else
-> mtspr MI_TWC, r21 /* Set page attributes */
-> mtspr MD_TWC, r21 /* Load pte table base address */
-> +#endif /* NO_MPC8xxBUG_CPU6 */
-> mfspr r21, MD_TWC /* ....and get the pte address */
-> lwz r21, 0(r21) /* Get the pte */
->
-> @@ -920,18 +949,29 @@
-> */
-> ori r20, r21, 0x00f0
->
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + li r3, MI_RPN_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#endif
-> mtspr MI_RPN, r20 /* Update TLB entry */
->
-> mfspr r20, M_TW /* Restore registers */
-> lwz r21, 0(r0)
-> mtcr r21
-> lwz r21, 4(r0)
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + lwz r3, 8(r0)
-> +#endif
-> rfi
->
-> 2: mfspr r20, M_TW /* Restore registers */
-> lwz r21, 0(r0)
-> mtcr r21
-> lwz r21, 4(r0)
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + lwz r3, 8(r0)
-> +#endif
-> b InstructionAccess
-> #endif /* CONFIG_8xx */
->
-> @@ -1009,6 +1049,12 @@
-> b 00b /* Try lookup again */
-> #endif /* NO_RELOAD_HTAB */
-> #else /* CONFIG_8xx */
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + stw r3, 8(r0)
-> + li r3, M_TW_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#endif
-> mtspr M_TW, r20 /* Save a couple of working registers */
-> mfcr r20
-> stw r20, 0(r0)
-> @@ -1022,6 +1068,11 @@
-> */
-> tophys(r21, r21, 0)
-> ori r21, r21, 1 /* Set valid bit in physical L2 page */
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + li r3, MD_TWC_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#endif
-> mtspr MD_TWC, r21 /* Load pte table base address */
-> mfspr r21, MD_TWC /* ....and get the pte address */
-> lwz r21, 0(r21) /* Get the pte */
-> @@ -1042,18 +1093,29 @@
-> */
-> ori r20, r21, 0x00f0
->
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + li r3, MD_RPN_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#endif
-> mtspr MD_RPN, r20 /* Update TLB entry */
->
-> mfspr r20, M_TW /* Restore registers */
-> lwz r21, 0(r0)
-> mtcr r21
-> lwz r21, 4(r0)
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + lwz r3, 8(r0)
-> +#endif
-> rfi
->
-> 2: mfspr r20, M_TW /* Restore registers */
-> lwz r21, 0(r0)
-> mtcr r21
-> lwz r21, 4(r0)
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + lwz r3, 8(r0)
-> +#endif
-> b DataAccess
-> #endif /* CONFIG_8xx */
->
-> @@ -1086,6 +1148,12 @@
-> */
-> . = 0x1400
-> DataTLBError:
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + stw r3, 8(r0)
-> + li r3, M_TW_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#endif
-> mtspr M_TW, r20 /* Save a couple of working registers */
-> mfcr r20
-> stw r20, 0(r0)
-> @@ -1106,6 +1174,11 @@
-> */
-> tophys(r21, r21, 0)
-> ori r21, r21, 1 /* Set valid bit in
-> physical L2 page */
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + li r3, MD_TWC_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#endif
-> mtspr MD_TWC, r21 /* Load pte table base
-> address */
-> mfspr r21, MD_TWC /* ....and get the pte
-> address */
-> lwz r21, 0(r21) /* Get the pte */
-> @@ -1133,18 +1206,29 @@
-> */
-> ori r20, r21, 0x00f0
->
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + li r3, MD_RPN_ADDR
-> + stw r3, 12(r0)
-> + lwz r3, 12(r0)
-> +#endif
-> mtspr MD_RPN, r20 /* Update TLB entry */
->
-> mfspr r20, M_TW /* Restore registers */
-> lwz r21, 0(r0)
-> mtcr r21
-> lwz r21, 4(r0)
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + lwz r3, 8(r0)
-> +#endif
-> rfi
-> 2:
-> mfspr r20, M_TW /* Restore registers */
-> lwz r21, 0(r0)
-> mtcr r21
-> lwz r21, 4(r0)
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + lwz r3, 8(r0)
-> +#endif
-> b DataAccess
-> #endif /* CONFIG_8xx */
->
-> @@ -2214,7 +2307,19 @@
-> lwz r9,MM-TSS(r4) /* Get virtual
-> address of mm */
-> lwz r9,PGD(r9) /* get new->mm->pgd */
-> addis r9,r9,-KERNELBASE@h /* convert to phys addr */
-> +#ifndef NO_MPC8xxBUG_CPU6
-> + lis r6, cmd_line@h
-> + ori r6, r6, cmd_line@l
-> + li r7, M_TWB_ADDR
-> + stw r7, 12(r6)
-> + lwz r7, 12(r6)
-> + mtspr M_TWB, r9 /* Update MMU base address */
-> + li r7, M_CASID_ADDR
-> + stw r7, 12(r6)
-> + lwz r7, 12(r6)
-> +#else
-> mtspr M_TWB, r9 /* Update MMU base
-> address */
-> +#endif /* NO_MPC8xxBUG_CPU6 */
-> mtspr M_CASID, r5 /* Update context */
-> tlbia
-> #endif
->
->
-> //Marcus
-> --
-> Signature under construction, please come back later.
->
-> ** Sent via the linuxppc-embedded mail list. See
-> http://lists.linuxppc.org/
->
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: crash loadin bash after booting linux on a MPC860ADS
2000-05-16 12:49 t.shantha.laxmi
@ 2000-05-16 23:55 ` Graham Stoney
0 siblings, 0 replies; 7+ messages in thread
From: Graham Stoney @ 2000-05-16 23:55 UTC (permalink / raw)
To: t.shantha.laxmi; +Cc: LinuxPPC Embedded Mailing List
t.shantha.laxmi@exgate.tek.com writes:
> page fault in interrupt handler, addr=c0002578
> NIP: C005EE64 XER: 0000B86D LR: C005EE44 REGS: c00c99c0 TRAP: 0300
...
> Kernel panic: kernel access of bad area pc c005ee64 lr c005ee44 address
> C0002578
Looks like one of your interrupt handlers is causing a page fault. Disassemble
your vmlinux with objdump --disassemble, and find the instruction at C005EE64.
It's the one causing the fault.
By the way, do any other list members know of any references on the 'net that
give some PowerPC-specific tips to decoding oops messages? If I can find
something more applicable than Documentation/oops-tracing.txt, I'd like to
include a link to it in the HOWTO.
Regards,
Graham
** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: crash loadin bash after booting linux on a MPC860ADS
@ 2000-05-17 5:24 Wolfgang Denk
0 siblings, 0 replies; 7+ messages in thread
From: Wolfgang Denk @ 2000-05-17 5:24 UTC (permalink / raw)
To: Graham Stoney; +Cc: t.shantha.laxmi, LinuxPPC Embedded Mailing List
[-- Attachment #1: Type: text/plain, Size: 2125 bytes --]
In message <20000516235553.C15D13C962@elph.research.canon.com.au>
Graham Stoney wrote:
>
> By the way, do any other list members know of any references on the 'net that
> give some PowerPC-specific tips to decoding oops messages? If I can find
> something more applicable than Documentation/oops-tracing.txt, I'd like to
> include a link to it in the HOWTO.
Usually I'm using the little script attached below; it loads the
kernel symbols from /LinuxPPC/usr/src/linux/System.map, or, if a file
name argument is given, from that file.
Feed it the "Call backtrace" messages on stdin:
-> /backtrace System.map
Reading symbols from System.map
C0745300 C003255C C002FDD4 C002FE78 C00361E8 C00AD924 C006BDC8
C006C814 C006C95C C006C9E8 C006CF00 C00ADA8C C00AD41C C00AD7FC
C00AC5A0 C00A87E0 C00A8878 C0002670 C00075F4
and you will get:
0xc0745300 -- 0xc00aeae8 + 0x696818 skb_init
0xc003255c -- 0xc00324e8 + 0x0074 wakeup_bdflush
0xc002fdd4 -- 0xc002fdb8 + 0x001c balance_dirty
0xc002fe78 -- 0xc002fe58 + 0x0020 mark_buffer_dirty
0xc00361e8 -- 0xc0035dc0 + 0x0428 block_write
0xc00ad924 -- 0xc00ad8e0 + 0x0044 flush_window
0xc006bdc8 -- 0xc006b930 + 0x0498 inflate_codes
0xc006c814 -- 0xc006c184 + 0x0690 inflate_dynamic
0xc006c95c -- 0xc006c84c + 0x0110 inflate_block
0xc006c9e8 -- 0xc006c998 + 0x0050 inflate
0xc006cf00 -- 0xc006cb3c + 0x03c4 gunzip
0xc00ada8c -- 0xc00ad9e0 + 0x00ac crd_load
0xc00ad41c -- 0xc00ad2a8 + 0x0174 rd_load_image
0xc00ad7fc -- 0xc00ad7dc + 0x0020 initrd_load
0xc00ac5a0 -- 0xc00ac56c + 0x0034 partition_setup
0xc00a87e0 -- 0xc00a87b0 + 0x0030 do_initcalls
0xc00a8878 -- 0xc00a87fc + 0x007c do_basic_setup
0xc0002670 -- 0xc000265c + 0x0014 init
0xc00075f4 -- 0xc00075c8 + 0x002c kernel_thread
Not perfect, but better than nothing.
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-4596-87 Fax: (+49)-8142-4596-88 Email: wd@denx.de
Life would be so much easier if we could just look at the source
code. -- Dave Olson
[-- Attachment #2: backtrace --]
[-- Type: text/plain , Size: 955 bytes --]
#!/usr/bin/perl -w
my $mapfile = shift || '/LinuxPPC/usr/src/linux/System.map';
print STDERR "Reading symbols from $mapfile\n";
#
# Read symbol table
#
open (MAP, $mapfile) or die "Can't open $mapfile: $!\n";
my $cnt = 0;
while (<MAP>) {
chomp;
my ($a,$t,$n) = split;
$a = eval ('0x' . $a);
if ($t =~ /^t$/i) {
$addr[$cnt] = $a;
$name[$cnt] = $n;
++$cnt;
}
}
close MAP;
my ($i, $n, $last);
#for ($i=0; $i<$cnt; ++$i) {
# printf "0x%08x %s\n", $addr[$i], $name[$i];
#}
#
# Now get backtrace info from stdin
#
while (<>) {
chomp;
my @a = split;
my $aa;
for ($i=0; $i<=$#a; ++$i) {
$aa = eval ('0x' . $a[$i]);
$last = -1;
for ($n=0; $n<$cnt; ++$n) {
if ($addr[$n] > $aa) {
last;
}
$last = $n;
}
if ($last) {
my $offset = $aa - $addr[$last];
printf "0x%08x -- 0x%08x + 0x%04x %s\n",
$aa, $addr[$last], $offset, $name[$last];
} else {
printf "0x%08x -- unknown address\n", $i, $aa;
}
}
}
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2000-05-17 5:24 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2000-05-17 5:24 crash loadin bash after booting linux on a MPC860ADS Wolfgang Denk
-- strict thread matches above, loose matches on Subject: below --
2000-05-16 12:49 t.shantha.laxmi
2000-05-16 23:55 ` Graham Stoney
2000-04-05 10:45 Eisenzopf Thomas
[not found] <D53137D1F3DDD211A3750800060DA313017023B4@viee122a.erd.siemens.at>
2000-04-05 9:12 ` Marcus Sundberg
2000-04-04 16:07 Eisenzopf Thomas
2000-04-04 16:49 ` Marcus Sundberg
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).