aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/targ.cff49
1 files changed, 47 insertions, 2 deletions
diff --git a/src/targ.cff b/src/targ.cff
index fefd10a..f0d5645 100644
--- a/src/targ.cff
+++ b/src/targ.cff
@@ -12,10 +12,52 @@ static const targs []const Targ = {
.sizesize: 8,
.f64align: 8,
.valistsize: 24, .valistalign: 8,
- .valistllvmty: "{ i32, i32, i8*, i8* }",
+ .valistllvmty: "{ i32, i32, ptr, ptr }",
.charsigned: #t,
.shortenum: #f,
- }
+ },
+ {
+ "amd64-windows",
+ .ptrsize: 8,
+ .intsize: 4,
+ .i64align: 8,
+ .longsize: 4, .longalign: 4,
+ .llongsize: 8, .llongalign: 8,
+ .sizesize: 8,
+ .f64align: 8,
+ .valistsize: 8, .valistalign: 8,
+ .valistllvmty: "ptr",
+ .charsigned: #t,
+ .shortenum: #f,
+ },
+ {
+ "aarch64-sysv",
+ .ptrsize: 8,
+ .intsize: 4,
+ .i64align: 8,
+ .longsize: 8, .longalign: 8,
+ .llongsize: 8, .llongalign: 8,
+ .sizesize: 8,
+ .f64align: 8,
+ .valistsize: 32, .valistalign: 8,
+ .valistllvmty: "{ ptr, ptr, ptr, i32, i32 }",
+ .charsigned: #f,
+ .shortenum: #f,
+ },
+ {
+ "i386-sysv",
+ .ptrsize: 4,
+ .intsize: 4,
+ .i64align: 4,
+ .longsize: 4, .longalign: 4,
+ .llongsize: 8, .llongalign: 4,
+ .sizesize: 4,
+ .f64align: 4,
+ .valistsize: 4, .valistalign: 4,
+ .valistllvmty: "ptr",
+ .charsigned: #t,
+ .shortenum: #f,
+ },
};
extern static g_targ Targ = {};
@@ -40,6 +82,9 @@ extern fn triple2targ(triple *const u8) *const u8 {
defmacro restp(s) [ (strstr(rest, s) != #null) ]
switch {
case archp("x86_64") and !restp("windows"); return "amd64-sysv";
+ case archp("x86_64") and restp("windows"); return "amd64-windows";
+ case archp("aarch64") and !restp("windows"); return "aarch64-sysv";
+ case archp("i386") and !restp("windows"); return "i386-sysv";
}
return #null;
}