| /* | |
| * 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)); | |
| } |