; entry.asm -- M2 TI ABI smoke-test entry, linked at bit 018A0000. ; ; Markers (0x20 bits apart): ; 018A8000 check() strlen("0::0") == 4 ; 018A8020 first(20,22) == 20 ; 018A8040 second(20,22) == 22 ; 018A8060 caller() add2(20,22) == 42 ; 018A8080 locals() == 7 ; 018A80A0 keep(10) == 16 (g == 5 before the call, + 11) .text .globl _start _start: setf 32, 0, 1 setf 16, 0, 0 movi _cstack, a14 move a14, a13 calla _check movi 018A8000h, a2 move a8, *a2, 1 ; first(20, 22): last argument first, on the program stack move a14, -*sp, 1 movi 22, a0 move a0, *a14+, 1 movi 20, a0 move a0, *a14+, 1 calla _first movi 018A8020h, a2 move a8, *a2, 1 ; second(20, 22) move a14, -*sp, 1 movi 22, a0 move a0, *a14+, 1 movi 20, a0 move a0, *a14+, 1 calla _second movi 018A8040h, a2 move a8, *a2, 1 calla _caller movi 018A8060h, a2 move a8, *a2, 1 calla _locals movi 018A8080h, a2 move a8, *a2, 1 move a14, -*sp, 1 movi 10, a0 move a0, *a14+, 1 calla _keep movi 018A80A0h, a2 move a8, *a2, 1 rets .bss _cstack, 32768, 16 ; 32768 bits = 4096 bytes