Author: wmb Date: Mon Jan 23 18:56:19 2012 New Revision: 2846 URL: http://tracker.coreboot.org/trac/openfirmware/changeset/2846
Log: x86 - debugger support for relative-addressed version.
Modified: cpu/x86/debugm.fth
Modified: cpu/x86/debugm.fth ============================================================================== --- cpu/x86/debugm.fth Mon Jan 23 18:56:16 2012 (r2845) +++ cpu/x86/debugm.fth Mon Jan 23 18:56:19 2012 (r2846) @@ -31,13 +31,17 @@ _flush_cache #) call c;
-\ Change all the next routines in the indicated range to perform the -\ in-line next routine +\ Fix the NEXT routine in the user area to use the non-debug code. code fast-next ( high low -- ) ax pop ax pop _disable_cache #) call - h# 9020ffad # ax mov \ ax lods 0 [ax] jmp nop - ax 0 [up] mov + ++ rel h# 8bf801ad # ax mov ax 0 [up] mov \ ax lods up w add ++ rel h# fffb0118 # ax mov ax 4 [up] mov \ 0 [w] bx mov up bx add ++ rel h# 909090e3 # ax mov ax 8 [up] mov \ bx jmp nop nop nop + +- rel h# 9020ffad # ax mov ax 0 [up] mov \ ax lods 0 [w] jmp nop + _flush_cache #) call c;
@@ -45,7 +49,8 @@ \ We have to expand the code for NEXT in-line here, because if \ we let the assembler macro do it, we'll end up with a jump right back \ to this routine - ax lods 0 [ax] jmp ++ rel ax lods up w add 0 [w] bx mov up bx add bx jmp +- rel ax lods 0 [w] jmp end-code
label debnext @@ -62,26 +67,32 @@ ax 'user cnt mov \ normal-next #) ax lea make-even \ word-align address - normal-next dup #) ax lea - -4 allot token, \ relocate address +- rel normal-next dup #) ax lea +- rel -4 allot token, \ relocate address + ++ rel normal-next origin - # ax mov ++ rel up ax add
ax 'user debug-next mov + 'user 'debug w mov - 0 [w] jmp ++ rel up w add 0 [w] bx mov up bx add bx jmp +- rel 0 [w] jmp then then then \ We have to expand the code for NEXT in-line here, because if \ we let the assembler macro do it, we'll end up with a jump right back \ to this routine - ax lods 0 [ax] jmp \ Next ++ rel ax lods up w add 0 [w] bx mov up bx add bx jmp +- rel ax lods 0 [w] jmp \ Next end-code
\ Fix the next routine to use the debug version -: pnext (s -- ) debnext debug-next a! ; +: pnext (s -- ) debnext debug-next ! ;
\ Turn off debugging -: unbug (s -- ) normal-next debug-next a! ; +: unbug (s -- ) normal-next debug-next ! ;
forth definitions unbug
openfirmware@openfirmware.info