blob: 923350ccb949c442f7064661479a984a1e8a13e8 [file] [log] [blame]
#; $ as -o test.o gas-cfi-test.s && gcc -nostdlib -o test test.o
.text
.align 4
.level 1.1
.globl func_locvars
.type func_locvars, @function
func_locvars:
.PROC
.CALLINFO FRAME=0x1234,NO_CALLS,SAVE_SP,ENTRY_GR=3
.ENTRY
.cfi_startproc
copy %r3,%r1
copy %r30,%r3
.cfi_def_cfa_register r3
stwm %r1,0x1234(%r30)
.cfi_adjust_cfa_offset 0x1234
ldo 64(%r3),%r30
ldwm -64(%r30),%r3
.cfi_def_cfa_register sp
bv,n %r0(%r2)
.cfi_endproc
.EXIT
.PROCEND
.globl func_prologue
.type func_prologue, @function
func_prologue:
.PROC
.CALLINFO FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3
.ENTRY
.cfi_startproc
#; This is not ABI-compliant but helps the test to run on both
#; 32-bit and 64-bit targets
stw %r2,-24(%r30)
copy %r3,%r1
copy %r30,%r3
.cfi_def_cfa_register r3
.cfi_offset r2, -24
stwm %r1,64(%r30)
bl func_locvars,%r2
nop
ldw -20(%r3),%r2
ldo 64(%r3),%r30
ldwm -64(%r30),%r3
.cfi_def_cfa_register sp
bv,n %r0(%r2)
.cfi_endproc
.EXIT
.PROCEND
.align 4
.globl main
.type main, @function
main:
.PROC
.CALLINFO CALLS
.ENTRY
#; tail call - simple function that doesn't touch the stack
.cfi_startproc
b func_prologue
nop
.cfi_endproc
.EXIT
.PROCEND