aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2024-01-05 18:33:37 +0000
committerBrooks Davis <brooks@FreeBSD.org>2024-02-05 20:34:56 +0000
commitf21777224411fee14b8aea6d8465bd6c2b318429 (patch)
tree2a6733f7a340a2a8b14c4ac47c6b3b0d3afd9ba3
parent0d4f7723bc43e06ca22025740cb826a7f282ea11 (diff)
downloadsrc-f21777224411fee14b8aea6d8465bd6c2b318429.tar.gz
src-f21777224411fee14b8aea6d8465bd6c2b318429.zip
SYS.h: make _SYSCALL_BODY overridable
Reviewed by: kib, emaste, imp Pull Request: https://github.com/freebsd/freebsd-src/pull/908
-rw-r--r--lib/libsys/aarch64/SYS.h2
-rw-r--r--lib/libsys/amd64/SYS.h2
-rw-r--r--lib/libsys/arm/SYS.h2
-rw-r--r--lib/libsys/i386/SYS.h2
-rw-r--r--lib/libsys/powerpc/SYS.h2
-rw-r--r--lib/libsys/powerpc64/SYS.h2
-rw-r--r--lib/libsys/riscv/SYS.h2
7 files changed, 14 insertions, 0 deletions
diff --git a/lib/libsys/aarch64/SYS.h b/lib/libsys/aarch64/SYS.h
index 07d14ab1bb44..a2ff7af18b18 100644
--- a/lib/libsys/aarch64/SYS.h
+++ b/lib/libsys/aarch64/SYS.h
@@ -34,6 +34,7 @@
mov x8, SYS_ ## name; \
svc 0
+#ifndef _SYSCALL_BODY
/*
* Conditional jumps can only go up to one megabyte in either
* direction, and cerror can be located anywhere, so we have
@@ -45,6 +46,7 @@
b.cs 1f; \
ret; \
1: b cerror
+#endif
#define PSEUDO(name) \
ENTRY(__sys_##name); \
diff --git a/lib/libsys/amd64/SYS.h b/lib/libsys/amd64/SYS.h
index 2dfca1896fcd..e27bb2cf9a93 100644
--- a/lib/libsys/amd64/SYS.h
+++ b/lib/libsys/amd64/SYS.h
@@ -40,10 +40,12 @@
movq %rcx, %r10; \
syscall
+#ifndef _SYSCALL_BODY
#define _SYSCALL_BODY(name) \
_SYSCALL(name); \
jb HIDENAME(cerror); \
ret
+#endif
#define RSYSCALL(name) ENTRY(__sys_##name); \
WEAK_REFERENCE(__sys_##name, name); \
diff --git a/lib/libsys/arm/SYS.h b/lib/libsys/arm/SYS.h
index c3bc78704a16..187851c67543 100644
--- a/lib/libsys/arm/SYS.h
+++ b/lib/libsys/arm/SYS.h
@@ -45,11 +45,13 @@
#define CERROR _C_LABEL(cerror)
+#ifndef _SYSCALL_BODY
#define _SYSCALL_BODY(x) \
_SYSCALL(x); \
it cs; \
bcs PIC_SYM(CERROR, PLT); \
RET
+#endif
#define PSEUDO(x) \
ENTRY(__CONCAT(__sys_, x)); \
diff --git a/lib/libsys/i386/SYS.h b/lib/libsys/i386/SYS.h
index 292b705f80f2..f5e0565452da 100644
--- a/lib/libsys/i386/SYS.h
+++ b/lib/libsys/i386/SYS.h
@@ -39,10 +39,12 @@
mov $SYS_##name, %eax; \
int $0x80
+#ifndef _SYSCALL_BODY
#define _SYSCALL_BODY(name) \
_SYSCALL(name); \
jb HIDENAME(cerror); \
ret
+#endif
#define RSYSCALL(name) ENTRY(__sys_##name); \
WEAK_REFERENCE(__sys_##name, name); \
diff --git a/lib/libsys/powerpc/SYS.h b/lib/libsys/powerpc/SYS.h
index b990793c7e3e..04672ed51528 100644
--- a/lib/libsys/powerpc/SYS.h
+++ b/lib/libsys/powerpc/SYS.h
@@ -40,10 +40,12 @@
li 0,(SYS_##name); \
sc
+#ifndef _SYSCALL_BODY
#define _SYSCALL_BODY(name) \
_SYSCALL(name); \
bnslr; \
b CNAME(HIDENAME(cerror))
+#endif
#define PSEUDO(name) \
.text; \
diff --git a/lib/libsys/powerpc64/SYS.h b/lib/libsys/powerpc64/SYS.h
index bf8bc6cc0e27..ceb85bb4e361 100644
--- a/lib/libsys/powerpc64/SYS.h
+++ b/lib/libsys/powerpc64/SYS.h
@@ -40,6 +40,7 @@
li 0,(SYS_##name); \
sc
+#ifndef _SYSCALL_BODY
#define _SYSCALL_BODY(name) \
_SYSCALL(name); \
bnslr; \
@@ -52,6 +53,7 @@
ld %r0,16(%r1); \
mtlr %r0; \
blr
+#endif
#define PSEUDO(name) \
.text; \
diff --git a/lib/libsys/riscv/SYS.h b/lib/libsys/riscv/SYS.h
index 47c79e38f916..c2d93c567e2b 100644
--- a/lib/libsys/riscv/SYS.h
+++ b/lib/libsys/riscv/SYS.h
@@ -40,12 +40,14 @@
li t0, SYS_ ## name; \
ecall
+#ifndef _SYSCALL_BODY
#define _SYSCALL_BODY(name) \
_SYSCALL(name); \
bnez t0, 1f; \
ret; \
1: la t1, cerror; \
jr t1
+#endif
#define PSEUDO(name) \
ENTRY(__sys_##name); \