List of Stack Unwind Directives

Stack unwind directives, except for the.endp directive, do not break bundles. When a tag operand is present in a stack unwind directive, the tag refers to a location of an instruction slot. If the tag is omitted, the location default is the location counter of the next instruction. More than one directive can refer to the same location of an instruction slot.

Generally, functions have unwind table entries. A stack unwind directive must be present between the .proc and .endp directives to write function entries and unwind information to the unwind table.

To create a function entry for unwind information when there is no stack unwind information, use the .unwentry directive.

The table that follows, Stack Unwind Directives, lists the stack unwind directives and their operands. The right-most column of the table summarizes the records and fields that are affected by these directives. For more information about the affected records and fields, refer to the Software Conventions and Runtime Architecture Guide.

Stack Unwind Directives

Directive Name

First Operand

Second Operand

Third Operand

Affected Records and Fields

.proc

symbol

 

 

entry-start

.endp

 

 

 

entry-end

.handlerdata

 

 

 

handler data allocation

.unwentry

 

 

 

entry generation

.prologue

 

 

 

prologue header previous header

.prologue

imm-mask

grsave

 

prologue header previous header

.body

 

 

 

 

 

 

body header

previous header

.personality

symbol

[phases]

 

personality

.fframe

size

[tag]

 

mem_stack_f

.vframe

gr-location

[tag]

 

mem_stack_v

psp_gr

.vframesp  

spoff

[tag]

 

mem_stack_v

psp_sprel

.vframepsp  

pspoff

[tag]

 

mem_stak_v

pso_psprel

.restore

sp

[ecount]

[tag]

epilogue

.copy_state  

state_no

 

 

copy_state

.label_state

state_no

 

 

label_state

.save

rp

gr-location

[tag]

rp_when

rp_gr

.altrp

br-location

 

 

rp_br

.savesp rp

rp

imm-location

[tag]

rp_when

rp_sprel

.savepsp rp

rp

imm-location

[tag]

 

rp_when

rp_psprel

.save

ar.fpsr

gr_location

[tag]

fpsr_when

fpsr_gr

.savesp

ar.fpsr

imm_location

[tag]

fpsr_when

fpsr_sprel

.savepsp

ar.fpsr

imm_location

[tag]

 

fpsr_when

fpsr_psprel

.save

ar.bsp

gr_location

[tag]

bsp_when

bsp_gr

.savesp

ar.bsp

imm_location

[tag]

bsp_when

bsp_sprel

.savepsp

ar.bsp

imm_location

[tag]

bsp_when

bsp_psprel

.save

 

ar.bsp

store

gr_location

[tag]

bspstore_when

bspstore_gr

.savesp

ar.bsp

store

imm_location

[tag]

bspstore_when

bspstore_sprel

.savepsp

 

ar.bsp

store

imm_location

[tag]

bspstore_when

bspstore_psprel

.save   

ar.rnat

gr_location

[tag]

rnat_when

rnat_gr

.savesp

ar.rnat

imm_location

[tag]

rnat_when

rnat_sprel

.savepsp

ar.rnat

imm_location

[tag]

rnat_when

rnat_psprel

.save

ar.pfs

gr-location

[tag]

pfs_when

pfs_gr

.savesp

ar.pfs

imm-location

[tag]

pfs_when

pfs_sprel

.savepsp

ar.pfs

imm-location

[tag]

pfs_when

pfs_psprel

.save

ar.unat

gr-location

[tag]

natcr_when

natcr_gr

.savesp

ar.unat

imm-location

[tag]

natcr_when

natcr_sprel

.savepsp

ar.unat

imm-location

[tag]

natcr_when

natcr_psprel

.save

ar.lc

gr-location

[tag]

lc_when

lc_gr

.savesp

ar.lc

imm-location

[tag]

lc_when

lc_sprel

.savepsp

ar.lc

imm-location

[tag]

lc_when

lc_psprel

.save

pr

gr-location

[tag]

preds_when

preds_gr

.savesp

pr

imm-location

[tag]

preds_when

preds_sprel

.savepsp

pr

imm-location

[tag]

preds_when

preds_psprel

.save

@priunat

gr_location

[tag]

priunat_when

priunat_gr

.savesp

@priunat

imm_location

[tag]

priunat_when

priunat_sprel

.savepsp

@priunat

imm_location

[tag]

priunat_when

priunat_psprel

.save.g

imm-grmask

 

 

gr_mem spill_imask

.save.g

imm_grmask

gr_location

[tag]

gr_gr imask

.save.f  

imm-frmask

 

 

fr_mem

spill_imask

.save.b  

imm-brmask

 

 

br_mem

spill_imask

.save.gf   

imm-grmask

imm-frmask

 

frgr_mem

spill_imask

.save.b  

imm-brmask

gr-location

 

br_gr

spill_imask

.spill

imm-location

 

 

spill_base

.spillreg

reg

treg

[tag]

spill_reg

.restorereg

 

reg

[tag]

spill_reg

.spillsp

reg

imm_location

[tag]

spill_sprel

.spillpsp

reg

imm_location

[tag]

spill_psprel

.spillreg.p1

qp

reg

treg

spill_reg_p

 .restorereg.p

qp

reg

[tag]

spill_reg_p

.spillsp.p

qp

reg

imm_location

spill_sprel_p

.spillpsp.p

qp

reg

imm_location

spill_psprel_p

.unwabi  

os-type

imm_context

 

 abi

1 .spillreg.p, .spillsp.p, and .spillpsp.p have an optional fourth operand: [tag].