diff --git a/stage1/zig.h b/stage1/zig.h index b9d4645ca2..5c96b4bea0 100644 --- a/stage1/zig.h +++ b/stage1/zig.h @@ -4195,7 +4195,17 @@ static inline void* zig_x86_64_windows_teb(void) { #endif -#if defined(zig_x86) +#if defined(zig_loongarch) + +static inline void zig_loongarch_cpucfg(uint32_t word, uint32_t* result) { +#if defined(zig_gnuc_asm) + __asm__("cpucfg %[result], %[word]" : [result] "=r" (result) : [word] "r" (word)); +#else + *result = 0; +#endif +} + +#elif defined(zig_x86) static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax, uint32_t* ebx, uint32_t* ecx, uint32_t* edx) { #if defined(zig_msvc) @@ -4206,7 +4216,7 @@ static inline void zig_x86_cpuid(uint32_t leaf_id, uint32_t subid, uint32_t* eax *ecx = (uint32_t)cpu_info[2]; *edx = (uint32_t)cpu_info[3]; #elif defined(zig_gnuc_asm) - __asm__("cpuid" : "=a"(*eax), "=b"(*ebx), "=c"(*ecx), "=d"(*edx) : "a"(leaf_id), "c"(subid)); + __asm__("cpuid" : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx) : "a" (leaf_id), "c" (subid)); #else *eax = 0; *ebx = 0; @@ -4221,7 +4231,7 @@ static inline uint32_t zig_x86_get_xcr0(void) { #elif defined(zig_gnuc_asm) uint32_t eax; uint32_t edx; - __asm__("xgetbv" : "=a"(eax), "=d"(edx) : "c"(0)); + __asm__("xgetbv" : "=a" (eax), "=d" (edx) : "c" (0)); return eax; #else *eax = 0; diff --git a/stage1/zig1.wasm b/stage1/zig1.wasm index ef46d39da4..1660c5a926 100644 Binary files a/stage1/zig1.wasm and b/stage1/zig1.wasm differ