summaryrefslogtreecommitdiffstats
path: root/usr/klibc/arch/m68k/openat.S
diff options
context:
space:
mode:
Diffstat (limited to 'usr/klibc/arch/m68k/openat.S')
-rw-r--r--usr/klibc/arch/m68k/openat.S26
1 files changed, 26 insertions, 0 deletions
diff --git a/usr/klibc/arch/m68k/openat.S b/usr/klibc/arch/m68k/openat.S
new file mode 100644
index 0000000..25d8a1a
--- /dev/null
+++ b/usr/klibc/arch/m68k/openat.S
@@ -0,0 +1,26 @@
+/*
+ * arch/m68k/openat.S
+ *
+ * Handle the openat() system call - oddball due to the varadic
+ * prototype, which forces the use of the cdecl calling convention,
+ * and the need for O_LARGEFILE.
+ */
+
+#include <asm/unistd.h>
+
+/* <asm/fcntl.h>, despite the name, isn't assembly-safe */
+#define O_LARGEFILE 0400000
+
+#ifdef __NR_openat /* Don't build if kernel headers too old */
+
+ .globl openat
+ .type openat,@function
+
+openat:
+ or.l # O_LARGEFILE, 12(%sp)
+ move.l # __NR_openat, %d0
+ br __syscall_common
+
+ .size openat,.-openat
+
+#endif