.global strhp EHEAP=17 strhp: ! %o0 = new heap pointer save %sp, -64, %sp set reghp, %o1 st %i0, [%o1] ! it'll probably go right, anyway set limhp, %o1 ld [%o1], %o2 cmp %i0, %o2 blt 1f nop add %i0, 0x400, %i0 ! extra 1K andn %i0, 0x3ff, %o0 st %o0, [%o1] ! prematurely set limhp call brk nop tst %o0 blt 2f ! failed nop set limhp, %o1 st %o0, [%o1] 1: ret restore 2: restore set EHEAP, %o0 set trp, %o1 jmp %o1 nop