Skip to content

Commit ce8669f

Browse files
author
Kai Luo
committed
Add comments
1 parent 27b8416 commit ce8669f

File tree

1 file changed

+26
-18
lines changed

1 file changed

+26
-18
lines changed

psm/src/arch/powerpc64_aix.s

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,19 +15,26 @@
1515
blr
1616
L..rust_psm_stack_direction_end:
1717
# Following bytes form the traceback table on AIX.
18-
# See https://www.ibm.com/docs/en/aix/7.2?topic=processor-traceback-tables for more information.
19-
.vbyte 4, 0x00000000
20-
.byte 0x00
21-
.byte 0x09
22-
.byte 0x20
23-
.byte 0x40
24-
.byte 0x80
25-
.byte 0x00
26-
.byte 0x00
27-
.byte 0x01
28-
.vbyte 4, L..rust_psm_stack_direction_end-.rust_psm_stack_direction
29-
.vbyte 2, 0x0018
30-
.byte "rust_psm_stack_direction"
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
3138

3239
.globl rust_psm_stack_pointer[DS]
3340
.globl .rust_psm_stack_pointer
@@ -79,9 +86,9 @@ L..rust_psm_replace_stack_end:
7986
.byte 0x40
8087
.byte 0x80
8188
.byte 0x00
82-
.byte 0x02
89+
.byte 0x03
8390
.byte 0x01
84-
.vbyte 4, 0x00000000
91+
.vbyte 4, 0x00000000 # Parameter type = i, i, i
8592
.vbyte 4, L..rust_psm_replace_stack_end-.rust_psm_replace_stack
8693
.vbyte 2, 0x0016
8794
.byte "rust_psm_replace_stack"
@@ -95,7 +102,7 @@ L..rust_psm_replace_stack_end:
95102
.vbyte 8, 0
96103
.csect .text[PR],2
97104
.rust_psm_on_stack:
98-
# extern "C" fn(3: usize, 4: extern "C" fn(usize), 5: *mut u8)
105+
# extern "C" fn(3: usize, 4: usize, 5: extern "C" fn(usize, usize), 6: *mut u8)
99106
mflr 0
100107
std 2, -72(6)
101108
std 0, -8(6)
@@ -116,11 +123,12 @@ L..rust_psm_on_stack_end:
116123
.byte 0x00
117124
.byte 0x09
118125
.byte 0x20
119-
.byte 0x40
126+
.byte 0x41
120127
.byte 0x80
121128
.byte 0x00
122-
.byte 0x00
129+
.byte 0x04
123130
.byte 0x01
131+
.vbyte 4, 0x00000000 # Parameter type = i, i, i, i
124132
.vbyte 4, L..rust_psm_on_stack_end-.rust_psm_on_stack
125133
.vbyte 2, 0x0011
126134
.byte "rust_psm_on_stack"

0 commit comments

Comments
 (0)