Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* sclow.S: Low level special syscall handling. |
2 | * Basically these are cases where we can completely | |
3 | * handle the system call without saving any state | |
4 | * because we know that the process will not sleep. | |
5 | * | |
6 | * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) | |
7 | */ | |
8 | ||
9 | #include <asm/ptrace.h> | |
10 | #include <asm/asm_offsets.h> | |
11 | #include <asm/errno.h> | |
12 | #include <asm/winmacro.h> | |
13 | #include <asm/thread_info.h> | |
14 | #include <asm/psr.h> | |
15 | #include <asm/page.h> | |
16 | ||
17 | #define CC_AND_RETT \ | |
18 | set PSR_C, %l4; \ | |
19 | andn %l0, %l4, %l4; \ | |
20 | wr %l4, 0x0, %psr; \ | |
21 | nop; nop; nop; \ | |
22 | jmp %l2; \ | |
23 | rett %l2 + 4; | |
24 | ||
25 | #define SC_AND_RETT \ | |
26 | set PSR_C, %l4; \ | |
27 | or %l0, %l4, %l4; \ | |
28 | wr %l4, 0x0, %psr; \ | |
29 | nop; nop; nop; \ | |
30 | jmp %l2; \ | |
31 | rett %l2 + 4; | |
32 | ||
33 | #define LABEL(func) func##_low | |
34 | ||
35 | .globl LABEL(sunosnop) | |
36 | LABEL(sunosnop): | |
37 | CC_AND_RETT | |
38 | ||
39 | #if (ASIZ_task_uid == 2 && ASIZ_task_euid == 2) | |
40 | .globl LABEL(sunosgetuid) | |
41 | LABEL(sunosgetuid): | |
42 | LOAD_CURRENT(l4, l5) | |
43 | ld [%l4 + TI_TASK], %l4 | |
44 | lduh [%l4 + AOFF_task_uid], %i0 | |
45 | lduh [%l4 + AOFF_task_euid], %i1 | |
46 | CC_AND_RETT | |
47 | #endif | |
48 | ||
49 | #if (ASIZ_task_gid == 2 && ASIZ_task_egid == 2) | |
50 | .globl LABEL(sunosgetgid) | |
51 | LABEL(sunosgetgid): | |
52 | LOAD_CURRENT(l4, l5) | |
53 | ld [%l4 + TI_TASK], %l4 | |
54 | lduh [%l4 + AOFF_task_gid], %i0 | |
55 | lduh [%l4 + AOFF_task_egid], %i1 | |
56 | CC_AND_RETT | |
57 | #endif | |
58 | ||
59 | .globl LABEL(sunosmctl) | |
60 | LABEL(sunosmctl): | |
61 | mov 0, %i0 | |
62 | CC_AND_RETT | |
63 | ||
64 | .globl LABEL(sunosgdtsize) | |
65 | LABEL(sunosgdtsize): | |
66 | mov 256, %i0 | |
67 | CC_AND_RETT | |
68 | ||
69 | .globl LABEL(getpagesize) | |
70 | LABEL(getpagesize): | |
71 | set PAGE_SIZE, %i0 | |
72 | CC_AND_RETT | |
73 | ||
74 | /* XXX sys_nice() XXX */ | |
75 | /* XXX sys_setpriority() XXX */ | |
76 | /* XXX sys_getpriority() XXX */ | |
77 | /* XXX sys_setregid() XXX */ | |
78 | /* XXX sys_setgid() XXX */ | |
79 | /* XXX sys_setreuid() XXX */ | |
80 | /* XXX sys_setuid() XXX */ | |
81 | /* XXX sys_setfsuid() XXX */ | |
82 | /* XXX sys_setfsgid() XXX */ | |
83 | /* XXX sys_setpgid() XXX */ | |
84 | /* XXX sys_getpgid() XXX */ | |
85 | /* XXX sys_setsid() XXX */ | |
86 | /* XXX sys_getsid() XXX */ |