Re: [hatari-devel] "profile stack" command added

[ Thread Index | Date Index | More Archives ]

On 01/06/2013 17:56, Eero Tamminen wrote:

Unrelated question.  Why in cart_asm.s:
; This is the cartridge header:
         dc.l    $ABCDEF42           ; C-FLAG (magic value)
         dc.l    $00000000           ; C-NEXT
         dc.l    sys_init+$08000000  ; C-INIT - flag has bit 3 set = before
disk boot, but after GEMDOS init

$08000000 is added to sys_init address?  What's the flag bit 3?

When TOS goes through cartridge code and jumps to that address
(which does linea_init variable setup for Hatari), PC gets an "illegal"
address value.  Emulation itself masks the extra bits off from the
address, but profiling code throws a fit about it when I profile
TOS startup...


I don't know why it does that in this precise case, but as pc is 32 bits and 68000 addresses 24 bits only in st, you can indeed "store" data in the upper 8 bits. If you look at the exception vectors in lower ram set by TOS, you will see that exception 2 has "02" in upper byte, exception 3 has "03", ..

So if your program crashes, as pc will be pushed in the stack at one point, it can help to debug to see what caused the jump to the current state of the 68000 (for example, after a bus error, pc will be 02xxxxxx ; so you know you're in the context of a bus error (this is valid only when the tos set such handlers))


Mail converted by MHonArc 2.6.19+