@zigc/lib 0.17.0-dev.356 → 0.17.0-dev.389
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/std/Target/riscv.zig +97 -0
- package/std/Target.zig +27 -9
- package/std/Thread.zig +2 -2
- package/std/array_list.zig +2 -2
- package/std/atomic.zig +2 -0
- package/std/debug/Dwarf.zig +6 -0
- package/std/debug/SelfInfo/Elf.zig +1 -0
- package/std/debug/cpu_context.zig +168 -3
- package/std/debug.zig +1 -1
- package/std/heap.zig +2 -0
- package/std/lang/assembly.zig +71 -0
- package/std/lang.zig +2 -0
- package/std/os/linux/alpha.zig +358 -0
- package/std/os/linux/arm.zig +0 -26
- package/std/os/linux/ioctl.zig +1 -0
- package/std/os/linux/syscalls.zig +502 -0
- package/std/os/linux/tls.zig +1 -1
- package/std/os/linux.zig +729 -31
- package/std/start.zig +11 -0
- package/std/zig/LibCDirs.zig +1 -0
- package/std/zig/system/linux.zig +4 -0
- package/std/zig/system/loongarch.zig +25 -9
- package/std/zig/system.zig +4 -0
- package/zig.h +24 -2
package/std/start.zig
CHANGED
|
@@ -169,6 +169,7 @@ fn _start() callconv(.naked) noreturn {
|
|
|
169
169
|
.kvx => ".cfi_undefined r14",
|
|
170
170
|
.loongarch32, .loongarch64 => ".cfi_undefined 1",
|
|
171
171
|
.m68k => ".cfi_undefined %%pc",
|
|
172
|
+
.m88k => ".cfi_undefined %%r1",
|
|
172
173
|
.microblaze, .microblazeel => ".cfi_undefined r15",
|
|
173
174
|
.mips, .mipsel, .mips64, .mips64el => ".cfi_undefined $ra",
|
|
174
175
|
.or1k => ".cfi_undefined r9",
|
|
@@ -331,6 +332,16 @@ fn _start() callconv(.naked) noreturn {
|
|
|
331
332
|
\\ lea %[posixCallMainAndExit] - . - 8, %%a0
|
|
332
333
|
\\ jsr (%%pc, %%a0)
|
|
333
334
|
,
|
|
335
|
+
.m88k =>
|
|
336
|
+
// r1 = LR, r30 = FP, r31 = SP
|
|
337
|
+
\\ or %%r0, %%r0, %%r0
|
|
338
|
+
\\ or %%r0, %%r0, %%r0
|
|
339
|
+
\\ or %%30, %%r0, %%r0
|
|
340
|
+
\\ or %%r1, %%r0, %%r0
|
|
341
|
+
\\ or %%r2, %%r31, %%r0
|
|
342
|
+
\\ clr %%r31, %%r31, 4<0>
|
|
343
|
+
\\ br.n %[posixCallMainAndExit]
|
|
344
|
+
,
|
|
334
345
|
.microblaze, .microblazeel =>
|
|
335
346
|
// r1 = SP, r15 = LR, r19 = FP, r20 = GP
|
|
336
347
|
\\ ori r15, r0, r0
|
package/std/zig/LibCDirs.zig
CHANGED
package/std/zig/system/linux.zig
CHANGED
|
@@ -70,12 +70,16 @@ const RiscvCpuinfoImpl = struct {
|
|
|
70
70
|
model: ?*const Target.Cpu.Model = null,
|
|
71
71
|
|
|
72
72
|
const cpu_names = .{
|
|
73
|
+
.{ "andestech,ax45mp", &Target.riscv.cpu.andes_ax45 },
|
|
74
|
+
.{ "sifive,p550", &Target.riscv.cpu.sifive_p550 },
|
|
73
75
|
.{ "sifive,u54", &Target.riscv.cpu.sifive_u54 },
|
|
74
76
|
.{ "sifive,u54-mc", &Target.riscv.cpu.sifive_u54 },
|
|
75
77
|
.{ "sifive,u7", &Target.riscv.cpu.sifive_7_series },
|
|
76
78
|
.{ "sifive,u74", &Target.riscv.cpu.sifive_u74 },
|
|
77
79
|
.{ "sifive,u74-mc", &Target.riscv.cpu.sifive_u74 },
|
|
80
|
+
.{ "sifive,x280", &Target.riscv.cpu.sifive_x280 },
|
|
78
81
|
.{ "spacemit,x60", &Target.riscv.cpu.spacemit_x60 },
|
|
82
|
+
.{ "spacemit,x100", &Target.riscv.cpu.spacemit_x100 },
|
|
79
83
|
};
|
|
80
84
|
|
|
81
85
|
fn line_hook(self: *RiscvCpuinfoImpl, key: []const u8, value: []const u8) !bool {
|
|
@@ -31,21 +31,37 @@ pub fn detectNativeCpuAndFeatures(
|
|
|
31
31
|
|
|
32
32
|
cpu.features.addFeatureSet(cpu.model.features);
|
|
33
33
|
|
|
34
|
-
const cfg1 = cpucfg(1);
|
|
35
34
|
const cfg2 = cpucfg(2);
|
|
36
35
|
const cfg3 = cpucfg(3);
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
if (builtin.os.tag == .linux) {
|
|
38
|
+
const HWCAP = std.os.linux.HWCAP;
|
|
39
|
+
const hwcap_bits: usize = if (builtin.link_libc)
|
|
40
|
+
std.c.getauxval(std.elf.AT_HWCAP)
|
|
41
|
+
else
|
|
42
|
+
std.os.linux.getauxval(std.elf.AT_HWCAP);
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
setFeature(&cpu, .f, has_fpu and bit(cfg2, 1));
|
|
42
|
-
setFeature(&cpu, .d, has_fpu and bit(cfg2, 2));
|
|
44
|
+
setFeature(&cpu, .ual, (hwcap_bits & HWCAP.UAL) != 0);
|
|
43
45
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
const has_fpu = (hwcap_bits & HWCAP.FPU) != 0;
|
|
47
|
+
setFeature(&cpu, .f, has_fpu and bit(cfg2, 1));
|
|
48
|
+
setFeature(&cpu, .d, has_fpu and bit(cfg2, 2));
|
|
49
|
+
setFeature(&cpu, .lsx, (hwcap_bits & HWCAP.LSX) != 0);
|
|
50
|
+
setFeature(&cpu, .lasx, (hwcap_bits & HWCAP.LASX) != 0);
|
|
47
51
|
|
|
48
|
-
|
|
52
|
+
setFeature(&cpu, .lvz, (hwcap_bits & HWCAP.LVZ) != 0);
|
|
53
|
+
setFeature(&cpu, .lbt, (hwcap_bits & HWCAP.LBT_X86) != 0 and (hwcap_bits & HWCAP.LBT_ARM) != 0 and (hwcap_bits & HWCAP.LBT_MIPS) != 0);
|
|
54
|
+
} else {
|
|
55
|
+
setFeature(&cpu, .ual, false);
|
|
56
|
+
|
|
57
|
+
setFeature(&cpu, .f, false);
|
|
58
|
+
setFeature(&cpu, .d, false);
|
|
59
|
+
setFeature(&cpu, .lsx, false);
|
|
60
|
+
setFeature(&cpu, .lasx, false);
|
|
61
|
+
|
|
62
|
+
setFeature(&cpu, .lvz, false);
|
|
63
|
+
setFeature(&cpu, .lbt, false);
|
|
64
|
+
}
|
|
49
65
|
|
|
50
66
|
setFeature(&cpu, .frecipe, bit(cfg2, 25));
|
|
51
67
|
setFeature(&cpu, .div32, bit(cfg2, 26));
|
package/std/zig/system.zig
CHANGED
|
@@ -460,6 +460,10 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target {
|
|
|
460
460
|
if (result.cpu.arch.isArm() and result.abi.float() == .soft) {
|
|
461
461
|
result.cpu.features.removeFeature(@intFromEnum(Target.arm.Feature.vfp2));
|
|
462
462
|
}
|
|
463
|
+
|
|
464
|
+
if (result.cpu.arch.isXtensa() and result.abi == .call0) {
|
|
465
|
+
result.cpu.features.removeFeature(@intFromEnum(Target.xtensa.Feature.windowed));
|
|
466
|
+
}
|
|
463
467
|
}
|
|
464
468
|
|
|
465
469
|
// It's possible that we detect the native ABI, but fail to detect the OS version or were told
|
package/zig.h
CHANGED
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
|
|
22
22
|
#if defined(__aarch64__) || (defined(zig_msvc) && defined(_M_ARM64))
|
|
23
23
|
#define zig_aarch64
|
|
24
|
+
#elif defined(__alpha__)
|
|
25
|
+
#define zig_alpha
|
|
24
26
|
#elif defined(__thumb__) || (defined(zig_msvc) && defined(_M_ARM))
|
|
25
27
|
#define zig_thumb
|
|
26
28
|
#define zig_arm
|
|
@@ -36,6 +38,10 @@
|
|
|
36
38
|
#elif defined(__loongarch64)
|
|
37
39
|
#define zig_loongarch64
|
|
38
40
|
#define zig_loongarch
|
|
41
|
+
#elif defined(__m68k__)
|
|
42
|
+
#define zig_m68k
|
|
43
|
+
#elif defined(__m88k__)
|
|
44
|
+
#define zig_m88k
|
|
39
45
|
#elif defined(__mips64)
|
|
40
46
|
#define zig_mips64
|
|
41
47
|
#define zig_mips
|
|
@@ -79,6 +85,8 @@
|
|
|
79
85
|
#elif defined(__I86__)
|
|
80
86
|
#define zig_x86_16
|
|
81
87
|
#define zig_x86
|
|
88
|
+
#elif defined(__xtensa__)
|
|
89
|
+
#define zig_xtensa
|
|
82
90
|
#elif defined (__ez80)
|
|
83
91
|
#define zig_ez80
|
|
84
92
|
#define zig_z80
|
|
@@ -390,7 +398,9 @@
|
|
|
390
398
|
|
|
391
399
|
#elif defined(zig_gnuc_asm)
|
|
392
400
|
|
|
393
|
-
#if defined(
|
|
401
|
+
#if defined(zig_alpha)
|
|
402
|
+
#define zig_trap() __asm__ volatile("call_pal 0x000000")
|
|
403
|
+
#elif defined(zig_thumb)
|
|
394
404
|
#define zig_trap() __asm__ volatile("udf #0xfe")
|
|
395
405
|
#elif defined(zig_arm) || defined(zig_aarch64)
|
|
396
406
|
#define zig_trap() __asm__ volatile("udf #0xfdee")
|
|
@@ -398,6 +408,10 @@
|
|
|
398
408
|
#define zig_trap() __asm__ volatile("r27:26 = memd(#0xbadc0fee)")
|
|
399
409
|
#elif defined(zig_kvx) || defined(zig_loongarch) || defined(zig_powerpc)
|
|
400
410
|
#define zig_trap() __asm__ volatile(".word 0x0")
|
|
411
|
+
#elif defined(zig_m68k)
|
|
412
|
+
#define zig_trap() __asm__ volatile("illegal")
|
|
413
|
+
#elif defined(zig_m88k)
|
|
414
|
+
#define zig_trap() __asm__ volatile("tb0 0, %%r0, 511")
|
|
401
415
|
#elif defined(zig_mips)
|
|
402
416
|
#define zig_trap() __asm__ volatile(".word 0x3d")
|
|
403
417
|
#elif defined(zig_or1k)
|
|
@@ -412,6 +426,8 @@
|
|
|
412
426
|
#define zig_trap() __asm__ volatile("int $0x3")
|
|
413
427
|
#elif defined(zig_x86)
|
|
414
428
|
#define zig_trap() __asm__ volatile("ud2")
|
|
429
|
+
#elif defined(zig_xtensa)
|
|
430
|
+
#define zig_trap() __asm__ volatile("ill")
|
|
415
431
|
#elif defined(zig_z80)
|
|
416
432
|
#define zig_trap() __asm__ volatile("rst 00h")
|
|
417
433
|
#else
|
|
@@ -428,7 +444,9 @@
|
|
|
428
444
|
#define zig_breakpoint() __debugbreak()
|
|
429
445
|
#elif defined(zig_gnuc_asm)
|
|
430
446
|
|
|
431
|
-
#if defined(
|
|
447
|
+
#if defined(zig_alpha)
|
|
448
|
+
#define zig_breakpoint() __asm__ volatile("call_pal 0x000080")
|
|
449
|
+
#elif defined(zig_arm)
|
|
432
450
|
#define zig_breakpoint() __asm__ volatile("bkpt #0x0")
|
|
433
451
|
#elif defined(zig_aarch64)
|
|
434
452
|
#define zig_breakpoint() __asm__ volatile("brk #0xf000")
|
|
@@ -436,6 +454,8 @@
|
|
|
436
454
|
#define zig_breakpoint() __asm__ volatile("brkpt")
|
|
437
455
|
#elif defined(zig_kvx) || defined(zig_loongarch)
|
|
438
456
|
#define zig_breakpoint() __asm__ volatile("break 0x0")
|
|
457
|
+
#elif defined(zig_m88k)
|
|
458
|
+
#define zig_breakpoint() __asm__ volatile("illop1")
|
|
439
459
|
#elif defined(zig_mips)
|
|
440
460
|
#define zig_breakpoint() __asm__ volatile("break")
|
|
441
461
|
#elif defined(zig_or1k)
|
|
@@ -450,6 +470,8 @@
|
|
|
450
470
|
#define zig_breakpoint() __asm__ volatile("ta 0x1")
|
|
451
471
|
#elif defined(zig_x86)
|
|
452
472
|
#define zig_breakpoint() __asm__ volatile("int $0x3")
|
|
473
|
+
#elif defined(zig_xtensa)
|
|
474
|
+
#define zig_breakpoint() __asm__ volatile("break 1, 1")
|
|
453
475
|
#else
|
|
454
476
|
#define zig_breakpoint() zig_breakpoint_unavailable
|
|
455
477
|
#endif
|