236 lines
3.9 KiB
ArmAsm
236 lines
3.9 KiB
ArmAsm
|
.text
|
||
|
.abiversion 2
|
||
|
.globl __xray_FunctionEntry
|
||
|
.p2align 4
|
||
|
__xray_FunctionEntry:
|
||
|
std 0, 16(1)
|
||
|
stdu 1, -408(1)
|
||
|
# Spill r3-r10, f1-f13, and vsr34-vsr45, which are parameter registers.
|
||
|
# If this appears to be slow, the caller needs to pass in number of generic,
|
||
|
# floating point, and vector parameters, so that we only spill those live ones.
|
||
|
std 3, 32(1)
|
||
|
ld 3, 400(1) # FuncId
|
||
|
std 4, 40(1)
|
||
|
std 5, 48(1)
|
||
|
std 6, 56(1)
|
||
|
std 7, 64(1)
|
||
|
std 8, 72(1)
|
||
|
std 9, 80(1)
|
||
|
std 10, 88(1)
|
||
|
addi 4, 1, 96
|
||
|
stxsdx 1, 0, 4
|
||
|
addi 4, 1, 104
|
||
|
stxsdx 2, 0, 4
|
||
|
addi 4, 1, 112
|
||
|
stxsdx 3, 0, 4
|
||
|
addi 4, 1, 120
|
||
|
stxsdx 4, 0, 4
|
||
|
addi 4, 1, 128
|
||
|
stxsdx 5, 0, 4
|
||
|
addi 4, 1, 136
|
||
|
stxsdx 6, 0, 4
|
||
|
addi 4, 1, 144
|
||
|
stxsdx 7, 0, 4
|
||
|
addi 4, 1, 152
|
||
|
stxsdx 8, 0, 4
|
||
|
addi 4, 1, 160
|
||
|
stxsdx 9, 0, 4
|
||
|
addi 4, 1, 168
|
||
|
stxsdx 10, 0, 4
|
||
|
addi 4, 1, 176
|
||
|
stxsdx 11, 0, 4
|
||
|
addi 4, 1, 184
|
||
|
stxsdx 12, 0, 4
|
||
|
addi 4, 1, 192
|
||
|
stxsdx 13, 0, 4
|
||
|
addi 4, 1, 200
|
||
|
stxvd2x 34, 0, 4
|
||
|
addi 4, 1, 216
|
||
|
stxvd2x 35, 0, 4
|
||
|
addi 4, 1, 232
|
||
|
stxvd2x 36, 0, 4
|
||
|
addi 4, 1, 248
|
||
|
stxvd2x 37, 0, 4
|
||
|
addi 4, 1, 264
|
||
|
stxvd2x 38, 0, 4
|
||
|
addi 4, 1, 280
|
||
|
stxvd2x 39, 0, 4
|
||
|
addi 4, 1, 296
|
||
|
stxvd2x 40, 0, 4
|
||
|
addi 4, 1, 312
|
||
|
stxvd2x 41, 0, 4
|
||
|
addi 4, 1, 328
|
||
|
stxvd2x 42, 0, 4
|
||
|
addi 4, 1, 344
|
||
|
stxvd2x 43, 0, 4
|
||
|
addi 4, 1, 360
|
||
|
stxvd2x 44, 0, 4
|
||
|
addi 4, 1, 376
|
||
|
stxvd2x 45, 0, 4
|
||
|
std 2, 392(1)
|
||
|
mflr 0
|
||
|
std 0, 400(1)
|
||
|
|
||
|
li 4, 0
|
||
|
bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
|
||
|
nop
|
||
|
|
||
|
addi 4, 1, 96
|
||
|
lxsdx 1, 0, 4
|
||
|
addi 4, 1, 104
|
||
|
lxsdx 2, 0, 4
|
||
|
addi 4, 1, 112
|
||
|
lxsdx 3, 0, 4
|
||
|
addi 4, 1, 120
|
||
|
lxsdx 4, 0, 4
|
||
|
addi 4, 1, 128
|
||
|
lxsdx 5, 0, 4
|
||
|
addi 4, 1, 136
|
||
|
lxsdx 6, 0, 4
|
||
|
addi 4, 1, 144
|
||
|
lxsdx 7, 0, 4
|
||
|
addi 4, 1, 152
|
||
|
lxsdx 8, 0, 4
|
||
|
addi 4, 1, 160
|
||
|
lxsdx 9, 0, 4
|
||
|
addi 4, 1, 168
|
||
|
lxsdx 10, 0, 4
|
||
|
addi 4, 1, 176
|
||
|
lxsdx 11, 0, 4
|
||
|
addi 4, 1, 184
|
||
|
lxsdx 12, 0, 4
|
||
|
addi 4, 1, 192
|
||
|
lxsdx 13, 0, 4
|
||
|
addi 4, 1, 200
|
||
|
lxvd2x 34, 0, 4
|
||
|
addi 4, 1, 216
|
||
|
lxvd2x 35, 0, 4
|
||
|
addi 4, 1, 232
|
||
|
lxvd2x 36, 0, 4
|
||
|
addi 4, 1, 248
|
||
|
lxvd2x 37, 0, 4
|
||
|
addi 4, 1, 264
|
||
|
lxvd2x 38, 0, 4
|
||
|
addi 4, 1, 280
|
||
|
lxvd2x 39, 0, 4
|
||
|
addi 4, 1, 296
|
||
|
lxvd2x 40, 0, 4
|
||
|
addi 4, 1, 312
|
||
|
lxvd2x 41, 0, 4
|
||
|
addi 4, 1, 328
|
||
|
lxvd2x 42, 0, 4
|
||
|
addi 4, 1, 344
|
||
|
lxvd2x 43, 0, 4
|
||
|
addi 4, 1, 360
|
||
|
lxvd2x 44, 0, 4
|
||
|
addi 4, 1, 376
|
||
|
lxvd2x 45, 0, 4
|
||
|
ld 0, 400(1)
|
||
|
mtlr 0
|
||
|
ld 2, 392(1)
|
||
|
ld 3, 32(1)
|
||
|
ld 4, 40(1)
|
||
|
ld 5, 48(1)
|
||
|
ld 6, 56(1)
|
||
|
ld 7, 64(1)
|
||
|
ld 8, 72(1)
|
||
|
ld 9, 80(1)
|
||
|
ld 10, 88(1)
|
||
|
|
||
|
addi 1, 1, 408
|
||
|
ld 0, 16(1)
|
||
|
blr
|
||
|
|
||
|
.globl __xray_FunctionExit
|
||
|
.p2align 4
|
||
|
__xray_FunctionExit:
|
||
|
std 0, 16(1)
|
||
|
stdu 1, -256(1)
|
||
|
# Spill r3-r4, f1-f8, and vsr34-vsr41, which are return registers.
|
||
|
# If this appears to be slow, the caller needs to pass in number of generic,
|
||
|
# floating point, and vector parameters, so that we only spill those live ones.
|
||
|
std 3, 32(1)
|
||
|
ld 3, 248(1) # FuncId
|
||
|
std 4, 40(1)
|
||
|
addi 4, 1, 48
|
||
|
stxsdx 1, 0, 4
|
||
|
addi 4, 1, 56
|
||
|
stxsdx 2, 0, 4
|
||
|
addi 4, 1, 64
|
||
|
stxsdx 3, 0, 4
|
||
|
addi 4, 1, 72
|
||
|
stxsdx 4, 0, 4
|
||
|
addi 4, 1, 80
|
||
|
stxsdx 5, 0, 4
|
||
|
addi 4, 1, 88
|
||
|
stxsdx 6, 0, 4
|
||
|
addi 4, 1, 96
|
||
|
stxsdx 7, 0, 4
|
||
|
addi 4, 1, 104
|
||
|
stxsdx 8, 0, 4
|
||
|
addi 4, 1, 112
|
||
|
stxvd2x 34, 0, 4
|
||
|
addi 4, 1, 128
|
||
|
stxvd2x 35, 0, 4
|
||
|
addi 4, 1, 144
|
||
|
stxvd2x 36, 0, 4
|
||
|
addi 4, 1, 160
|
||
|
stxvd2x 37, 0, 4
|
||
|
addi 4, 1, 176
|
||
|
stxvd2x 38, 0, 4
|
||
|
addi 4, 1, 192
|
||
|
stxvd2x 39, 0, 4
|
||
|
addi 4, 1, 208
|
||
|
stxvd2x 40, 0, 4
|
||
|
addi 4, 1, 224
|
||
|
stxvd2x 41, 0, 4
|
||
|
std 2, 240(1)
|
||
|
mflr 0
|
||
|
std 0, 248(1)
|
||
|
|
||
|
li 4, 1
|
||
|
bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
|
||
|
nop
|
||
|
|
||
|
addi 4, 1, 48
|
||
|
lxsdx 1, 0, 4
|
||
|
addi 4, 1, 56
|
||
|
lxsdx 2, 0, 4
|
||
|
addi 4, 1, 64
|
||
|
lxsdx 3, 0, 4
|
||
|
addi 4, 1, 72
|
||
|
lxsdx 4, 0, 4
|
||
|
addi 4, 1, 80
|
||
|
lxsdx 5, 0, 4
|
||
|
addi 4, 1, 88
|
||
|
lxsdx 6, 0, 4
|
||
|
addi 4, 1, 96
|
||
|
lxsdx 7, 0, 4
|
||
|
addi 4, 1, 104
|
||
|
lxsdx 8, 0, 4
|
||
|
addi 4, 1, 112
|
||
|
lxvd2x 34, 0, 4
|
||
|
addi 4, 1, 128
|
||
|
lxvd2x 35, 0, 4
|
||
|
addi 4, 1, 144
|
||
|
lxvd2x 36, 0, 4
|
||
|
addi 4, 1, 160
|
||
|
lxvd2x 37, 0, 4
|
||
|
addi 4, 1, 176
|
||
|
lxvd2x 38, 0, 4
|
||
|
addi 4, 1, 192
|
||
|
lxvd2x 39, 0, 4
|
||
|
addi 4, 1, 208
|
||
|
lxvd2x 40, 0, 4
|
||
|
addi 4, 1, 224
|
||
|
lxvd2x 41, 0, 4
|
||
|
ld 0, 248(1)
|
||
|
mtlr 0
|
||
|
ld 2, 240(1)
|
||
|
ld 3, 32(1)
|
||
|
ld 4, 40(1)
|
||
|
|
||
|
addi 1, 1, 256
|
||
|
ld 0, 16(1)
|
||
|
blr
|