Skip to content

Commit ba33837

Browse files
committed
resolve comments
1 parent e4ca98b commit ba33837

File tree

1 file changed

+26
-29
lines changed

1 file changed

+26
-29
lines changed

src/runtime/asm_amd64.s

+26-29
Original file line numberDiff line numberDiff line change
@@ -79,18 +79,18 @@ DATA _rt0_amd64_lib_argv<>(SB)/8, $0
7979
GLOBL _rt0_amd64_lib_argv<>(SB),NOPTR, $8
8080

8181
#ifdef GOAMD64_v2
82-
DATA bad_proc_msg<>+0x00(SB)/78, $"This program can only be run on processors with v2 microarchitecture support.\n"
82+
DATA bad_cpu_msg<>+0x00(SB)/84, $"This program can only be run on AMD64 processors with v2 microarchitecture support.\n"
8383
#endif
8484

8585
#ifdef GOAMD64_v3
86-
DATA bad_proc_msg<>+0x00(SB)/78, $"This program can only be run on processors with v3 microarchitecture support.\n"
86+
DATA bad_cpu_msg<>+0x00(SB)/84, $"This program can only be run on AMD64 processors with v3 microarchitecture support.\n"
8787
#endif
8888

8989
#ifdef GOAMD64_v4
90-
DATA bad_proc_msg<>+0x00(SB)/78, $"This program can only be run on processors with v4 microarchitecture support.\n"
90+
DATA bad_cpu_msg<>+0x00(SB)/84, $"This program can only be run on AMD64 processors with v4 microarchitecture support.\n"
9191
#endif
9292

93-
GLOBL bad_proc_msg<>(SB), RODATA, $78
93+
GLOBL bad_cpu_msg<>(SB), RODATA, $84
9494

9595
// Define a list of AMD64 microarchitecture level features
9696
// https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels
@@ -107,6 +107,10 @@ GLOBL bad_proc_msg<>(SB), RODATA, $78
107107
#define V3_EXT_FEATURES_BX (1 << 3 | 1 << 5 | 1 << 8)
108108
// XMM YMM
109109
#define V3_OS_SUPPORT_AX (1 << 1 | 1 << 2)
110+
111+
#define V4_FEATURES_CX V3_FEATURES_CX
112+
113+
#define V4_EXT_FEATURES_CX V3_EXT_FEATURES_CX
110114
// AVX512F AVX512DQ AVX512CD AVX512BW AVX512VL
111115
#define V4_EXT_FEATURES_BX (V3_EXT_FEATURES_BX | 1 << 16 | 1 << 17 | 1 << 28 | 1 << 30 | 1 << 31)
112116
// OPMASK ZMM
@@ -119,17 +123,6 @@ GLOBL bad_proc_msg<>(SB), RODATA, $78
119123
#endif
120124

121125
#ifdef GOAMD64_v3
122-
#define NEED_V3_CHECK
123-
#endif
124-
125-
// Excluding v4 checks on Darwin for now, see CL 285572.
126-
#ifdef GOAMD64_v4
127-
#ifdef GOOS_darwin
128-
#define NEED_V3_CHECK
129-
#endif
130-
#endif
131-
132-
#ifdef NEED_V3_CHECK
133126
#define NEED_MAX_CPUID 0x80000001
134127
#define NEED_FEATURES_CX V3_FEATURES_CX
135128
#define NEED_EXT_FEATURES_CX V3_EXT_FEATURES_CX
@@ -138,13 +131,18 @@ GLOBL bad_proc_msg<>(SB), RODATA, $78
138131
#endif
139132

140133
#ifdef GOAMD64_v4
141-
#ifndef GOOS_darwin
142134
#define NEED_MAX_CPUID 0x80000001
143-
#define NEED_FEATURES_CX V3_FEATURES_CX
144-
#define NEED_EXT_FEATURES_CX V3_EXT_FEATURES_CX
135+
#define NEED_FEATURES_CX V4_FEATURES_CX
136+
#define NEED_EXT_FEATURES_CX V4_EXT_FEATURES_CX
145137
#define NEED_EXT_FEATURES_BX V4_EXT_FEATURES_BX
138+
139+
// Downgrading v4 OS checks on Darwin for now, see CL 285572.
140+
#ifdef GOOS_darwin
141+
#define NEED_OS_SUPPORT_AX V3_OS_SUPPORT_AX
142+
#else
146143
#define NEED_OS_SUPPORT_AX V4_OS_SUPPORT_AX
147144
#endif
145+
148146
#endif
149147

150148
#ifdef GOAMD64_v1
@@ -182,18 +180,17 @@ TEXT runtime·rt0_go(SB),NOSPLIT|TOPFRAME,$0
182180
// find out information about the processor we're on
183181
MOVL $0, AX
184182
CPUID
185-
MOVL AX, SI
186183
CMPL AX, $0
187184
#ifdef SKIP_GOAMD64_CHECK
188-
JE nocpuinfo
185+
JE nocpuinfo
189186
#else
190187
JNE has_cpuinfo
191188

192-
bad_proc: // show that the program requires a certain microarchitecture level.
189+
bad_cpu: // show that the program requires a certain microarchitecture level.
193190
MOVQ $2, 0(SP)
194-
MOVQ $bad_proc_msg<>(SB), AX
191+
MOVQ $bad_cpu_msg<>(SB), AX
195192
MOVQ AX, 8(SP)
196-
MOVQ $78, 16(SP)
193+
MOVQ $84, 16(SP)
197194
CALL runtime·write(SB)
198195
MOVQ $1, 0(SP)
199196
CALL runtime·exit(SB)
@@ -218,14 +215,14 @@ notintel:
218215
#ifdef NEED_FEATURES_CX
219216
ANDL $NEED_FEATURES_CX, CX
220217
CMPL CX, $NEED_FEATURES_CX
221-
JNZ bad_proc
218+
JNE bad_cpu
222219
#endif
223220

224221
#ifdef NEED_MAX_CPUID
225222
MOVL $0x80000000, AX
226223
CPUID
227224
CMPL AX, $NEED_MAX_CPUID
228-
JL bad_proc
225+
JL bad_cpu
229226
#endif
230227

231228
#ifdef NEED_EXT_FEATURES_BX
@@ -234,23 +231,23 @@ notintel:
234231
CPUID
235232
ANDL $NEED_EXT_FEATURES_BX, BX
236233
CMPL BX, $NEED_EXT_FEATURES_BX
237-
JNZ bad_proc
234+
JNE bad_cpu
238235
#endif
239236

240237
#ifdef NEED_EXT_FEATURES_CX
241238
MOVL $0x80000001, AX
242239
CPUID
243240
ANDL $NEED_EXT_FEATURES_CX, CX
244241
CMPL CX, $NEED_EXT_FEATURES_CX
245-
JNZ bad_proc
242+
JNE bad_cpu
246243
#endif
247244

248245
#ifdef NEED_OS_SUPPORT_AX
249-
MOVL $0, CX
246+
XORL CX, CX
250247
XGETBV
251248
ANDL $NEED_OS_SUPPORT_AX, AX
252249
CMPL AX, $NEED_OS_SUPPORT_AX
253-
JNZ bad_proc
250+
JNE bad_cpu
254251
#endif
255252

256253
nocpuinfo:

0 commit comments

Comments
 (0)