diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/targ.cff | 49 |
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; } |