1
0
mirror of https://github.com/cc65/cc65.git synced 2024-11-01 11:04:34 +00:00
cc65/libsrc/runtime/leave.s
uz 53dd513176 This commit was generated by cvs2svn to compensate for changes in r2,
which included commits to RCS files with non-trunk default branches.


git-svn-id: svn://svn.cc65.org/cc65/trunk@3 b7a2c559-68d2-44c3-8de9-860c34a00d81
2000-05-28 13:40:48 +00:00

38 lines
788 B
ArmAsm

;
; Ullrich von Bassewitz, 06.08.1998
;
; CC65 runtime: function epilogue
;
; exit a function. pop stack and rts. The function comes in different
; flavours that provide default values for the return val, or drop a local
; stack frame with size in y.
.export leave00, leave0, leavey00, leavey0, leavey
.export leave
.import addysp
.importzp sp
leave00:
lda #0
leave0: ldx #0
beq leave
leavey00:
lda #0 ; "return 0"
leavey0:
ldx #0 ; return < 256
leavey:
jsr addysp ; drop stack frame
leave: pha ; save A a sec
ldy #0
lda (sp),y ; that's the pushed arg size
sec ; Count the byte, the count's stored in
adc sp
sta sp
bcc L1
inc sp+1
L1: pla ; Get return value back
rts