1/* 2 * Copyright (C) 1996 Paul Mackerras. 3 * 4 * NB this file must be compiled with -O2. 5 */ 6 7int 8xmon_setjmp(long *buf) 9{ 10 asm ("mflr 0; stw 0,0(%0);" 11 "stw 1,4(%0); stw 2,8(%0);" 12 "mfcr 0; stw 0,12(%0);" 13 "stmw 13,16(%0)" 14 : : "r" (buf)); 15 return 0; 16} 17 18void 19xmon_longjmp(long *buf, int val) 20{ 21 if (val == 0) 22 val = 1; 23 asm ("lmw 13,16(%0);" 24 "lwz 0,12(%0); mtcrf 0x38,0;" 25 "lwz 0,0(%0); lwz 1,4(%0); lwz 2,8(%0);" 26 "mtlr 0; mr 3,%1" 27 : : "r" (buf), "r" (val)); 28} 29