fxdoc/asm/fx@3.10/%ac9.txt

49 lines
1.7 KiB
Plaintext
Raw Normal View History

2020-02-28 07:48:14 +01:00
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
2020-03-02 11:19:24 +01:00
site. The corresponding setjmp() is %aca.
2020-02-28 07:48:14 +01:00
2020-03-02 11:19:24 +01:00
RAM globals:
2020-02-28 07:48:14 +01:00
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