49 lines
1.7 KiB
Plaintext
49 lines
1.7 KiB
Plaintext
Syscall %ac9 longjmp() from Graph 35+E II OS 3.10
|
|
|
|
Restores the whole jump buffer, except for r0 which is the return code anyway.
|
|
Performs rts to the saved value of pr, effectively jumping to the setjmp() call
|
|
site. The corresponding setjmp() is %aca.
|
|
|
|
RAM globals:
|
|
0x880287e4 Temporary storage for the return code of longjmp()
|
|
|
|
<%ac9 longjmp>
|
|
r4: Jump buffer
|
|
r5: Return value (cannot be 0 as it would confuse setjmp)
|
|
|
|
801e3e7c: d011 mov.l 0x880287e4, r0
|
|
801e3e7e: 2052 mov.l r5, @r0
|
|
801e3e80: 7434 add #52, r4
|
|
801e3e82: 5046 mov.l @(24,r4), r0
|
|
801e3e84: 401e ldc r0, gbr
|
|
801e3e86: 5045 mov.l @(20,r4), r0
|
|
801e3e88: 401a lds r0, macl
|
|
801e3e8a: 5044 mov.l @(16,r4), r0
|
|
801e3e8c: 400a lds r0, mach
|
|
801e3e8e: 5142 mov.l @(8,r4), r1
|
|
801e3e90: 5241 mov.l @(4,r4), r2
|
|
801e3e92: 6342 mov.l @r4, r3
|
|
801e3e94: 74cc add #-52, r4
|
|
801e3e96: 554b mov.l @(44,r4), r5
|
|
801e3e98: 564a mov.l @(40,r4), r6
|
|
801e3e9a: 5749 mov.l @(36,r4), r7
|
|
801e3e9c: 5848 mov.l @(32,r4), r8
|
|
801e3e9e: 5947 mov.l @(28,r4), r9
|
|
801e3ea0: 5a46 mov.l @(24,r4), r10
|
|
801e3ea2: 5b45 mov.l @(20,r4), r11
|
|
801e3ea4: 5c44 mov.l @(16,r4), r12
|
|
801e3ea6: 5d43 mov.l @(12,r4), r13
|
|
801e3ea8: 5e41 mov.l @(4,r4), r14
|
|
801e3eaa: 6043 mov r4, r0
|
|
801e3eac: 540c mov.l @(48,r0), r4
|
|
801e3eae: 6f02 mov.l @r0, r15
|
|
801e3eb0: 5002 mov.l @(8,r0), r0
|
|
801e3eb2: 402a lds r0, pr
|
|
801e3eb4: d003 mov.l 0x880287e4, r0
|
|
801e3eb6: 6002 mov.l @r0, r0
|
|
801e3eb8: 8800 cmp/eq #0, r0
|
|
801e3eba: 8b00 bf <801e3ebe>
|
|
801e3ebc: e001 mov #1, r0
|
|
801e3ebe: 000b rts
|
|
801e3ec0: 0009 nop
|