2 .file "powerpc64_aix.s"
4 .globl rust_psm_stack_direction[DS]
5 .globl .rust_psm_stack_direction
7 .csect rust_psm_stack_direction[DS],3
8 .vbyte 8, .rust_psm_stack_direction
12 .rust_psm_stack_direction:
13 # extern "C" fn() -> u8
16 L..rust_psm_stack_direction_end:
17 # Following bytes form the traceback table on AIX.
18 # For specification, see https://www.ibm.com/docs/en/aix/7.2?topic=processor-traceback-tables.
19 # For implementation, see https://github.com/llvm/llvm-project/blob/main/llvm/lib/Target/PowerPC/PPCAsmPrinter.cpp,
20 # `PPCAIXAsmPrinter::emitTracebackTable`.
21 .vbyte 4, 0x00000000 # Traceback table begin, for unwinder to search the table.
22 .byte 0x00 # Version = 0
23 .byte 0x09 # Language = CPlusPlus, since rust is using C++-like LSDA.
24 .byte 0x20 # -IsGlobaLinkage, -IsOutOfLineEpilogOrPrologue
25 # +HasTraceBackTableOffset, -IsInternalProcedure
26 # -HasControlledStorage, -IsTOCless
27 # -IsFloatingPointPresent
28 # -IsFloatingPointOperationLogOrAbortEnabled
29 .byte 0x40 # -IsInterruptHandler, +IsFunctionNamePresent, -IsAllocaUsed
30 # OnConditionDirective = 0, -IsCRSaved, -IsLRSaved
31 .byte 0x80 # +IsBackChainStored, -IsFixup, NumOfFPRsSaved = 0
32 .byte 0x00 # -HasExtensionTable, -HasVectorInfo, NumOfGPRsSaved = 0
33 .byte 0x00 # NumberOfFixedParms = 0
34 .byte 0x01 # NumberOfFPParms = 0, +HasParmsOnStack
35 .vbyte 4, L..rust_psm_stack_direction_end-.rust_psm_stack_direction #Function size
36 .vbyte 2, 0x0018 # Function name len = 24
37 .byte "rust_psm_stack_direction" # Function Name
39 .globl rust_psm_stack_pointer[DS]
40 .globl .rust_psm_stack_pointer
42 .csect rust_psm_stack_pointer[DS],3
43 .vbyte 8, .rust_psm_stack_pointer
47 .rust_psm_stack_pointer:
48 # extern "C" fn() -> *mut u8
51 L..rust_psm_stack_pointer_end:
61 .vbyte 4, L..rust_psm_stack_pointer_end-.rust_psm_stack_pointer
63 .byte "rust_psm_stack_pointer"
65 .globl rust_psm_replace_stack[DS]
66 .globl .rust_psm_replace_stack
68 .csect rust_psm_replace_stack[DS],3
69 .vbyte 8, .rust_psm_replace_stack
73 .rust_psm_replace_stack:
74 # extern "C" fn(3: usize, 4: extern "C" fn(usize), 5: *mut u8)
75 # Load the function pointer and toc pointer from TOC and make the call.
82 L..rust_psm_replace_stack_end:
92 .vbyte 4, 0x00000000 # Parameter type = i, i, i
93 .vbyte 4, L..rust_psm_replace_stack_end-.rust_psm_replace_stack
95 .byte "rust_psm_replace_stack"
97 .globl rust_psm_on_stack[DS]
98 .globl .rust_psm_on_stack
100 .csect rust_psm_on_stack[DS],3
101 .vbyte 8, .rust_psm_on_stack
106 # extern "C" fn(3: usize, 4: usize, 5: extern "C" fn(usize, usize), 6: *mut u8)
122 L..rust_psm_on_stack_end:
132 .vbyte 4, 0x00000000 # Parameter type = i, i, i, i
133 .vbyte 4, L..rust_psm_on_stack_end-.rust_psm_on_stack
135 .byte "rust_psm_on_stack"