Problems with turn_on_mmu

Subodh Nijsure SNijsure at SkyStream.com
Fri Jan 26 18:28:28 EST 2001


Hello,

I am trying to boot a linux image on a 860 board.

I am using ppcboot as the bootrom, I am using BDM4GDB as the debugger.

When using BDM4GDB I can set a break point at 0xC0000000 and single step
(stepi)
the code upto the point where instruction 'rfi' is executed in turn_on_mmu
at which point gdb just hangs.   Yes Wolfgang has warned me in the past
about
not setting breakpoint at this location, don't know the reasons, BDM4GDB
seems to
set breakpoints okay and allow me to step through the code...

Next I set breakpoint at start_here the gdb causes the break  but the
instruction being executed is fnmadd. f31,f31,f31,f31" -> 0xFFFFFFF....

So I have tried disabling the cache that was suggested in message below,
without any
success.

http://lists.linuxppc.org/listarcs/linuxppc-embedded/200006/msg00098.html

Also I have tried disabling the data cache and instruction cache using the
ppcboot
provided commands but without much success.

I have tried this with 2.4-12 from (ftp.denx.de site), 2.2.XX kernels,
just in case, although code in till turn_on_mmu is same in both version.

Also I have tested that I can read/write the RAM (64MB) on this board using
commands
provided by the ppcboot.


1. I am novice in PowerPC assembler code ( yes doing the RTFM) Why does gdb
hang when
   I do 'stepi' on instruction rfi ?

2. Of course the bigger question is when start_here is executed what could
be
   the reason instruction are all FFFF?

3. BDM4GDB seems like good tool, and I may not be using it correctly. Is
there other tool
   out there that might help me debug this thing better?

Attached below is the boot sequence, some board information, gdb debug
session, and
some PowerPC register values in case the "details" might help...

Any help/pointer will be much appreciated.

/Subodh Nijsure

ppcboot 0.8.1 (Jan 25 2001 - 15:46:02)

Initializing...
  CPU:   XPC860xxZPnnD3 at 48 MHz: 16 kB I-Cache 8 kB D-Cache FEC present
  Board:   SDRAM:  64  MB (67108864)
  Relocating to: 03fa0000, 393216 bytes for malloc()
  Board Info at: 03f3ffc0
  New Stack Pointer is: 03f3ff40
  Now running in RAM - dest_addr = 0x03fa0000
  FLASH:  4 MB
  Monitor relocated to 0x03fa0000
Install CPM interrupt for vector 0 ==> 03fafa48
  In:    serial
  Out:   serial
  Err:   serial

CXE-BOOTROM>tftpboot 300000 "/tftpboot/vmlinux"
ARP broadcast 1
Got good ARP - start TFTP
TFTP from server 192.168.4.43; our IP address is 192.168.4.41
Filename '/tftpboot/vmlinux'.
Load address: 0x300000
Loading: ##########################
done
CXE-BOOTROM=>copy_kernel
   Image Name:   2.4.0-test2 @ Thu Jan 25 22:31:4
   Image Type:   PowerPC Linux Kernel Image (uncompressed)
   Data Size:    1136088 Bytes = 1109 kB = 1 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
