2003-03-21 21:34:38 +01:00
|
|
|
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
|
2005-11-11 12:18:53 +01:00
|
|
|
; 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:
|
2003-03-21 21:34:38 +01:00
|
|
|
clr _.frame
|
|
|
|
clr _.frame+1
|
|
|
|
.endm
|
|
|
|
|
|
|
|
comment "Declare a data variable"
|
* gdb.asm/alpha.inc, gdb.asm/frv.inc, gdb.asm/i386.inc,
gdb.asm/ia64.inc, gdb.asm/m68hc11.inc, gdb.asm/m68k.inc,
gdb.asm/mips.inc, gdb.asm/pa.inc, gdb.asm/powerpc.inc,
gdb.asm/s390.inc, gdb.asm/s390x.inc, gdb.asm/sh.inc,
gdb.asm/x86_64.inc: Use .purgem before redefining macros.
2005-03-07 22:16:50 +01:00
|
|
|
.purgem gdbasm_datavar
|
2003-03-21 21:34:38 +01:00
|
|
|
.macro gdbasm_datavar name value
|
|
|
|
.data
|
|
|
|
\name:
|
2005-11-11 12:18:53 +01:00
|
|
|
.word \value
|
2003-03-21 21:34:38 +01:00
|
|
|
.endm
|