diff options
Diffstat (limited to 'newlib/libc')
-rw-r--r-- | newlib/libc/sys/h8300hms/_exit.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/newlib/libc/sys/h8300hms/_exit.c b/newlib/libc/sys/h8300hms/_exit.c index 17d1538cb..701cd8e4a 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"); } |