/* | |
* Copyright (C) 1996 Paul Mackerras. | |
* | |
* NB this file must be compiled with -O2. | |
*/ | |
int | |
xmon_setjmp(long *buf) | |
{ | |
asm ("mflr 0; stw 0,0(%0);" | |
"stw 1,4(%0); stw 2,8(%0);" | |
"mfcr 0; stw 0,12(%0);" | |
"stmw 13,16(%0)" | |
: : "r" (buf)); | |
/* XXX should save fp regs as well */ | |
return 0; | |
} | |
void | |
xmon_longjmp(long *buf, int val) | |
{ | |
if (val == 0) | |
val = 1; | |
asm ("lmw 13,16(%0);" | |
"lwz 0,12(%0); mtcrf 0x38,0;" | |
"lwz 0,0(%0); lwz 1,4(%0); lwz 2,8(%0);" | |
"mtlr 0; mr 3,%1" | |
: : "r" (buf), "r" (val)); | |
} |