aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/preempt_riscv64.s
diff options
context:
space:
mode:
authorKatie Hockman <katie@golang.org>2020-12-14 10:03:05 -0500
committerKatie Hockman <katie@golang.org>2020-12-14 10:06:13 -0500
commit0345ede87ee12698988973884cfc0fd3d499dffd (patch)
tree7123cff141ee5661208d2f5f437b8f5252ac7f6a /src/runtime/preempt_riscv64.s
parent4651d6b267818b0e0d128a5443289717c4bb8cbc (diff)
parent0a02371b0576964e81c3b40d328db9a3ef3b031b (diff)
downloadgo-0345ede87ee12698988973884cfc0fd3d499dffd.tar.xz
[dev.fuzz] all: merge master into dev.fuzz
Change-Id: I5d8c8329ccc9d747bd81ade6b1cb7cb8ae2e94b2
Diffstat (limited to 'src/runtime/preempt_riscv64.s')
-rw-r--r--src/runtime/preempt_riscv64.s153
1 files changed, 76 insertions, 77 deletions
diff --git a/src/runtime/preempt_riscv64.s b/src/runtime/preempt_riscv64.s
index 0338c22a94..d4f9cc277f 100644
--- a/src/runtime/preempt_riscv64.s
+++ b/src/runtime/preempt_riscv64.s
@@ -3,9 +3,10 @@
#include "go_asm.h"
#include "textflag.h"
-TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
- MOV X1, -480(X2)
- ADD $-480, X2
+// Note: asyncPreempt doesn't use the internal ABI, but we must be able to inject calls to it from the signal handler, so Go code has to see the PC of this function literally.
+TEXT ·asyncPreempt<ABIInternal>(SB),NOSPLIT|NOFRAME,$0-0
+ MOV X1, -472(X2)
+ ADD $-472, X2
MOV X3, 8(X2)
MOV X5, 16(X2)
MOV X6, 24(X2)
@@ -29,79 +30,77 @@ TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
MOV X24, 168(X2)
MOV X25, 176(X2)
MOV X26, 184(X2)
- MOV X27, 192(X2)
- MOV X28, 200(X2)
- MOV X29, 208(X2)
- MOV X30, 216(X2)
- MOVD F0, 224(X2)
- MOVD F1, 232(X2)
- MOVD F2, 240(X2)
- MOVD F3, 248(X2)
- MOVD F4, 256(X2)
- MOVD F5, 264(X2)
- MOVD F6, 272(X2)
- MOVD F7, 280(X2)
- MOVD F8, 288(X2)
- MOVD F9, 296(X2)
- MOVD F10, 304(X2)
- MOVD F11, 312(X2)
- MOVD F12, 320(X2)
- MOVD F13, 328(X2)
- MOVD F14, 336(X2)
- MOVD F15, 344(X2)
- MOVD F16, 352(X2)
- MOVD F17, 360(X2)
- MOVD F18, 368(X2)
- MOVD F19, 376(X2)
- MOVD F20, 384(X2)
- MOVD F21, 392(X2)
- MOVD F22, 400(X2)
- MOVD F23, 408(X2)
- MOVD F24, 416(X2)
- MOVD F25, 424(X2)
- MOVD F26, 432(X2)
- MOVD F27, 440(X2)
- MOVD F28, 448(X2)
- MOVD F29, 456(X2)
- MOVD F30, 464(X2)
- MOVD F31, 472(X2)
+ MOV X28, 192(X2)
+ MOV X29, 200(X2)
+ MOV X30, 208(X2)
+ MOVD F0, 216(X2)
+ MOVD F1, 224(X2)
+ MOVD F2, 232(X2)
+ MOVD F3, 240(X2)
+ MOVD F4, 248(X2)
+ MOVD F5, 256(X2)
+ MOVD F6, 264(X2)
+ MOVD F7, 272(X2)
+ MOVD F8, 280(X2)
+ MOVD F9, 288(X2)
+ MOVD F10, 296(X2)
+ MOVD F11, 304(X2)
+ MOVD F12, 312(X2)
+ MOVD F13, 320(X2)
+ MOVD F14, 328(X2)
+ MOVD F15, 336(X2)
+ MOVD F16, 344(X2)
+ MOVD F17, 352(X2)
+ MOVD F18, 360(X2)
+ MOVD F19, 368(X2)
+ MOVD F20, 376(X2)
+ MOVD F21, 384(X2)
+ MOVD F22, 392(X2)
+ MOVD F23, 400(X2)
+ MOVD F24, 408(X2)
+ MOVD F25, 416(X2)
+ MOVD F26, 424(X2)
+ MOVD F27, 432(X2)
+ MOVD F28, 440(X2)
+ MOVD F29, 448(X2)
+ MOVD F30, 456(X2)
+ MOVD F31, 464(X2)
CALL ·asyncPreempt2(SB)
- MOVD 472(X2), F31
- MOVD 464(X2), F30
- MOVD 456(X2), F29
- MOVD 448(X2), F28
- MOVD 440(X2), F27
- MOVD 432(X2), F26
- MOVD 424(X2), F25
- MOVD 416(X2), F24
- MOVD 408(X2), F23
- MOVD 400(X2), F22
- MOVD 392(X2), F21
- MOVD 384(X2), F20
- MOVD 376(X2), F19
- MOVD 368(X2), F18
- MOVD 360(X2), F17
- MOVD 352(X2), F16
- MOVD 344(X2), F15
- MOVD 336(X2), F14
- MOVD 328(X2), F13
- MOVD 320(X2), F12
- MOVD 312(X2), F11
- MOVD 304(X2), F10
- MOVD 296(X2), F9
- MOVD 288(X2), F8
- MOVD 280(X2), F7
- MOVD 272(X2), F6
- MOVD 264(X2), F5
- MOVD 256(X2), F4
- MOVD 248(X2), F3
- MOVD 240(X2), F2
- MOVD 232(X2), F1
- MOVD 224(X2), F0
- MOV 216(X2), X30
- MOV 208(X2), X29
- MOV 200(X2), X28
- MOV 192(X2), X27
+ MOVD 464(X2), F31
+ MOVD 456(X2), F30
+ MOVD 448(X2), F29
+ MOVD 440(X2), F28
+ MOVD 432(X2), F27
+ MOVD 424(X2), F26
+ MOVD 416(X2), F25
+ MOVD 408(X2), F24
+ MOVD 400(X2), F23
+ MOVD 392(X2), F22
+ MOVD 384(X2), F21
+ MOVD 376(X2), F20
+ MOVD 368(X2), F19
+ MOVD 360(X2), F18
+ MOVD 352(X2), F17
+ MOVD 344(X2), F16
+ MOVD 336(X2), F15
+ MOVD 328(X2), F14
+ MOVD 320(X2), F13
+ MOVD 312(X2), F12
+ MOVD 304(X2), F11
+ MOVD 296(X2), F10
+ MOVD 288(X2), F9
+ MOVD 280(X2), F8
+ MOVD 272(X2), F7
+ MOVD 264(X2), F6
+ MOVD 256(X2), F5
+ MOVD 248(X2), F4
+ MOVD 240(X2), F3
+ MOVD 232(X2), F2
+ MOVD 224(X2), F1
+ MOVD 216(X2), F0
+ MOV 208(X2), X30
+ MOV 200(X2), X29
+ MOV 192(X2), X28
MOV 184(X2), X26
MOV 176(X2), X25
MOV 168(X2), X24
@@ -125,7 +124,7 @@ TEXT ·asyncPreempt(SB),NOSPLIT|NOFRAME,$0-0
MOV 24(X2), X6
MOV 16(X2), X5
MOV 8(X2), X3
- MOV 480(X2), X1
+ MOV 472(X2), X1
MOV (X2), X31
- ADD $488, X2
+ ADD $480, X2
JMP (X31)