linux-mips-fnet
[Top] [All Lists]

odd problems

To: linux-mips@fnet.fr
Subject: odd problems
From: David Monro <davidm@fuzzbox.psrg.cs.usyd.edu.au>
Date: Fri, 16 May 1997 01:58:13 +1000 (EST)
Reply-to: David Monro <davidm@fuzzbox.psrg.cs.usyd.edu.au>
Sender: davidm@fuzzbox.psrg.cs.usyd.edu.au
I'm having trouble with the magnum port. Following the example of the
DECstation port (I'm working with Paul's 2.1.1 tree) I decided to try moving
the exception handlers down to 0x80000000 (since the kernel appears to only get
booted if I link it at 0x81000000). Mind you I'm not entirely sure why this is
done - Paul?

In any case, I manage to move the code for exception 0 down using the following
code fragment:
                la      t0,except_vec0          # begining of exception code
                la      t1,except_vec1          # end of exception code
                la      t2,0x80000000           # where the code should live
                lw      t3,(t0)                 # get first word
1:              sw      t3,(t2)                 # put it where it should go
                addiu   t0,4                    # increment both pointers
                addiu   t2,4
                lw      t3,(t0)                 # will be in the delay slot
                bne     t0,t1,1b

Which works fine. However, the following almost identical code causes the
machine to lock up (not generate an exception, just go silent).

                la      t0,except_vec3  # begining of general exception
                la      t1,end_except   # end of general exception code
                la      t2,0x80000080   # where the code should live
1:              sw      t3,(t2)         # put it where it should go
                addiu   t0,4            # increment both pointers
                addiu   t2,4
                lw      t3,(t0)         # will be in the delay slot
                bne     t0,t1,1b

The lock up occurs as soon as the sw t3,(t2) is executed (well at least if I
put a 'j kernel_entry' just before the sw I get an exception in later code, but
if I put it after it I never get anything more out of it). Given that I am
about 8km away from the machine, the only way I have of unwedging it is to
powercycle it remotely, which I don't like doing very often. Wish I could get
it to reset from the serial line.

Any ideas?

        David

<Prev in Thread] Current Thread [Next in Thread>