home *** CD-ROM | disk | FTP | other *** search
- ;-> a.SystemCall
-
- pc RN 15
-
- EXTERN __main, Image$$RO$$Base
-
- ; ========== ADR macro
-
- ; ==========
-
- AREA A$$code READONLY,CODE
-
- B __main
-
- oursystemcall:
-
- STMDB R13!, {R0-R12,R14}
- MOV R9, R0
-
- ; find and save current env & control values
- MOV R0, #0
- MOV R1, #0
- MOV R2, #0
- MOV R3, #2
- MOV R4, #0
- MOV R5, #0
- MOV R6, #0
- MOV R7, #0
-
- SWI &12 ; OS_SetEnv
-
- STMDB R13!, {R0-R7}
-
- MOV R0, #0
- MOV R1, #0
- MOV R2, #0
- MOV R3, #0
-
- SWI &0F ; OS_Control
-
- STMDB R13!, {R0-R3}
-
- ; now set up env & control for called prog
- ADR R0, exitCode
- LDR R1, =Image$$RO$$Base
- MOV R2, #0
- MOV R3, #2
- MOV R4, #0
- MOV R5, #0
- MOV R6, #0
- MOV R7, #0
-
- SWI &12 ; OS_SetEnv
-
- STR R13, stackSave
-
- MOV R0, R9
-
- SWI &05 ; OS_CLI
-
- exitCode:
- LDR R13, stackSave
-
- LDMIA R13!, {R0-R3}
-
- SWI &0F ; OS_Control
-
- LDMIA R13!, {R0-R7}
-
- SWI &12 ; OS_SetEnv
-
- LDMIA R13!, {R0-R12, pc}^
-
- stackSave:
- DCD 0