...
Run Format

Text file src/runtime/secret_arm64.s

Documentation: runtime

     1// Copyright 2024 The Go Authors. All rights reserved.
     2// Use of this source code is governed by a BSD-style
     3// license that can be found in the LICENSE file.
     4
     5#include "go_asm.h"
     6#include "textflag.h"
     7#include "funcdata.h"
     8
     9TEXT ·secretEraseRegisters(SB),NOFRAME|NOSPLIT,$0-0
    10	MOVD	ZR, R0
    11	MOVD	ZR, R26
    12	JMP ·secretEraseRegistersMcall(SB)
    13
    14// Mcall requires an argument in R0 and does not have a
    15// stack frame to spill into. Additionally, there is no stack
    16// to spill the link register into. This function deliberately
    17// doesn't clear R0 and R26, and Mcall uses R26 as a link register.
    18TEXT ·secretEraseRegistersMcall(SB),NOFRAME|NOSPLIT,$0-0
    19	// integer registers
    20	MOVD	ZR, R1
    21	MOVD	ZR, R2
    22	MOVD	ZR, R3
    23	MOVD	ZR, R4
    24	MOVD	ZR, R5
    25	MOVD	ZR, R6
    26	MOVD	ZR, R7
    27	MOVD	ZR, R8
    28	MOVD	ZR, R9
    29	MOVD	ZR, R10
    30	MOVD	ZR, R11
    31	MOVD	ZR, R12
    32	MOVD	ZR, R13
    33	MOVD	ZR, R14
    34	MOVD	ZR, R15
    35	MOVD	ZR, R16
    36	MOVD	ZR, R17
    37	// R18 = platform register
    38	MOVD	ZR, R19
    39	MOVD	ZR, R20
    40	MOVD	ZR, R21
    41	MOVD	ZR, R22
    42	MOVD	ZR, R23
    43	MOVD	ZR, R24
    44	MOVD	ZR, R25
    45	// R26 used for extra link register in mcall where we can't spill
    46	MOVD	ZR, R27
    47	// R28 = g
    48	// R29 = frame pointer
    49	// R30 = link pointer (return address)
    50	// R31 = stack pointer
    51
    52	// floating point registers
    53	// (also clears simd registers)
    54	FMOVD	ZR, F0
    55	FMOVD	ZR, F1
    56	FMOVD	ZR, F2
    57	FMOVD	ZR, F3
    58	FMOVD	ZR, F4
    59	FMOVD	ZR, F5
    60	FMOVD	ZR, F6
    61	FMOVD	ZR, F7
    62	FMOVD	ZR, F8
    63	FMOVD	ZR, F9
    64	FMOVD	ZR, F10
    65	FMOVD	ZR, F11
    66	FMOVD	ZR, F12
    67	FMOVD	ZR, F13
    68	FMOVD	ZR, F14
    69	FMOVD	ZR, F15
    70	FMOVD	ZR, F16
    71	FMOVD	ZR, F17
    72	FMOVD	ZR, F18
    73	FMOVD	ZR, F19
    74	FMOVD	ZR, F20
    75	FMOVD	ZR, F21
    76	FMOVD	ZR, F22
    77	FMOVD	ZR, F23
    78	FMOVD	ZR, F24
    79	FMOVD	ZR, F25
    80	FMOVD	ZR, F26
    81	FMOVD	ZR, F27
    82	FMOVD	ZR, F28
    83	FMOVD	ZR, F29
    84	FMOVD	ZR, F30
    85	FMOVD	ZR, F31
    86
    87	// misc registers
    88	CMP	ZR, ZR // N,Z,C,V flags
    89
    90	RET

View as plain text