| 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__ |