blob: e8f5018c0b212808cf7ed19562de526464d81ed0 [file] [log] [blame]
comment "subroutine prologue"
.macro gdbasm_enter
ldx _.frame
pshx
sts _.frame
.endm
comment "subroutine epilogue"
.macro gdbasm_leave
pulx
stx _.frame
rts
.endm
.macro gdbasm_call subr
jsr \subr
.endm
.macro gdbasm_several_nops
nop
nop
nop
nop
.endm
comment "exit (0)"
.macro gdbasm_exit0
clra
clrb
wai
.endm
comment "crt0 startup"
.macro gdbasm_startup
.sect .data
.globl _.frame
_.frame: .word 0
.previous
lds #0x2000
; the linker script maps the data section in ROM (LMA) for its initial
; content and in RAM (VMA) for its runtime value. We have to do
; what the default crt0 does: copy the ROM part in RAM.
; (otherwise any 'globalvar' appears uninitialized)
ldx #__data_image
ldy #__data_section_start
bra Start_map
Loop:
ldaa 0,x
staa 0,y
inx
iny
Start_map:
cpx #__data_image_end
blo Loop
Done:
clr _.frame
clr _.frame+1
.endm
comment "Declare a data variable"
.purgem gdbasm_datavar
.macro gdbasm_datavar name value
.data
\name:
.word \value
.endm