2026-09-21 21:06:42 +02:00
|
|
|
// Kernel: the operand forms the GOROOT campaign surfaced — numeric
|
|
|
|
|
// PC-relative jumps, symbol-immediate materialisation (the toolchain rewrites
|
|
|
|
|
// MOVQ $sym(SB) into a RIP-relative LEA) and the negated constant-expression
|
|
|
|
|
// ADJSP the cgo ABI macros write. Bytes are pinned against go tool asm by
|
|
|
|
|
// TestDifferentialKernels.
|
|
|
|
|
#include "textflag.h"
|
|
|
|
|
|
|
|
|
|
DATA sd<>(SB)/4, $7
|
|
|
|
|
GLOBL sd<>(SB), RODATA, $4
|
|
|
|
|
|
|
|
|
|
// func Jumps(flag int64) int64
|
|
|
|
|
TEXT ·Jumps(SB), NOSPLIT, $0-16
|
|
|
|
|
MOVQ flag+0(FP), AX
|
|
|
|
|
TESTQ AX, AX
|
|
|
|
|
JEQ 2(PC)
|
|
|
|
|
MOVQ $1, AX
|
|
|
|
|
JMP 3(PC)
|
|
|
|
|
MOVQ $2, AX
|
|
|
|
|
MOVQ AX, ret+0(FP)
|
|
|
|
|
RET
|
|
|
|
|
|
|
|
|
|
// func SymImm() int64
|
|
|
|
|
TEXT ·SymImm(SB), NOSPLIT, $0-16
|
|
|
|
|
MOVQ $sd<>(SB), AX
|
|
|
|
|
MOVQ $·SymImm(SB), CX
|
|
|
|
|
MOVQ AX, ret+0(FP)
|
|
|
|
|
RET
|
|
|
|
|
|
|
|
|
|
// func Frame()
|
|
|
|
|
TEXT ·Frame(SB), NOSPLIT, $0
|
|
|
|
|
PUSHFQ
|
|
|
|
|
CLD
|
|
|
|
|
ADJSP $(64 - 8)
|
|
|
|
|
ADJSP $-(64 - 8)
|
|
|
|
|
POPFQ
|
|
|
|
|
RET
|
2026-09-21 21:35:08 +02:00
|
|
|
|
|
|
|
|
// func Tls() int64
|
|
|
|
|
TEXT ·Tls(SB), NOSPLIT, $0-8
|
|
|
|
|
MOVQ TLS, BX
|
|
|
|
|
MOVQ 0(BX)(TLS*1), AX
|
|
|
|
|
MOVQ AX, ret+0(FP)
|
|
|
|
|
RET
|