This is the mail archive of the
sid@sources.redhat.com
mailing list for the SID project.
FW: Trying to run on pid7t board
- From: "Robert Cragie" <rcc at jennic dot com>
- To: <sid at sources dot redhat dot com>
- Date: Fri, 23 Aug 2002 12:14:35 +0100
- Subject: FW: Trying to run on pid7t board
I have done some more debugging on the problem I reported earlier regarding
exception handling in the ARM pid7t implementation. It actually threw an
abort_prefetch exception. I did a trace-semantics on what SID was doing and
it works fine until trying to return from exception:
0x8240: LDR_PRE_INC_IMM_OFFSET gr[0]:=0x13
0x8244: MSR_S spsr:=0x13
0x8248: AND_IMM gr[1]:=0x13
0x824c: CMP_IMM zbit:=0x1 nbit:=0x0 cbit:=0x1 vbit:=0x0
0x8250: X_INVALID
0x4: AND_REG_IMM_SHIFT gr[0]:=0x13
0x8: AND_REG_IMM_SHIFT gr[0]:=0x13
0xc: LDR_PRE_INC_IMM_OFFSET pc:=0x81ac
(it has now hit breakpoint at 0x81ac i.e. abort_prefetch exception handler)
The instruction at 0x8250 is:
ldmeqfd sp,{r0-r14,pc}^
The opcode for this is 0x08ddffff, which looks like
|COND|<4>|P|U|S|W|L| Rn | Reglist |
------------------------------------------
|0000|100|0|1|1|0|1|1101|1111111111111111|
------------------------------------------
| EQ | |FD |^| |L| sp | r0-r14,pc |
I confess I know very little about this, but I notice in CGEN, in arm7.cpu,
only two ldmia's are supported (PUSWL = 01001 and PUSWL = 01011). The opcode
above (PUSWL: 01101) (i.e. restore user mode banked registers) is not
included, so does this need to be in here too in some guise? Would this be
causing the invalid prefetch?
Robert Cragie, Design Engineer
_______________________________________________________________
Jennic Ltd, Furnival Street, Sheffield, S1 4QT, UK
http://www.jennic.com Tel: +44 (0) 114 281 2655
-----Original Message-----
From: sid-owner@sources.redhat.com
[mailto:sid-owner@sources.redhat.com]On Behalf Of Robert Cragie
Sent: 22 August 2002 18:09
To: Frank Ch. Eigler
Cc: sid@sources.redhat.com
Subject: RE: Trying to run on pid7t board
[snip]
With some further juggling of eCos configuration, I have got it printing to
the gdb console (-uart1:gdb), to the console sid was run from (-uart1:stdio)
and the tksm tty window. Excellent! Now I am having problems with the
timer-related calls (cyg_thread_delay() etc.) - I notice in the list this
was also seen by Cristiano Pereira (04-Mar-02). I have done some debugging,
and timer interrupt seems to fire once, then a data_abort exception is
thrown a bit later; looks like the pc was 0xe59d0044. Ho hum. I will try to
get to the bottom of what is going on - if anyone has any ideas, I'd
appreciate them.