26 |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
27 |
POSSIBILITY OF SUCH DAMAGE. */ |
POSSIBILITY OF SUCH DAMAGE. */ |
28 |
|
|
29 |
|
/* $Id$ */ |
30 |
|
|
31 |
/* |
/* |
32 |
setjmp.S |
setjmp.S |
33 |
|
|
72 |
.global _U(longjmp) |
.global _U(longjmp) |
73 |
|
|
74 |
_U(setjmp): |
_U(setjmp): |
75 |
LOAD_Z(jmpb_lo, jmpb_hi) |
X_movw ZL, jmpb_lo |
76 |
in r26, _SFR_IO_ADDR(SPL) |
in r26, _SFR_IO_ADDR(SPL) |
77 |
in r27, _SFR_IO_ADDR(SPH) |
in r27, _SFR_IO_ADDR(SPH) |
78 |
/* save program counter (return address) */ |
/* save program counter (return address) */ |
119 |
ret |
ret |
120 |
|
|
121 |
_U(longjmp): |
_U(longjmp): |
122 |
LOAD_X(jmpb_lo, jmpb_hi) |
X_movw XL, jmpb_lo |
123 |
/* return value */ |
/* return value */ |
124 |
mov ret_lo, val_lo |
X_movw ret_lo, val_lo |
|
mov ret_hi, val_hi |
|
125 |
/* if zero, change to 1 */ |
/* if zero, change to 1 */ |
126 |
cpi ret_lo, 1 |
cpi ret_lo, 1 |
127 |
cpc ret_hi, __zero_reg__ |
cpc ret_hi, __zero_reg__ |