| // Copyright 2024 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| #include "go_asm.h" |
| #include "textflag.h" |
| #include "funcdata.h" |
| |
| TEXT ·secretEraseRegisters(SB),NOFRAME|NOSPLIT,$0-0 |
| MOVD ZR, R0 |
| MOVD ZR, R26 |
| JMP ·secretEraseRegistersMcall(SB) |
| |
| // Mcall requires an argument in R0 and does not have a |
| // stack frame to spill into. Additionally, there is no stack |
| // to spill the link register into. This function deliberately |
| // doesn't clear R0 and R26, and Mcall uses R26 as a link register. |
| TEXT ·secretEraseRegistersMcall(SB),NOFRAME|NOSPLIT,$0-0 |
| // integer registers |
| MOVD ZR, R1 |
| MOVD ZR, R2 |
| MOVD ZR, R3 |
| MOVD ZR, R4 |
| MOVD ZR, R5 |
| MOVD ZR, R6 |
| MOVD ZR, R7 |
| MOVD ZR, R8 |
| MOVD ZR, R9 |
| MOVD ZR, R10 |
| MOVD ZR, R11 |
| MOVD ZR, R12 |
| MOVD ZR, R13 |
| MOVD ZR, R14 |
| MOVD ZR, R15 |
| MOVD ZR, R16 |
| MOVD ZR, R17 |
| // R18 = platform register |
| MOVD ZR, R19 |
| MOVD ZR, R20 |
| MOVD ZR, R21 |
| MOVD ZR, R22 |
| MOVD ZR, R23 |
| MOVD ZR, R24 |
| MOVD ZR, R25 |
| // R26 used for extra link register in mcall where we can't spill |
| MOVD ZR, R27 |
| // R28 = g |
| // R29 = frame pointer |
| // R30 = link pointer (return address) |
| // R31 = stack pointer |
| |
| // floating point registers |
| // (also clears simd registers) |
| FMOVD ZR, F0 |
| FMOVD ZR, F1 |
| FMOVD ZR, F2 |
| FMOVD ZR, F3 |
| FMOVD ZR, F4 |
| FMOVD ZR, F5 |
| FMOVD ZR, F6 |
| FMOVD ZR, F7 |
| FMOVD ZR, F8 |
| FMOVD ZR, F9 |
| FMOVD ZR, F10 |
| FMOVD ZR, F11 |
| FMOVD ZR, F12 |
| FMOVD ZR, F13 |
| FMOVD ZR, F14 |
| FMOVD ZR, F15 |
| FMOVD ZR, F16 |
| FMOVD ZR, F17 |
| FMOVD ZR, F18 |
| FMOVD ZR, F19 |
| FMOVD ZR, F20 |
| FMOVD ZR, F21 |
| FMOVD ZR, F22 |
| FMOVD ZR, F23 |
| FMOVD ZR, F24 |
| FMOVD ZR, F25 |
| FMOVD ZR, F26 |
| FMOVD ZR, F27 |
| FMOVD ZR, F28 |
| FMOVD ZR, F29 |
| FMOVD ZR, F30 |
| FMOVD ZR, F31 |
| |
| // misc registers |
| CMP ZR, ZR // N,Z,C,V flags |
| |
| RET |