| // 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 |