|
|
1.1 root 1: # C library -- setjmp, longjmp
2: #
3: # longjmp(env, val)
4: # will generate a "return(val)" from the last call to
5: # setjmp(env)
6: # by restoring a2 - a7, d2 - d7, pc, and sr from env
7: # and doing a return
8: .text
9: .globl _setjmp
10: .globl _longjmp
11:
12: _setjmp:
13: movl sp@+,a1 | save pc and restore stack
14: movl sp@,a0
15: moveml #0xfcfc,a0@ | a2 - a7, d2 - d7
16: movl a1,a0@(48) | pc
17: clrl d0 | return 0
18: jmp a1@
19:
20: _longjmp:
21: movl sp@(4),a0
22: movl sp@(8),d0 | the return value
23: movl a0@(48),a1 | return pc
24: moveml a0@,#0xfcfc | restore registers
25: jmp a1@
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.