; > memasm.s

;  SJ Middleton, 1994

; memory allocation SWI wrappers

                GET     asm:ListOpts
                GET     asm:Macros
                GET     asm:System

                GET     asm:CRegs
                GET     asm:Proc

                MACRO
$l              Declare $reglist
                EXPORT  $l
                AREA    area_$l,CODE,READONLY
$l              Entry   "$reglist"
                MEND


; extern os_error *os_ChangeDynamicArea(int area, int move_by, int *bytes_moved);

os_ChangeDynamicArea    Declare
                SWI     XOS_ChangeDynamicArea
                MOVVC   a1, #0

                CMP     a3, #0
                STRNE   a2, [a3]
                EXITS

; extern os_error *os_ModuleAlloc(int code, void *ptr, int size, void **newptr);

os_ModuleAlloc  Declare "v1"
                MOV     v1, a4
                MOV     a4, a3
                MOV     a3, a2
                SWI     XOS_Module
                MOVVC   a1, #0

                CMP     v1, #0
                STRNE   a3, [v1]
                EXITS

; extern os_error *os_DynamicArea(os_regset *r);

os_DynamicArea  Declare  "v1-v5"
                MOV     ip, a1
                LDMIA   ip, {a1,a2,a3,a4,v1,v2,v3,v4,v5}
                SWI     XOS_DynamicArea
                STMVCIA ip, {a1,a2,a3,a4,v1,v2,v3,v4,v5}
                MOVVC   a1, #0
                EXITS

                END

eof memasm.s
