[parisc-linux] Boot error on C200+
Ryan Bradetich
rbradetich@uswest.net
Sat, 02 Sep 2000 20:26:31 -0600
David Huggins-Daines wrote:
> Ryan Bradetich <rbradetich@uswest.net> writes:
>
> > Kernel Fault: Code=7 regs=c7f98248 (Addr=00000110)
> >
> > PSW : 0004000b GR 1 : 00002000 GR 2 : 00013403 GR 3 : 00000000
> > GR 4 : 2001ff74 GR 5 : 00000000 GR 6 : 000777f4 GR 7 : 000010c4
> > GR 8 : 000011bc GR 9 : c7f98000 GR10 : c022fa78 GR11 : c0270030
> > GR12 : c0270008 GR13 : c022fe14 GR14 : c0270000 GR15 : 617bfdfb
> > GR16 : c027c60c GR17 : 00000000 GR18 : c02b0000 GR19 : 00000001
> > GR20 : 00000037 GR21 : 00089b9c GR22 : 00089bd8 GR23 : 000010c4
> > GR24 : 2001ff74 GR25 : 00000001 GR26 : 00000000 GR27 : 00088f00
> > GR28 : b64d8e60 GR29 : b44302d0 GR30 : 20020140 GR31 : 00022d63
> > SR0 : 00002000 SR1 : fffd2dff SR2 : 00000000 SR3 : 00002000
> > SR4 : 00000000 SR5 : 00002000 SR6 : 00002000 SR7 : 00002000
> >
> > IASQ : 00000000 00000000 IAOQ : 00000110 00000114 ORIG_R28 : ffdf7fff
> ^^^^^^^^^^^^^^^^^^^^^^^^
>
> That is the syscall gateway page. Note that the low bits of IAOQ are
> clear, so you are running in kernel mode and kernel space at this
> point. Note also that the IAOQ points to just after the 'gate'
> instruction in linux_gateway_page, and from the look of the space
> registers, you've managed to successfully execute the instruction in
> the delay slot of the gate (mtsp %r0,%sr4) but nothing else.
I just wanted to verify I understood how you obtained this information...
hppa-linux-objdump -d vmlinux
c010d100 <linux_gateway_entry>:
c010d100: 00 00 e4 a1 mfsp sr7,r1
c010d104: 00 01 d8 20 mtsp r1,sr3
c010d108: e8 00 20 00 b,gate c010d110 <linux_gateway_entry+0x10>,r0
c010d10c: 00 00 38 20 mtsp r0,sr4
c010d110: 00 00 78 20 mtsp r0,sr5
SR4 = 0, but SR5 != 0 ... therefore the delay slot of the gate instruction
executed.
> Note that GR20 is 0x37, which is the syscall number for fcntl(), which
> confirms your earlier findings :-)
From arch/parisc/kernel/syscall.S
ENTRY_NAME(sys_ioctl)
ENTRY_NAME(sys_fcntl) /* 55 */
ENTRY_NAME(sys_socketpair)
55 = 0x37 .... I understand that....I don't see where GR20 is mapped to the
the syscall number.... (Not really important that I know now... but curious)
> > IIR : 43ffff40 ISR : 00000000 IOR : 00000000
>
> That IIR doesn't look like any instruction on the syscall page that I
> know of. Perhaps the gateway page is not getting mapped properly.
> The fact that it is trapping after the 'gate' instruction seems to
> support this.
From this statement, I assume it is a kernel problem and not a glibc
problem ... since the kernel would perform the mapping? I'll start digging
around in the kernel and see what I can find.... any hints where to start?
Thanks for the replay and explanation.
Ryan
>
> --
> dhd@linuxcare.com, http://www.linuxcare.com/
> Linuxcare. Support for the revolution.
>
> ---------------------------------------------------------------------------
> To unsubscribe: send e-mail to parisc-linux-request@thepuffingroup.com with
> `unsubscribe' as the subject.