// in c code extern void SetStack(); void main() { SetStack(); ... } ; in assembly (.s file). .area _CODE _SetStack:: pop hl ; preserve return address in main() ld sp, #0x8000 ; whatever address you want stack to start at jp (hl) ; return