Do memcopy 1136088 bytes from address 0x00300040 to load address of
0x00000000
Kernel is copied to location 0x00000000
CXE-BOOTROM=>md 0
00000000: 7c7f1b78 7c9e2378 7cbd2b78 7cdc3378    |..x|.#x|.+x|.3x
00000010: 7cfb3b78 3b000000 7c0002e4 39000000    |.;x;...|...9...
00000020: 7d10c3a6 3d000400 65081000 7d18c3a6    }...=...e...}...
00000030: 3d00c000 61080200 7d13c3a6 7d1bc3a6    =...a...}...}...
00000040: 3900000c 61080001 7d15c3a6 7d1dc3a6    9...a...}...}..
00000050: 390001fd 7d16c3a6 7d1ec3a6 3d004000    9...}...}...=. at .
00000060: 7d12c3a6 7d1ac3a6 7d3e9aa6 7529ff80    }...}...}>..u)..
00000070: 7d284b78 61080200 7d1bc3a6 3900000c    }(Kxa...}...9...
00000080: 61080001 7d1dc3a6 7d284b78 610801ff    a...}...}(Kxa...
00000090: 7d1ec3a6 3d000c00 7d108ba6 7d188ba6    }...=...}...}...
000000a0: 3d000200 7d108ba6 3d000100 7d188ba6    =...}...=...}...
000000b0: 3d000200 7d188ba6 7c0000a6 60000030    =...}...|...`..0
000000c0: 7c1b03a6 3c00c000 60002190 7c1a03a6    |...<...`.!.|...
000000d0: 7c0004ac 4c00012c 4c000064 00000000    |...L..,L..d....
000000e0: 00000000 00000000 00000000 00000000    ................
000000f0: 00000000 00000000 00000000 00000000    ................
CXE-BOOTROM=>md 300040  ( Skip the 40 byte header -- actual code starts at
offset 0x40 )
00300040: 7c7f1b78 7c9e2378 7cbd2b78 7cdc3378    |..x|.#x|.+x|.3x
00300050: 7cfb3b78 3b000000 7c0002e4 39000000    |.;x;...|...9...
00300060: 7d10c3a6 3d000400 65081000 7d18c3a6    }...=...e...}...
00300070: 3d00c000 61080200 7d13c3a6 7d1bc3a6    =...a...}...}...
00300080: 3900000c 61080001 7d15c3a6 7d1dc3a6    9...a...}...}...
00300090: 390001fd 7d16c3a6 7d1ec3a6 3d004000    9...}...}...=. at .
003000a0: 7d12c3a6 7d1ac3a6 7d3e9aa6 7529ff80    }...}...}>..u)..
003000b0: 7d284b78 61080200 7d1bc3a6 3900000c    }(Kxa...}...9...
003000c0: 61080001 7d1dc3a6 7d284b78 610801ff    a...}...}(Kxa...
003000d0: 7d1ec3a6 3d000c00 7d108ba6 7d188ba6    }...=...}...}...
003000e0: 3d000200 7d108ba6 3d000100 7d188ba6    =...}...=...}...
003000f0: 3d000200 7d188ba6 7c0000a6 60000030    =...}...|...`..0
CXE-BOOTROM=>reginfo

System Configuration registers
        IMMR    0XFF000501
        SIUMCR  0X1600400SYPCR  0XFFFFFF88
        SWT     0XFFFF0000      SWSR    0X0
        SIPEND  0X20000 SIMASK  0X4000000
        SIEL    0X0     SIVEC   0X3C000000
        TESR    0X0     SDCR    0X1
Memory Controller Registers
        BR0     0X28000001      OR0     0XFFC00742
        BR1     0XFF020001      OR1     0XFFFF07F2
        BR2     0XFF040001      OR2     0XFFFC07F2
        BR3     0X20000C1       OR3     0XFE000A00
        BR4     0X0     OR4     0X0
        BR5     0XC1    OR5     0XFE000A00
        BR6     0X0     OR6     0X0
        BR7     0XFF010801      OR7     0XFFFF8750

        mamr    0X67001000      mbmr    0X19964114
        mstat   0X0     mptpr   0X400
        mdr     0XFFFFFFFF

System Integration Timers
        TBSCR   0X1     RTCSC   0X11
        PISCR   0X2
CXE-BOOTROM=>bootm
## Booting Linux kernel at 00300000 ...
## Transferring control to Linux (at address 00000000) ...
about to invoke (*kernel) (kbd, initrd_start, initrd_end, cmd_start,
cmd_end)
kernel = 00000000 board_info (R3)= 007ffec0, initrd_start (r4)= 00000000,
initrd_end (r5) = 00000000, cmd_start (r6)= 007fff00 cmd_end (r7)= 007fff00

------gdb session----

[root at sn-smp linux-2.4-2000-12-04]# !pow
powerpc-linux-gdb -x ./mpc.init vmlinux
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
....
This GDB was configured as "--host=i686-pc-linux-gnu
--target=powerpc-linux"...
MPCBDM version 1.2 / 2000.11.05
got access rights for printer port 0x378..0x37A
disabled power at port
adapter version 2 initialized
assert HRESET
assert SRESET sequence for immediate debug mode
*** init
Target cpu PVR=0x00500000 PARTNUM=0x05 MASKNUM=0x01 REV_NUM=0x0000
Target cpu is a 'XPC860 Rev. D.3'
BDM initialized
0x100 in ?? ()
SYPCR := (SWTC|16BMT|24BME||28SWF|SWE|SWRI|SWP)
IMMR + 4:System Protection Control Register, UM283
SYPCR = 0xffffff88 = (SWTC=0xffff|BMT=0xff|BME|SWF)
ICTRL :=
(CTA|3CTB|6CTC|9CTD|12IW0|14IW1|16IW2|18IW3|20SIW0EN|SIW1EN|SIW2EN|SIW3EN|DI
W0EN|DIW1EN|DIW2EN|DIW3EN|IFM|ISCT_SER)
SPR 158:Instruction Support Control Register, UM989
ICTRL = 0x00000007 =
(CTA=0x0|CTB=0x0|CTC=0x0|CTD=0x0|IW0=0x0|IW1=0x0|IW2=0x0|IW3=0x0|ISCT_SER=0x
7)
DER :=
(|RSTE|CHSTPE|MCIE||6EXTIE|ALIE|PRIE|FPUVIE|DECIE||13SYSIE|TRE||17SEIE|ITLBM
SE|DTLBMSE|ITLBERE|DTBLERE||28LBRKE|IBRKE|EBRKE|DPIE)
SPR 149:Debug Enable Register, UM996
DER = 0x2002000f = (CHSTPE|TRE|LBRKE|IBRKE|EBRKE|DPIE)
(gdb) break start_here
Breakpoint 1 at 0xc0002190
(gdb) myder
DER :=
(|RSTE|CHSTPE|MCIE||6EXTIE|ALIE|PRIE|FPUVIE|DECIE||13SYSIE|TRE||17SEIE|ITLBM
SE|DTLBMSE|ITLBERE|DTBLERE||28LBRKE|IBRKE|EBRKE|DPIE)
SPR 149:Debug Enable Register, UM996
DER = 0x7026400f =
(RSTE|CHSTPE|MCIE|DECIE|SYSIE|TRE|SEIE|LBRKE|IBRKE|EBRKE|DPIE)
(gdb) cont
Continuing.
*** run
*** Resume
*** wait freeze

Program received signal SIGTRAP, Trace/breakpoint trap.
CR := (CR0|4CR1|8CR2|12CR3|16CR4|20CR5|24CR6|28CR7)
SPR 2:Condition Register, UM140
CR = 0x59553555 =
(CR0=0x5|CR1=0x9|CR2=0x5|CR3=0x5|CR4=0x3|CR5=0x5|CR6=0x5|CR7=0x5)
ICR :=
(|RST|CHSTP|MCI||6EXTI|ALI|PRI|FPUVI|DECI||13SYSI|TR||17SEI|ITLBMS|DTBLMS|IT
LBER|DTLBER||28LBRK|IBRK|EBRK|DPI)
SPR 148:Interrupt Cause Register, UM994
ICR = 0x00200000 = (DECI)
0x3faf1a4:	eieio
0x3faf1a4 in ?? ()
(gdb) cont
Continuing.
*** run
*** Resume
*** wait freeze
CR = 0x95555554 =
(CR0=0x9|CR1=0x5|CR2=0x5|CR3=0x5|CR4=0x5|CR5=0x5|CR6=0x5|CR7=0x4)
ICR :=
(|RST|CHSTP|MCI||6EXTI|ALI|PRI|FPUVI|DECI||13SYSI|TR||17SEI|ITLBMS|DTBLMS|IT
LBER|DTLBER||28LBRK|IBRK|EBRK|DPI)
SPR 148:Interrupt Cause Register, UM994
ICR = 0x00000004 = (IBRK)
0xc0002190 <start_here>:	I!I!fnmadd.	f31,f31,f31,f31 <---------
Invalid fffff instruction here.

Breakpoint 1, 0xc0002190 in start_here ()
(gdb) quit

** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/





More information about the Linuxppc-embedded mailing list