diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2003-01-31 20:44:26 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2003-01-31 20:44:26 +0000 |
commit | a74181ee01bd18628a09a4a47064b10b98315e46 (patch) | |
tree | a1f23903d27d77fd2046a1fd338dbfe1abaf8f5e /newlib | |
parent | b85498d44c994f0a47df9781620edb870deffe09 (diff) | |
download | newlib-a74181ee01bd18628a09a4a47064b10b98315e46.zip newlib-a74181ee01bd18628a09a4a47064b10b98315e46.tar.gz newlib-a74181ee01bd18628a09a4a47064b10b98315e46.tar.bz2 |
2003-01-31 Michael Snyder <msnyder@redhat.com>
* libc/sys/h8300hms/_exit.c (_exit, __exit): Slip a magic cookie
into registers r1 and r2, so that the simulator can distinguish
this trap from a breakpoint trap. Copied from libgloss.
Diffstat (limited to 'newlib')
-rw-r--r-- | newlib/ChangeLog | 6 | ||||
-rw-r--r-- | newlib/libc/sys/h8300hms/_exit.c | 16 |
2 files changed, 20 insertions, 2 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index a2a7421..84f0dc0 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,5 +1,11 @@ 2003-01-31 Michael Snyder <msnyder@redhat.com> + * libc/sys/h8300hms/_exit.c (_exit, __exit): Slip a magic cookie + into registers r1 and r2, so that the simulator can distinguish + this trap from a breakpoint trap. Copied from libgloss. + +2003-01-31 Michael Snyder <msnyder@redhat.com> + * libc/sys/h8300hms/crt0.S (_start): Change local label from .loop to .Loop, so that ld and gdb will ignore it. diff --git a/newlib/libc/sys/h8300hms/_exit.c b/newlib/libc/sys/h8300hms/_exit.c index 17d1538..701cd8e 100644 --- a/newlib/libc/sys/h8300hms/_exit.c +++ b/newlib/libc/sys/h8300hms/_exit.c @@ -10,7 +10,13 @@ void _DEFUN (_exit,(rc), int rc) { - short rc2 = rc << 8; + short rc2; + + rc2 = 0xdead; + asm("mov.w %0,r1" : : "r" (rc2) : "r1"); + rc2 = 0xbeef; + asm("mov.w %0,r2" : : "r" (rc2) : "r2"); + rc2 = rc << 8; asm("mov.w %0,r0\n\tsleep" : : "r" (rc2) : "r0"); } @@ -18,6 +24,12 @@ void _DEFUN (__exit,(rc), int rc) { - short rc2 = rc << 8; + short rc2; + + rc2 = 0xdead; + asm("mov.w %0,r1" : : "r" (rc2) : "r1"); + rc2 = 0xbeef; + asm("mov.w %0,r2" : : "r" (rc2) : "r2"); + rc2 = rc << 8; asm("mov.w %0,r0\n\tsleep" : : "r" (rc2) : "r0"); } |