]> Zhao Yanbai Git Server - kernel.git/commitdiff
move use syscall code to libc
authorroot <root@ace.laptop>
Fri, 20 Jun 2014 14:59:57 +0000 (22:59 +0800)
committerroot <root@ace.laptop>
Fri, 20 Jun 2014 14:59:57 +0000 (22:59 +0800)
bin/Makefile
kernel/syscall.c
lib/syscall.c [new file with mode: 0644]

index 66e258663d171fabe1cf4f1f4161c32a4b8fd916..a64df42adf4fa18117fd9699326bce7449f2d383 100644 (file)
@@ -3,7 +3,7 @@ CFLAGS = -c -I../include -fno-builtin
 LDOBJS = ../lib/errno.c.o ../lib/fork.c.o ../lib/lib.c.o ../lib/open.c.o \
        ../lib/stat.c.o ../lib/string.c.o ../lib/write.c.o ../lib/exec.c.o \
        ../lib/vsprintf.c.o ../lib/read.c.o \
-       ../lib/keyboard.c.o ../lib/exit.c.o
+       ../lib/keyboard.c.o ../lib/exit.c.o ../lib/syscall.c.o
 all:
        gcc -c shell.S -o shell.S.c.o
        gcc $(CFLAGS) shell.c -o shell.c.o
index eb4be16a0dcdf2b544982608392cf343bafb3b20..52ba90ebf7d42634b0ffc2dde962e1b02f0f9c69 100644 (file)
@@ -84,87 +84,3 @@ int    sysc_bad_syscnr()
     return 0;
 }
 
-
-
-#define SYSENTER_ASM            \
-        "pushl  $1f;"           \
-        "pushl    %%ecx;"       \
-        "pushl    %%edx;"       \
-        "pushl    %%ebp;"       \
-        "movl     %%esp,%%ebp;" \
-        "sysenter;"             \
-        "1:"
-
-static int __syscall0(int nr)
-{
-    int __sysc_ret__ = 0;
-    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr));
-    return __sysc_ret__;
-}
-
-static int __syscall1(int nr, unsigned long a)
-{
-    int __sysc_ret__ = 0;
-    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a));
-    return __sysc_ret__;
-}
-
-static int __syscall2(int nr, unsigned long a, unsigned long b)
-{
-    int __sysc_ret__ = 0;
-    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b));
-    return __sysc_ret__;
-}
-
-static int __syscall3(int nr, unsigned long a, unsigned long b, unsigned long c)
-{
-    int __sysc_ret__ = 0;
-    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b), "d"(c));
-    return __sysc_ret__;
-}
-
-static int __syscall4(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d)
-{
-    int __sysc_ret__ = 0;
-    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b), "d"(c), "S"(d));
-    return __sysc_ret__;
-}
-
-static int __syscall5(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d, unsigned long e)
-{
-    int __sysc_ret__ = 0;
-    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b), "d"(c), "S"(d), "D"(e));
-    return __sysc_ret__;
-}
-
-
-
-int _syscall0(int nr)
-{
-    return __syscall0(nr);
-}
-
-int _syscall1(int nr, unsigned long a)
-{
-    return __syscall1(nr, a);
-}
-
-int _syscall2(int nr, unsigned long a, unsigned long b)
-{
-    return __syscall2(nr, a, b);
-}
-
-int _syscall3(int nr, unsigned long a, unsigned long b, unsigned long c)
-{
-    return __syscall3(nr, a, b, c);
-}
-
-int _syscall4(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d)
-{
-    return __syscall4(nr, a, b, c, d);
-}
-
-int _syscall5(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d, unsigned long e)
-{
-    return __syscall5(nr, a, b, c, d, e);
-}
diff --git a/lib/syscall.c b/lib/syscall.c
new file mode 100644 (file)
index 0000000..d781aa9
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * ------------------------------------------------------------------------
+ *   File Name: syscall.c
+ *      Author: Zhao Yanbai
+ *              Fri Jun 20 22:57:17 2014
+ * Description: none
+ * ------------------------------------------------------------------------
+ */
+
+
+#define SYSENTER_ASM            \
+        "pushl  $1f;"           \
+        "pushl    %%ecx;"       \
+        "pushl    %%edx;"       \
+        "pushl    %%ebp;"       \
+        "movl     %%esp,%%ebp;" \
+        "sysenter;"             \
+        "1:"
+
+static int __syscall0(int nr)
+{
+    int __sysc_ret__ = 0;
+    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr));
+    return __sysc_ret__;
+}
+
+static int __syscall1(int nr, unsigned long a)
+{
+    int __sysc_ret__ = 0;
+    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a));
+    return __sysc_ret__;
+}
+
+static int __syscall2(int nr, unsigned long a, unsigned long b)
+{
+    int __sysc_ret__ = 0;
+    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b));
+    return __sysc_ret__;
+}
+
+static int __syscall3(int nr, unsigned long a, unsigned long b, unsigned long c)
+{
+    int __sysc_ret__ = 0;
+    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b), "d"(c));
+    return __sysc_ret__;
+}
+
+static int __syscall4(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d)
+{
+    int __sysc_ret__ = 0;
+    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b), "d"(c), "S"(d));
+    return __sysc_ret__;
+}
+
+static int __syscall5(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d, unsigned long e)
+{
+    int __sysc_ret__ = 0;
+    asm(SYSENTER_ASM:"=a"(__sysc_ret__):"a"(nr), "b"(a), "c"(b), "d"(c), "S"(d), "D"(e));
+    return __sysc_ret__;
+}
+
+
+
+int _syscall0(int nr)
+{
+    return __syscall0(nr);
+}
+
+int _syscall1(int nr, unsigned long a)
+{
+    return __syscall1(nr, a);
+}
+
+int _syscall2(int nr, unsigned long a, unsigned long b)
+{
+    return __syscall2(nr, a, b);
+}
+
+int _syscall3(int nr, unsigned long a, unsigned long b, unsigned long c)
+{
+    return __syscall3(nr, a, b, c);
+}
+
+int _syscall4(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d)
+{
+    return __syscall4(nr, a, b, c, d);
+}
+
+int _syscall5(int nr, unsigned long a, unsigned long b, unsigned long c, unsigned long d, unsigned long e)
+{
+    return __syscall5(nr, a, b, c, d, e);
+}