Add amd64syscall calling convention definition ##anal (#18074)

* Call convention support for x86-64 kernel interface (syscall) %rdi, %rsi, %rdx, %r10, %r8, %r9

Co-authored-by: Dreg <dreg@fr33project.org>
Co-authored-by: pancake <pancake@nopcode.org>
This commit is contained in:
pancake 2020-12-20 22:46:19 +01:00 committed by GitHub
parent 8c742b28f0
commit 625138aa97
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 31 additions and 15 deletions

View File

@ -37,3 +37,12 @@ cc.swift.arg10=xmm4
cc.swift.self=r13
cc.swift.error=r12
cc.swift.ret=rax
amd64syscall=cc
cc.amd64syscall.arg0=rdi
cc.amd64syscall.arg1=rsi
cc.amd64syscall.arg2=rdx
cc.amd64syscall.arg3=r10
cc.amd64syscall.arg4=r8
cc.amd64syscall.arg5=r9
cc.amd64syscall.ret=rax

View File

@ -7,9 +7,10 @@ e asm.bits = 64
afcl
EOF
EXPECT=<<EOF
ms
amd64
swift
amd64
amd64syscall
ms
reg
EOF
RUN

View File

@ -90,15 +90,17 @@ tcc `arcc`
afcl
EOF
EXPECT=<<EOF
ms
amd64
swift
amd64
amd64syscall
ms
reg
r0 reg(r0, r1, r2, r3)
rdi reg(rdi, rsi, rdx, rcx)
ms
amd64
swift
amd64
amd64syscall
ms
reg
EOF
RUN

View File

@ -6,9 +6,10 @@ tcc-*
tcc
EOF
EXPECT=<<EOF
ms
amd64
swift
amd64
amd64syscall
ms
reg
EOF
RUN
@ -17,9 +18,10 @@ NAME=tcc
FILE=bins/elf/ls
CMDS=tcc
EXPECT=<<EOF
ms
amd64
swift
amd64
amd64syscall
ms
reg
EOF
RUN
@ -32,14 +34,16 @@ tccl
tcc*
EOF
EXPECT=<<EOF
["rax ms (rcx, rdx, r8, r9, stack);","rax amd64 (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4);","rax r13.swift (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4) r12;","rdi reg (rdi, rsi, rdx, rcx);"]
rax ms (rcx, rdx, r8, r9, stack);
rax amd64 (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4);
["rax r13.swift (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4) r12;","rax amd64 (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4);","rax amd64syscall (rdi, rsi, rdx, r10, r8, r9);","rax ms (rcx, rdx, r8, r9, stack);","rdi reg (rdi, rsi, rdx, rcx);"]
rax r13.swift (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4) r12;
rax amd64 (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4);
rax amd64syscall (rdi, rsi, rdx, r10, r8, r9);
rax ms (rcx, rdx, r8, r9, stack);
rdi reg (rdi, rsi, rdx, rcx);
tfc rax ms (rcx, rdx, r8, r9, stack);
tfc rax amd64 (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4);
tfc rax r13.swift (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4) r12;
tfc rax amd64 (rdi, rsi, rdx, rcx, r8, r9, xmm0, xmm1, xmm2, xmm3, xmm4);
tfc rax amd64syscall (rdi, rsi, rdx, r10, r8, r9);
tfc rax ms (rcx, rdx, r8, r9, stack);
tfc rdi reg (rdi, rsi, rdx, rcx);
EOF
RUN