diff options
50 files changed, 1501 insertions, 2033 deletions
| @@ -3738,7 +3738,7 @@ S: 93149 Nittenau | |||
| 3738 | S: Germany | 3738 | S: Germany |
| 3739 | 3739 | ||
| 3740 | N: Gertjan van Wingerde | 3740 | N: Gertjan van Wingerde |
| 3741 | E: gwingerde@home.nl | 3741 | E: gwingerde@gmail.com |
| 3742 | D: Ralink rt2x00 WLAN driver | 3742 | D: Ralink rt2x00 WLAN driver |
| 3743 | D: Minix V2 file-system | 3743 | D: Minix V2 file-system |
| 3744 | D: Misc fixes | 3744 | D: Misc fixes |
| @@ -566,6 +566,9 @@ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,) | |||
| 566 | # disable pointer signed / unsigned warnings in gcc 4.0 | 566 | # disable pointer signed / unsigned warnings in gcc 4.0 |
| 567 | KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) | 567 | KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,) |
| 568 | 568 | ||
| 569 | # disable invalid "can't wrap" optimzations for signed / pointers | ||
| 570 | KBUILD_CFLAGS += $(call cc-option,-fwrapv) | ||
| 571 | |||
| 569 | # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments | 572 | # Add user supplied CPPFLAGS, AFLAGS and CFLAGS as the last assignments |
| 570 | # But warn user when we do so | 573 | # But warn user when we do so |
| 571 | warn-assign = \ | 574 | warn-assign = \ |
diff --git a/arch/m68k/include/asm/param.h b/arch/m68k/include/asm/param.h index 40d1112a4588..85c41b75aa78 100644 --- a/arch/m68k/include/asm/param.h +++ b/arch/m68k/include/asm/param.h | |||
| @@ -1,5 +1,26 @@ | |||
| 1 | #ifndef _M68K_PARAM_H | ||
| 2 | #define _M68K_PARAM_H | ||
| 3 | |||
| 4 | #ifdef __KERNEL__ | ||
| 5 | # define HZ CONFIG_HZ /* Internal kernel timer frequency */ | ||
| 6 | # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ | ||
| 7 | # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ | ||
| 8 | #endif | ||
| 9 | |||
| 10 | #ifndef HZ | ||
| 11 | #define HZ 100 | ||
| 12 | #endif | ||
| 13 | |||
| 1 | #ifdef __uClinux__ | 14 | #ifdef __uClinux__ |
| 2 | #include "param_no.h" | 15 | #define EXEC_PAGESIZE 4096 |
| 3 | #else | 16 | #else |
| 4 | #include "param_mm.h" | 17 | #define EXEC_PAGESIZE 8192 |
| 18 | #endif | ||
| 19 | |||
| 20 | #ifndef NOGROUP | ||
| 21 | #define NOGROUP (-1) | ||
| 5 | #endif | 22 | #endif |
| 23 | |||
| 24 | #define MAXHOSTNAMELEN 64 /* max length of hostname */ | ||
| 25 | |||
| 26 | #endif /* _M68K_PARAM_H */ | ||
diff --git a/arch/m68k/include/asm/param_mm.h b/arch/m68k/include/asm/param_mm.h deleted file mode 100644 index 536a27888358..000000000000 --- a/arch/m68k/include/asm/param_mm.h +++ /dev/null | |||
| @@ -1,22 +0,0 @@ | |||
| 1 | #ifndef _M68K_PARAM_H | ||
| 2 | #define _M68K_PARAM_H | ||
| 3 | |||
| 4 | #ifdef __KERNEL__ | ||
| 5 | # define HZ CONFIG_HZ /* Internal kernel timer frequency */ | ||
| 6 | # define USER_HZ 100 /* .. some user interfaces are in "ticks" */ | ||
| 7 | # define CLOCKS_PER_SEC (USER_HZ) /* like times() */ | ||
| 8 | #endif | ||
| 9 | |||
| 10 | #ifndef HZ | ||
| 11 | #define HZ 100 | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #define EXEC_PAGESIZE 8192 | ||
| 15 | |||
| 16 | #ifndef NOGROUP | ||
| 17 | #define NOGROUP (-1) | ||
| 18 | #endif | ||
| 19 | |||
| 20 | #define MAXHOSTNAMELEN 64 /* max length of hostname */ | ||
| 21 | |||
| 22 | #endif /* _M68K_PARAM_H */ | ||
diff --git a/arch/m68k/include/asm/param_no.h b/arch/m68k/include/asm/param_no.h deleted file mode 100644 index 6044397adb64..000000000000 --- a/arch/m68k/include/asm/param_no.h +++ /dev/null | |||
| @@ -1,22 +0,0 @@ | |||
| 1 | #ifndef _M68KNOMMU_PARAM_H | ||
| 2 | #define _M68KNOMMU_PARAM_H | ||
| 3 | |||
| 4 | #ifdef __KERNEL__ | ||
| 5 | #define HZ CONFIG_HZ | ||
| 6 | #define USER_HZ HZ | ||
| 7 | #define CLOCKS_PER_SEC (USER_HZ) | ||
| 8 | #endif | ||
| 9 | |||
| 10 | #ifndef HZ | ||
| 11 | #define HZ 100 | ||
| 12 | #endif | ||
| 13 | |||
| 14 | #define EXEC_PAGESIZE 4096 | ||
| 15 | |||
| 16 | #ifndef NOGROUP | ||
| 17 | #define NOGROUP (-1) | ||
| 18 | #endif | ||
| 19 | |||
| 20 | #define MAXHOSTNAMELEN 64 /* max length of hostname */ | ||
| 21 | |||
| 22 | #endif /* _M68KNOMMU_PARAM_H */ | ||
diff --git a/arch/m68k/include/asm/ptrace.h b/arch/m68k/include/asm/ptrace.h index e83cd2f66101..8c9194b98548 100644 --- a/arch/m68k/include/asm/ptrace.h +++ b/arch/m68k/include/asm/ptrace.h | |||
| @@ -1,5 +1,87 @@ | |||
| 1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_PTRACE_H |
| 2 | #include "ptrace_no.h" | 2 | #define _M68K_PTRACE_H |
| 3 | |||
| 4 | #define PT_D1 0 | ||
| 5 | #define PT_D2 1 | ||
| 6 | #define PT_D3 2 | ||
| 7 | #define PT_D4 3 | ||
| 8 | #define PT_D5 4 | ||
| 9 | #define PT_D6 5 | ||
| 10 | #define PT_D7 6 | ||
| 11 | #define PT_A0 7 | ||
| 12 | #define PT_A1 8 | ||
| 13 | #define PT_A2 9 | ||
| 14 | #define PT_A3 10 | ||
| 15 | #define PT_A4 11 | ||
| 16 | #define PT_A5 12 | ||
| 17 | #define PT_A6 13 | ||
| 18 | #define PT_D0 14 | ||
| 19 | #define PT_USP 15 | ||
| 20 | #define PT_ORIG_D0 16 | ||
| 21 | #define PT_SR 17 | ||
| 22 | #define PT_PC 18 | ||
| 23 | |||
| 24 | #ifndef __ASSEMBLY__ | ||
| 25 | |||
| 26 | /* this struct defines the way the registers are stored on the | ||
| 27 | stack during a system call. */ | ||
| 28 | |||
| 29 | struct pt_regs { | ||
| 30 | long d1; | ||
| 31 | long d2; | ||
| 32 | long d3; | ||
| 33 | long d4; | ||
| 34 | long d5; | ||
| 35 | long a0; | ||
| 36 | long a1; | ||
| 37 | long a2; | ||
| 38 | long d0; | ||
| 39 | long orig_d0; | ||
| 40 | long stkadj; | ||
| 41 | #ifdef CONFIG_COLDFIRE | ||
| 42 | unsigned format : 4; /* frame format specifier */ | ||
| 43 | unsigned vector : 12; /* vector offset */ | ||
| 44 | unsigned short sr; | ||
| 45 | unsigned long pc; | ||
| 3 | #else | 46 | #else |
| 4 | #include "ptrace_mm.h" | 47 | unsigned short sr; |
| 48 | unsigned long pc; | ||
| 49 | unsigned format : 4; /* frame format specifier */ | ||
| 50 | unsigned vector : 12; /* vector offset */ | ||
| 5 | #endif | 51 | #endif |
| 52 | }; | ||
| 53 | |||
| 54 | /* | ||
| 55 | * This is the extended stack used by signal handlers and the context | ||
| 56 | * switcher: it's pushed after the normal "struct pt_regs". | ||
| 57 | */ | ||
| 58 | struct switch_stack { | ||
| 59 | unsigned long d6; | ||
| 60 | unsigned long d7; | ||
| 61 | unsigned long a3; | ||
| 62 | unsigned long a4; | ||
| 63 | unsigned long a5; | ||
| 64 | unsigned long a6; | ||
| 65 | unsigned long retpc; | ||
| 66 | }; | ||
| 67 | |||
| 68 | /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ | ||
| 69 | #define PTRACE_GETREGS 12 | ||
| 70 | #define PTRACE_SETREGS 13 | ||
| 71 | #define PTRACE_GETFPREGS 14 | ||
| 72 | #define PTRACE_SETFPREGS 15 | ||
| 73 | |||
| 74 | #ifdef __KERNEL__ | ||
| 75 | |||
| 76 | #ifndef PS_S | ||
| 77 | #define PS_S (0x2000) | ||
| 78 | #define PS_M (0x1000) | ||
| 79 | #endif | ||
| 80 | |||
| 81 | #define user_mode(regs) (!((regs)->sr & PS_S)) | ||
| 82 | #define instruction_pointer(regs) ((regs)->pc) | ||
| 83 | #define profile_pc(regs) instruction_pointer(regs) | ||
| 84 | extern void show_regs(struct pt_regs *); | ||
| 85 | #endif /* __KERNEL__ */ | ||
| 86 | #endif /* __ASSEMBLY__ */ | ||
| 87 | #endif /* _M68K_PTRACE_H */ | ||
diff --git a/arch/m68k/include/asm/ptrace_mm.h b/arch/m68k/include/asm/ptrace_mm.h deleted file mode 100644 index 57e763d79bf4..000000000000 --- a/arch/m68k/include/asm/ptrace_mm.h +++ /dev/null | |||
| @@ -1,80 +0,0 @@ | |||
| 1 | #ifndef _M68K_PTRACE_H | ||
| 2 | #define _M68K_PTRACE_H | ||
| 3 | |||
| 4 | #define PT_D1 0 | ||
| 5 | #define PT_D2 1 | ||
| 6 | #define PT_D3 2 | ||
| 7 | #define PT_D4 3 | ||
| 8 | #define PT_D5 4 | ||
| 9 | #define PT_D6 5 | ||
| 10 | #define PT_D7 6 | ||
| 11 | #define PT_A0 7 | ||
| 12 | #define PT_A1 8 | ||
| 13 | #define PT_A2 9 | ||
| 14 | #define PT_A3 10 | ||
| 15 | #define PT_A4 11 | ||
| 16 | #define PT_A5 12 | ||
| 17 | #define PT_A6 13 | ||
| 18 | #define PT_D0 14 | ||
| 19 | #define PT_USP 15 | ||
| 20 | #define PT_ORIG_D0 16 | ||
| 21 | #define PT_SR 17 | ||
| 22 | #define PT_PC 18 | ||
| 23 | |||
| 24 | #ifndef __ASSEMBLY__ | ||
| 25 | |||
| 26 | /* this struct defines the way the registers are stored on the | ||
| 27 | stack during a system call. */ | ||
| 28 | |||
| 29 | struct pt_regs { | ||
| 30 | long d1; | ||
| 31 | long d2; | ||
| 32 | long d3; | ||
| 33 | long d4; | ||
| 34 | long d5; | ||
| 35 | long a0; | ||
| 36 | long a1; | ||
| 37 | long a2; | ||
| 38 | long d0; | ||
| 39 | long orig_d0; | ||
| 40 | long stkadj; | ||
| 41 | unsigned short sr; | ||
| 42 | unsigned long pc; | ||
| 43 | unsigned format : 4; /* frame format specifier */ | ||
| 44 | unsigned vector : 12; /* vector offset */ | ||
| 45 | }; | ||
| 46 | |||
| 47 | /* | ||
| 48 | * This is the extended stack used by signal handlers and the context | ||
| 49 | * switcher: it's pushed after the normal "struct pt_regs". | ||
| 50 | */ | ||
| 51 | struct switch_stack { | ||
| 52 | unsigned long d6; | ||
| 53 | unsigned long d7; | ||
| 54 | unsigned long a3; | ||
| 55 | unsigned long a4; | ||
| 56 | unsigned long a5; | ||
| 57 | unsigned long a6; | ||
| 58 | unsigned long retpc; | ||
| 59 | }; | ||
| 60 | |||
| 61 | /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ | ||
| 62 | #define PTRACE_GETREGS 12 | ||
| 63 | #define PTRACE_SETREGS 13 | ||
| 64 | #define PTRACE_GETFPREGS 14 | ||
| 65 | #define PTRACE_SETFPREGS 15 | ||
| 66 | |||
| 67 | #ifdef __KERNEL__ | ||
| 68 | |||
| 69 | #ifndef PS_S | ||
| 70 | #define PS_S (0x2000) | ||
| 71 | #define PS_M (0x1000) | ||
| 72 | #endif | ||
| 73 | |||
| 74 | #define user_mode(regs) (!((regs)->sr & PS_S)) | ||
| 75 | #define instruction_pointer(regs) ((regs)->pc) | ||
| 76 | #define profile_pc(regs) instruction_pointer(regs) | ||
| 77 | extern void show_regs(struct pt_regs *); | ||
| 78 | #endif /* __KERNEL__ */ | ||
| 79 | #endif /* __ASSEMBLY__ */ | ||
| 80 | #endif /* _M68K_PTRACE_H */ | ||
diff --git a/arch/m68k/include/asm/ptrace_no.h b/arch/m68k/include/asm/ptrace_no.h deleted file mode 100644 index 8c9194b98548..000000000000 --- a/arch/m68k/include/asm/ptrace_no.h +++ /dev/null | |||
| @@ -1,87 +0,0 @@ | |||
| 1 | #ifndef _M68K_PTRACE_H | ||
| 2 | #define _M68K_PTRACE_H | ||
| 3 | |||
| 4 | #define PT_D1 0 | ||
| 5 | #define PT_D2 1 | ||
| 6 | #define PT_D3 2 | ||
| 7 | #define PT_D4 3 | ||
| 8 | #define PT_D5 4 | ||
| 9 | #define PT_D6 5 | ||
| 10 | #define PT_D7 6 | ||
| 11 | #define PT_A0 7 | ||
| 12 | #define PT_A1 8 | ||
| 13 | #define PT_A2 9 | ||
| 14 | #define PT_A3 10 | ||
| 15 | #define PT_A4 11 | ||
| 16 | #define PT_A5 12 | ||
| 17 | #define PT_A6 13 | ||
| 18 | #define PT_D0 14 | ||
| 19 | #define PT_USP 15 | ||
| 20 | #define PT_ORIG_D0 16 | ||
| 21 | #define PT_SR 17 | ||
| 22 | #define PT_PC 18 | ||
| 23 | |||
| 24 | #ifndef __ASSEMBLY__ | ||
| 25 | |||
| 26 | /* this struct defines the way the registers are stored on the | ||
| 27 | stack during a system call. */ | ||
| 28 | |||
| 29 | struct pt_regs { | ||
| 30 | long d1; | ||
| 31 | long d2; | ||
| 32 | long d3; | ||
| 33 | long d4; | ||
| 34 | long d5; | ||
| 35 | long a0; | ||
| 36 | long a1; | ||
| 37 | long a2; | ||
| 38 | long d0; | ||
| 39 | long orig_d0; | ||
| 40 | long stkadj; | ||
| 41 | #ifdef CONFIG_COLDFIRE | ||
| 42 | unsigned format : 4; /* frame format specifier */ | ||
| 43 | unsigned vector : 12; /* vector offset */ | ||
| 44 | unsigned short sr; | ||
| 45 | unsigned long pc; | ||
| 46 | #else | ||
| 47 | unsigned short sr; | ||
| 48 | unsigned long pc; | ||
| 49 | unsigned format : 4; /* frame format specifier */ | ||
| 50 | unsigned vector : 12; /* vector offset */ | ||
| 51 | #endif | ||
| 52 | }; | ||
| 53 | |||
| 54 | /* | ||
| 55 | * This is the extended stack used by signal handlers and the context | ||
| 56 | * switcher: it's pushed after the normal "struct pt_regs". | ||
| 57 | */ | ||
| 58 | struct switch_stack { | ||
| 59 | unsigned long d6; | ||
| 60 | unsigned long d7; | ||
| 61 | unsigned long a3; | ||
| 62 | unsigned long a4; | ||
| 63 | unsigned long a5; | ||
| 64 | unsigned long a6; | ||
| 65 | unsigned long retpc; | ||
| 66 | }; | ||
| 67 | |||
| 68 | /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */ | ||
| 69 | #define PTRACE_GETREGS 12 | ||
| 70 | #define PTRACE_SETREGS 13 | ||
| 71 | #define PTRACE_GETFPREGS 14 | ||
| 72 | #define PTRACE_SETFPREGS 15 | ||
| 73 | |||
| 74 | #ifdef __KERNEL__ | ||
| 75 | |||
| 76 | #ifndef PS_S | ||
| 77 | #define PS_S (0x2000) | ||
| 78 | #define PS_M (0x1000) | ||
| 79 | #endif | ||
| 80 | |||
| 81 | #define user_mode(regs) (!((regs)->sr & PS_S)) | ||
| 82 | #define instruction_pointer(regs) ((regs)->pc) | ||
| 83 | #define profile_pc(regs) instruction_pointer(regs) | ||
| 84 | extern void show_regs(struct pt_regs *); | ||
| 85 | #endif /* __KERNEL__ */ | ||
| 86 | #endif /* __ASSEMBLY__ */ | ||
| 87 | #endif /* _M68K_PTRACE_H */ | ||
diff --git a/arch/m68k/include/asm/setup.h b/arch/m68k/include/asm/setup.h index 842f86f75ccd..4dfb3952b375 100644 --- a/arch/m68k/include/asm/setup.h +++ b/arch/m68k/include/asm/setup.h | |||
| @@ -1,5 +1,376 @@ | |||
| 1 | #ifdef __uClinux__ | 1 | /* |
| 2 | #include "setup_no.h" | 2 | ** asm/setup.h -- Definition of the Linux/m68k setup information |
| 3 | ** | ||
| 4 | ** Copyright 1992 by Greg Harp | ||
| 5 | ** | ||
| 6 | ** This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | ** License. See the file COPYING in the main directory of this archive | ||
| 8 | ** for more details. | ||
| 9 | ** | ||
| 10 | ** Created 09/29/92 by Greg Harp | ||
| 11 | ** | ||
| 12 | ** 5/2/94 Roman Hodek: | ||
| 13 | ** Added bi_atari part of the machine dependent union bi_un; for now it | ||
| 14 | ** contains just a model field to distinguish between TT and Falcon. | ||
| 15 | ** 26/7/96 Roman Zippel: | ||
| 16 | ** Renamed to setup.h; added some useful macros to allow gcc some | ||
| 17 | ** optimizations if possible. | ||
| 18 | ** 5/10/96 Geert Uytterhoeven: | ||
| 19 | ** Redesign of the boot information structure; moved boot information | ||
| 20 | ** structure to bootinfo.h | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef _M68K_SETUP_H | ||
| 24 | #define _M68K_SETUP_H | ||
| 25 | |||
| 26 | |||
| 27 | |||
| 28 | /* | ||
| 29 | * Linux/m68k Architectures | ||
| 30 | */ | ||
| 31 | |||
| 32 | #define MACH_AMIGA 1 | ||
| 33 | #define MACH_ATARI 2 | ||
| 34 | #define MACH_MAC 3 | ||
| 35 | #define MACH_APOLLO 4 | ||
| 36 | #define MACH_SUN3 5 | ||
| 37 | #define MACH_MVME147 6 | ||
| 38 | #define MACH_MVME16x 7 | ||
| 39 | #define MACH_BVME6000 8 | ||
| 40 | #define MACH_HP300 9 | ||
| 41 | #define MACH_Q40 10 | ||
| 42 | #define MACH_SUN3X 11 | ||
| 43 | |||
| 44 | #define COMMAND_LINE_SIZE 256 | ||
| 45 | |||
| 46 | #ifdef __KERNEL__ | ||
| 47 | |||
| 48 | #define CL_SIZE COMMAND_LINE_SIZE | ||
| 49 | |||
| 50 | #ifndef __ASSEMBLY__ | ||
| 51 | extern unsigned long m68k_machtype; | ||
| 52 | #endif /* !__ASSEMBLY__ */ | ||
| 53 | |||
| 54 | #if !defined(CONFIG_AMIGA) | ||
| 55 | # define MACH_IS_AMIGA (0) | ||
| 56 | #elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \ | ||
| 57 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 58 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 59 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 60 | # define MACH_IS_AMIGA (m68k_machtype == MACH_AMIGA) | ||
| 3 | #else | 61 | #else |
| 4 | #include "setup_mm.h" | 62 | # define MACH_AMIGA_ONLY |
| 63 | # define MACH_IS_AMIGA (1) | ||
| 64 | # define MACH_TYPE (MACH_AMIGA) | ||
| 5 | #endif | 65 | #endif |
| 66 | |||
| 67 | #if !defined(CONFIG_ATARI) | ||
| 68 | # define MACH_IS_ATARI (0) | ||
| 69 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \ | ||
| 70 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 71 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 72 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 73 | # define MACH_IS_ATARI (m68k_machtype == MACH_ATARI) | ||
| 74 | #else | ||
| 75 | # define MACH_ATARI_ONLY | ||
| 76 | # define MACH_IS_ATARI (1) | ||
| 77 | # define MACH_TYPE (MACH_ATARI) | ||
| 78 | #endif | ||
| 79 | |||
| 80 | #if !defined(CONFIG_MAC) | ||
| 81 | # define MACH_IS_MAC (0) | ||
| 82 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_ATARI) || defined(CONFIG_APOLLO) \ | ||
| 83 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 84 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 85 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 86 | # define MACH_IS_MAC (m68k_machtype == MACH_MAC) | ||
| 87 | #else | ||
| 88 | # define MACH_MAC_ONLY | ||
| 89 | # define MACH_IS_MAC (1) | ||
| 90 | # define MACH_TYPE (MACH_MAC) | ||
| 91 | #endif | ||
| 92 | |||
| 93 | #if defined(CONFIG_SUN3) | ||
| 94 | #define MACH_IS_SUN3 (1) | ||
| 95 | #define MACH_SUN3_ONLY (1) | ||
| 96 | #define MACH_TYPE (MACH_SUN3) | ||
| 97 | #else | ||
| 98 | #define MACH_IS_SUN3 (0) | ||
| 99 | #endif | ||
| 100 | |||
| 101 | #if !defined (CONFIG_APOLLO) | ||
| 102 | # define MACH_IS_APOLLO (0) | ||
| 103 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 104 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 105 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 106 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 107 | # define MACH_IS_APOLLO (m68k_machtype == MACH_APOLLO) | ||
| 108 | #else | ||
| 109 | # define MACH_APOLLO_ONLY | ||
| 110 | # define MACH_IS_APOLLO (1) | ||
| 111 | # define MACH_TYPE (MACH_APOLLO) | ||
| 112 | #endif | ||
| 113 | |||
| 114 | #if !defined (CONFIG_MVME147) | ||
| 115 | # define MACH_IS_MVME147 (0) | ||
| 116 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 117 | || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \ | ||
| 118 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 119 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME16x) | ||
| 120 | # define MACH_IS_MVME147 (m68k_machtype == MACH_MVME147) | ||
| 121 | #else | ||
| 122 | # define MACH_MVME147_ONLY | ||
| 123 | # define MACH_IS_MVME147 (1) | ||
| 124 | # define MACH_TYPE (MACH_MVME147) | ||
| 125 | #endif | ||
| 126 | |||
| 127 | #if !defined (CONFIG_MVME16x) | ||
| 128 | # define MACH_IS_MVME16x (0) | ||
| 129 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 130 | || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \ | ||
| 131 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 132 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 133 | # define MACH_IS_MVME16x (m68k_machtype == MACH_MVME16x) | ||
| 134 | #else | ||
| 135 | # define MACH_MVME16x_ONLY | ||
| 136 | # define MACH_IS_MVME16x (1) | ||
| 137 | # define MACH_TYPE (MACH_MVME16x) | ||
| 138 | #endif | ||
| 139 | |||
| 140 | #if !defined (CONFIG_BVME6000) | ||
| 141 | # define MACH_IS_BVME6000 (0) | ||
| 142 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 143 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 144 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 145 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 146 | # define MACH_IS_BVME6000 (m68k_machtype == MACH_BVME6000) | ||
| 147 | #else | ||
| 148 | # define MACH_BVME6000_ONLY | ||
| 149 | # define MACH_IS_BVME6000 (1) | ||
| 150 | # define MACH_TYPE (MACH_BVME6000) | ||
| 151 | #endif | ||
| 152 | |||
| 153 | #if !defined (CONFIG_HP300) | ||
| 154 | # define MACH_IS_HP300 (0) | ||
| 155 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 156 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 157 | || defined(CONFIG_BVME6000) || defined(CONFIG_Q40) \ | ||
| 158 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 159 | # define MACH_IS_HP300 (m68k_machtype == MACH_HP300) | ||
| 160 | #else | ||
| 161 | # define MACH_HP300_ONLY | ||
| 162 | # define MACH_IS_HP300 (1) | ||
| 163 | # define MACH_TYPE (MACH_HP300) | ||
| 164 | #endif | ||
| 165 | |||
| 166 | #if !defined (CONFIG_Q40) | ||
| 167 | # define MACH_IS_Q40 (0) | ||
| 168 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 169 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 170 | || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \ | ||
| 171 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 172 | # define MACH_IS_Q40 (m68k_machtype == MACH_Q40) | ||
| 173 | #else | ||
| 174 | # define MACH_Q40_ONLY | ||
| 175 | # define MACH_IS_Q40 (1) | ||
| 176 | # define MACH_TYPE (MACH_Q40) | ||
| 177 | #endif | ||
| 178 | |||
| 179 | #if !defined (CONFIG_SUN3X) | ||
| 180 | # define MACH_IS_SUN3X (0) | ||
| 181 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 182 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 183 | || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \ | ||
| 184 | || defined(CONFIG_Q40) || defined(CONFIG_MVME147) | ||
| 185 | # define MACH_IS_SUN3X (m68k_machtype == MACH_SUN3X) | ||
| 186 | #else | ||
| 187 | # define CONFIG_SUN3X_ONLY | ||
| 188 | # define MACH_IS_SUN3X (1) | ||
| 189 | # define MACH_TYPE (MACH_SUN3X) | ||
| 190 | #endif | ||
| 191 | |||
| 192 | #ifndef MACH_TYPE | ||
| 193 | # define MACH_TYPE (m68k_machtype) | ||
| 194 | #endif | ||
| 195 | |||
| 196 | #endif /* __KERNEL__ */ | ||
| 197 | |||
| 198 | |||
| 199 | /* | ||
| 200 | * CPU, FPU and MMU types | ||
| 201 | * | ||
| 202 | * Note: we may rely on the following equalities: | ||
| 203 | * | ||
| 204 | * CPU_68020 == MMU_68851 | ||
| 205 | * CPU_68030 == MMU_68030 | ||
| 206 | * CPU_68040 == FPU_68040 == MMU_68040 | ||
| 207 | * CPU_68060 == FPU_68060 == MMU_68060 | ||
| 208 | */ | ||
| 209 | |||
| 210 | #define CPUB_68020 0 | ||
| 211 | #define CPUB_68030 1 | ||
| 212 | #define CPUB_68040 2 | ||
| 213 | #define CPUB_68060 3 | ||
| 214 | |||
| 215 | #define CPU_68020 (1<<CPUB_68020) | ||
| 216 | #define CPU_68030 (1<<CPUB_68030) | ||
| 217 | #define CPU_68040 (1<<CPUB_68040) | ||
| 218 | #define CPU_68060 (1<<CPUB_68060) | ||
| 219 | |||
| 220 | #define FPUB_68881 0 | ||
| 221 | #define FPUB_68882 1 | ||
| 222 | #define FPUB_68040 2 /* Internal FPU */ | ||
| 223 | #define FPUB_68060 3 /* Internal FPU */ | ||
| 224 | #define FPUB_SUNFPA 4 /* Sun-3 FPA */ | ||
| 225 | |||
| 226 | #define FPU_68881 (1<<FPUB_68881) | ||
| 227 | #define FPU_68882 (1<<FPUB_68882) | ||
| 228 | #define FPU_68040 (1<<FPUB_68040) | ||
| 229 | #define FPU_68060 (1<<FPUB_68060) | ||
| 230 | #define FPU_SUNFPA (1<<FPUB_SUNFPA) | ||
| 231 | |||
| 232 | #define MMUB_68851 0 | ||
| 233 | #define MMUB_68030 1 /* Internal MMU */ | ||
| 234 | #define MMUB_68040 2 /* Internal MMU */ | ||
| 235 | #define MMUB_68060 3 /* Internal MMU */ | ||
| 236 | #define MMUB_APOLLO 4 /* Custom Apollo */ | ||
| 237 | #define MMUB_SUN3 5 /* Custom Sun-3 */ | ||
| 238 | |||
| 239 | #define MMU_68851 (1<<MMUB_68851) | ||
| 240 | #define MMU_68030 (1<<MMUB_68030) | ||
| 241 | #define MMU_68040 (1<<MMUB_68040) | ||
| 242 | #define MMU_68060 (1<<MMUB_68060) | ||
| 243 | #define MMU_SUN3 (1<<MMUB_SUN3) | ||
| 244 | #define MMU_APOLLO (1<<MMUB_APOLLO) | ||
| 245 | |||
| 246 | #ifdef __KERNEL__ | ||
| 247 | |||
| 248 | #ifndef __ASSEMBLY__ | ||
| 249 | extern unsigned long m68k_cputype; | ||
| 250 | extern unsigned long m68k_fputype; | ||
| 251 | extern unsigned long m68k_mmutype; | ||
| 252 | #ifdef CONFIG_VME | ||
| 253 | extern unsigned long vme_brdtype; | ||
| 254 | #endif | ||
| 255 | |||
| 256 | /* | ||
| 257 | * m68k_is040or060 is != 0 for a '040 or higher; | ||
| 258 | * used numbers are 4 for 68040 and 6 for 68060. | ||
| 259 | */ | ||
| 260 | |||
| 261 | extern int m68k_is040or060; | ||
| 262 | #endif /* !__ASSEMBLY__ */ | ||
| 263 | |||
| 264 | #if !defined(CONFIG_M68020) | ||
| 265 | # define CPU_IS_020 (0) | ||
| 266 | # define MMU_IS_851 (0) | ||
| 267 | # define MMU_IS_SUN3 (0) | ||
| 268 | #elif defined(CONFIG_M68030) || defined(CONFIG_M68040) || defined(CONFIG_M68060) | ||
| 269 | # define CPU_IS_020 (m68k_cputype & CPU_68020) | ||
| 270 | # define MMU_IS_851 (m68k_mmutype & MMU_68851) | ||
| 271 | # define MMU_IS_SUN3 (0) /* Sun3 not supported with other CPU enabled */ | ||
| 272 | #else | ||
| 273 | # define CPU_M68020_ONLY | ||
| 274 | # define CPU_IS_020 (1) | ||
| 275 | #ifdef MACH_SUN3_ONLY | ||
| 276 | # define MMU_IS_SUN3 (1) | ||
| 277 | # define MMU_IS_851 (0) | ||
| 278 | #else | ||
| 279 | # define MMU_IS_SUN3 (0) | ||
| 280 | # define MMU_IS_851 (1) | ||
| 281 | #endif | ||
| 282 | #endif | ||
| 283 | |||
| 284 | #if !defined(CONFIG_M68030) | ||
| 285 | # define CPU_IS_030 (0) | ||
| 286 | # define MMU_IS_030 (0) | ||
| 287 | #elif defined(CONFIG_M68020) || defined(CONFIG_M68040) || defined(CONFIG_M68060) | ||
| 288 | # define CPU_IS_030 (m68k_cputype & CPU_68030) | ||
| 289 | # define MMU_IS_030 (m68k_mmutype & MMU_68030) | ||
| 290 | #else | ||
| 291 | # define CPU_M68030_ONLY | ||
| 292 | # define CPU_IS_030 (1) | ||
| 293 | # define MMU_IS_030 (1) | ||
| 294 | #endif | ||
| 295 | |||
| 296 | #if !defined(CONFIG_M68040) | ||
| 297 | # define CPU_IS_040 (0) | ||
| 298 | # define MMU_IS_040 (0) | ||
| 299 | #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68060) | ||
| 300 | # define CPU_IS_040 (m68k_cputype & CPU_68040) | ||
| 301 | # define MMU_IS_040 (m68k_mmutype & MMU_68040) | ||
| 302 | #else | ||
| 303 | # define CPU_M68040_ONLY | ||
| 304 | # define CPU_IS_040 (1) | ||
| 305 | # define MMU_IS_040 (1) | ||
| 306 | #endif | ||
| 307 | |||
| 308 | #if !defined(CONFIG_M68060) | ||
| 309 | # define CPU_IS_060 (0) | ||
| 310 | # define MMU_IS_060 (0) | ||
| 311 | #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68040) | ||
| 312 | # define CPU_IS_060 (m68k_cputype & CPU_68060) | ||
| 313 | # define MMU_IS_060 (m68k_mmutype & MMU_68060) | ||
| 314 | #else | ||
| 315 | # define CPU_M68060_ONLY | ||
| 316 | # define CPU_IS_060 (1) | ||
| 317 | # define MMU_IS_060 (1) | ||
| 318 | #endif | ||
| 319 | |||
| 320 | #if !defined(CONFIG_M68020) && !defined(CONFIG_M68030) | ||
| 321 | # define CPU_IS_020_OR_030 (0) | ||
| 322 | #else | ||
| 323 | # define CPU_M68020_OR_M68030 | ||
| 324 | # if defined(CONFIG_M68040) || defined(CONFIG_M68060) | ||
| 325 | # define CPU_IS_020_OR_030 (!m68k_is040or060) | ||
| 326 | # else | ||
| 327 | # define CPU_M68020_OR_M68030_ONLY | ||
| 328 | # define CPU_IS_020_OR_030 (1) | ||
| 329 | # endif | ||
| 330 | #endif | ||
| 331 | |||
| 332 | #if !defined(CONFIG_M68040) && !defined(CONFIG_M68060) | ||
| 333 | # define CPU_IS_040_OR_060 (0) | ||
| 334 | #else | ||
| 335 | # define CPU_M68040_OR_M68060 | ||
| 336 | # if defined(CONFIG_M68020) || defined(CONFIG_M68030) | ||
| 337 | # define CPU_IS_040_OR_060 (m68k_is040or060) | ||
| 338 | # else | ||
| 339 | # define CPU_M68040_OR_M68060_ONLY | ||
| 340 | # define CPU_IS_040_OR_060 (1) | ||
| 341 | # endif | ||
| 342 | #endif | ||
| 343 | |||
| 344 | #define CPU_TYPE (m68k_cputype) | ||
| 345 | |||
| 346 | #ifdef CONFIG_M68KFPU_EMU | ||
| 347 | # ifdef CONFIG_M68KFPU_EMU_ONLY | ||
| 348 | # define FPU_IS_EMU (1) | ||
| 349 | # else | ||
| 350 | # define FPU_IS_EMU (!m68k_fputype) | ||
| 351 | # endif | ||
| 352 | #else | ||
| 353 | # define FPU_IS_EMU (0) | ||
| 354 | #endif | ||
| 355 | |||
| 356 | |||
| 357 | /* | ||
| 358 | * Miscellaneous | ||
| 359 | */ | ||
| 360 | |||
| 361 | #define NUM_MEMINFO 4 | ||
| 362 | |||
| 363 | #ifndef __ASSEMBLY__ | ||
| 364 | struct mem_info { | ||
| 365 | unsigned long addr; /* physical address of memory chunk */ | ||
| 366 | unsigned long size; /* length of memory chunk (in bytes) */ | ||
| 367 | }; | ||
| 368 | |||
| 369 | extern int m68k_num_memory; /* # of memory blocks found (and used) */ | ||
| 370 | extern int m68k_realnum_memory; /* real # of memory blocks found */ | ||
| 371 | extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */ | ||
| 372 | #endif | ||
| 373 | |||
| 374 | #endif /* __KERNEL__ */ | ||
| 375 | |||
| 376 | #endif /* _M68K_SETUP_H */ | ||
diff --git a/arch/m68k/include/asm/setup_mm.h b/arch/m68k/include/asm/setup_mm.h deleted file mode 100644 index 4dfb3952b375..000000000000 --- a/arch/m68k/include/asm/setup_mm.h +++ /dev/null | |||
| @@ -1,376 +0,0 @@ | |||
| 1 | /* | ||
| 2 | ** asm/setup.h -- Definition of the Linux/m68k setup information | ||
| 3 | ** | ||
| 4 | ** Copyright 1992 by Greg Harp | ||
| 5 | ** | ||
| 6 | ** This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | ** License. See the file COPYING in the main directory of this archive | ||
| 8 | ** for more details. | ||
| 9 | ** | ||
| 10 | ** Created 09/29/92 by Greg Harp | ||
| 11 | ** | ||
| 12 | ** 5/2/94 Roman Hodek: | ||
| 13 | ** Added bi_atari part of the machine dependent union bi_un; for now it | ||
| 14 | ** contains just a model field to distinguish between TT and Falcon. | ||
| 15 | ** 26/7/96 Roman Zippel: | ||
| 16 | ** Renamed to setup.h; added some useful macros to allow gcc some | ||
| 17 | ** optimizations if possible. | ||
| 18 | ** 5/10/96 Geert Uytterhoeven: | ||
| 19 | ** Redesign of the boot information structure; moved boot information | ||
| 20 | ** structure to bootinfo.h | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef _M68K_SETUP_H | ||
| 24 | #define _M68K_SETUP_H | ||
| 25 | |||
| 26 | |||
| 27 | |||
| 28 | /* | ||
| 29 | * Linux/m68k Architectures | ||
| 30 | */ | ||
| 31 | |||
| 32 | #define MACH_AMIGA 1 | ||
| 33 | #define MACH_ATARI 2 | ||
| 34 | #define MACH_MAC 3 | ||
| 35 | #define MACH_APOLLO 4 | ||
| 36 | #define MACH_SUN3 5 | ||
| 37 | #define MACH_MVME147 6 | ||
| 38 | #define MACH_MVME16x 7 | ||
| 39 | #define MACH_BVME6000 8 | ||
| 40 | #define MACH_HP300 9 | ||
| 41 | #define MACH_Q40 10 | ||
| 42 | #define MACH_SUN3X 11 | ||
| 43 | |||
| 44 | #define COMMAND_LINE_SIZE 256 | ||
| 45 | |||
| 46 | #ifdef __KERNEL__ | ||
| 47 | |||
| 48 | #define CL_SIZE COMMAND_LINE_SIZE | ||
| 49 | |||
| 50 | #ifndef __ASSEMBLY__ | ||
| 51 | extern unsigned long m68k_machtype; | ||
| 52 | #endif /* !__ASSEMBLY__ */ | ||
| 53 | |||
| 54 | #if !defined(CONFIG_AMIGA) | ||
| 55 | # define MACH_IS_AMIGA (0) | ||
| 56 | #elif defined(CONFIG_ATARI) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \ | ||
| 57 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 58 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 59 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 60 | # define MACH_IS_AMIGA (m68k_machtype == MACH_AMIGA) | ||
| 61 | #else | ||
| 62 | # define MACH_AMIGA_ONLY | ||
| 63 | # define MACH_IS_AMIGA (1) | ||
| 64 | # define MACH_TYPE (MACH_AMIGA) | ||
| 65 | #endif | ||
| 66 | |||
| 67 | #if !defined(CONFIG_ATARI) | ||
| 68 | # define MACH_IS_ATARI (0) | ||
| 69 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_APOLLO) \ | ||
| 70 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 71 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 72 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 73 | # define MACH_IS_ATARI (m68k_machtype == MACH_ATARI) | ||
| 74 | #else | ||
| 75 | # define MACH_ATARI_ONLY | ||
| 76 | # define MACH_IS_ATARI (1) | ||
| 77 | # define MACH_TYPE (MACH_ATARI) | ||
| 78 | #endif | ||
| 79 | |||
| 80 | #if !defined(CONFIG_MAC) | ||
| 81 | # define MACH_IS_MAC (0) | ||
| 82 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_ATARI) || defined(CONFIG_APOLLO) \ | ||
| 83 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 84 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 85 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 86 | # define MACH_IS_MAC (m68k_machtype == MACH_MAC) | ||
| 87 | #else | ||
| 88 | # define MACH_MAC_ONLY | ||
| 89 | # define MACH_IS_MAC (1) | ||
| 90 | # define MACH_TYPE (MACH_MAC) | ||
| 91 | #endif | ||
| 92 | |||
| 93 | #if defined(CONFIG_SUN3) | ||
| 94 | #define MACH_IS_SUN3 (1) | ||
| 95 | #define MACH_SUN3_ONLY (1) | ||
| 96 | #define MACH_TYPE (MACH_SUN3) | ||
| 97 | #else | ||
| 98 | #define MACH_IS_SUN3 (0) | ||
| 99 | #endif | ||
| 100 | |||
| 101 | #if !defined (CONFIG_APOLLO) | ||
| 102 | # define MACH_IS_APOLLO (0) | ||
| 103 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 104 | || defined(CONFIG_MVME16x) || defined(CONFIG_BVME6000) \ | ||
| 105 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 106 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 107 | # define MACH_IS_APOLLO (m68k_machtype == MACH_APOLLO) | ||
| 108 | #else | ||
| 109 | # define MACH_APOLLO_ONLY | ||
| 110 | # define MACH_IS_APOLLO (1) | ||
| 111 | # define MACH_TYPE (MACH_APOLLO) | ||
| 112 | #endif | ||
| 113 | |||
| 114 | #if !defined (CONFIG_MVME147) | ||
| 115 | # define MACH_IS_MVME147 (0) | ||
| 116 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 117 | || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \ | ||
| 118 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 119 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME16x) | ||
| 120 | # define MACH_IS_MVME147 (m68k_machtype == MACH_MVME147) | ||
| 121 | #else | ||
| 122 | # define MACH_MVME147_ONLY | ||
| 123 | # define MACH_IS_MVME147 (1) | ||
| 124 | # define MACH_TYPE (MACH_MVME147) | ||
| 125 | #endif | ||
| 126 | |||
| 127 | #if !defined (CONFIG_MVME16x) | ||
| 128 | # define MACH_IS_MVME16x (0) | ||
| 129 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 130 | || defined(CONFIG_APOLLO) || defined(CONFIG_BVME6000) \ | ||
| 131 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 132 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 133 | # define MACH_IS_MVME16x (m68k_machtype == MACH_MVME16x) | ||
| 134 | #else | ||
| 135 | # define MACH_MVME16x_ONLY | ||
| 136 | # define MACH_IS_MVME16x (1) | ||
| 137 | # define MACH_TYPE (MACH_MVME16x) | ||
| 138 | #endif | ||
| 139 | |||
| 140 | #if !defined (CONFIG_BVME6000) | ||
| 141 | # define MACH_IS_BVME6000 (0) | ||
| 142 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 143 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 144 | || defined(CONFIG_HP300) || defined(CONFIG_Q40) \ | ||
| 145 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 146 | # define MACH_IS_BVME6000 (m68k_machtype == MACH_BVME6000) | ||
| 147 | #else | ||
| 148 | # define MACH_BVME6000_ONLY | ||
| 149 | # define MACH_IS_BVME6000 (1) | ||
| 150 | # define MACH_TYPE (MACH_BVME6000) | ||
| 151 | #endif | ||
| 152 | |||
| 153 | #if !defined (CONFIG_HP300) | ||
| 154 | # define MACH_IS_HP300 (0) | ||
| 155 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 156 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 157 | || defined(CONFIG_BVME6000) || defined(CONFIG_Q40) \ | ||
| 158 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 159 | # define MACH_IS_HP300 (m68k_machtype == MACH_HP300) | ||
| 160 | #else | ||
| 161 | # define MACH_HP300_ONLY | ||
| 162 | # define MACH_IS_HP300 (1) | ||
| 163 | # define MACH_TYPE (MACH_HP300) | ||
| 164 | #endif | ||
| 165 | |||
| 166 | #if !defined (CONFIG_Q40) | ||
| 167 | # define MACH_IS_Q40 (0) | ||
| 168 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 169 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 170 | || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \ | ||
| 171 | || defined(CONFIG_SUN3X) || defined(CONFIG_MVME147) | ||
| 172 | # define MACH_IS_Q40 (m68k_machtype == MACH_Q40) | ||
| 173 | #else | ||
| 174 | # define MACH_Q40_ONLY | ||
| 175 | # define MACH_IS_Q40 (1) | ||
| 176 | # define MACH_TYPE (MACH_Q40) | ||
| 177 | #endif | ||
| 178 | |||
| 179 | #if !defined (CONFIG_SUN3X) | ||
| 180 | # define MACH_IS_SUN3X (0) | ||
| 181 | #elif defined(CONFIG_AMIGA) || defined(CONFIG_MAC) || defined(CONFIG_ATARI) \ | ||
| 182 | || defined(CONFIG_APOLLO) || defined(CONFIG_MVME16x) \ | ||
| 183 | || defined(CONFIG_BVME6000) || defined(CONFIG_HP300) \ | ||
| 184 | || defined(CONFIG_Q40) || defined(CONFIG_MVME147) | ||
| 185 | # define MACH_IS_SUN3X (m68k_machtype == MACH_SUN3X) | ||
| 186 | #else | ||
| 187 | # define CONFIG_SUN3X_ONLY | ||
| 188 | # define MACH_IS_SUN3X (1) | ||
| 189 | # define MACH_TYPE (MACH_SUN3X) | ||
| 190 | #endif | ||
| 191 | |||
| 192 | #ifndef MACH_TYPE | ||
| 193 | # define MACH_TYPE (m68k_machtype) | ||
| 194 | #endif | ||
| 195 | |||
| 196 | #endif /* __KERNEL__ */ | ||
| 197 | |||
| 198 | |||
| 199 | /* | ||
| 200 | * CPU, FPU and MMU types | ||
| 201 | * | ||
| 202 | * Note: we may rely on the following equalities: | ||
| 203 | * | ||
| 204 | * CPU_68020 == MMU_68851 | ||
| 205 | * CPU_68030 == MMU_68030 | ||
| 206 | * CPU_68040 == FPU_68040 == MMU_68040 | ||
| 207 | * CPU_68060 == FPU_68060 == MMU_68060 | ||
| 208 | */ | ||
| 209 | |||
| 210 | #define CPUB_68020 0 | ||
| 211 | #define CPUB_68030 1 | ||
| 212 | #define CPUB_68040 2 | ||
| 213 | #define CPUB_68060 3 | ||
| 214 | |||
| 215 | #define CPU_68020 (1<<CPUB_68020) | ||
| 216 | #define CPU_68030 (1<<CPUB_68030) | ||
| 217 | #define CPU_68040 (1<<CPUB_68040) | ||
| 218 | #define CPU_68060 (1<<CPUB_68060) | ||
| 219 | |||
| 220 | #define FPUB_68881 0 | ||
| 221 | #define FPUB_68882 1 | ||
| 222 | #define FPUB_68040 2 /* Internal FPU */ | ||
| 223 | #define FPUB_68060 3 /* Internal FPU */ | ||
| 224 | #define FPUB_SUNFPA 4 /* Sun-3 FPA */ | ||
| 225 | |||
| 226 | #define FPU_68881 (1<<FPUB_68881) | ||
| 227 | #define FPU_68882 (1<<FPUB_68882) | ||
| 228 | #define FPU_68040 (1<<FPUB_68040) | ||
| 229 | #define FPU_68060 (1<<FPUB_68060) | ||
| 230 | #define FPU_SUNFPA (1<<FPUB_SUNFPA) | ||
| 231 | |||
| 232 | #define MMUB_68851 0 | ||
| 233 | #define MMUB_68030 1 /* Internal MMU */ | ||
| 234 | #define MMUB_68040 2 /* Internal MMU */ | ||
| 235 | #define MMUB_68060 3 /* Internal MMU */ | ||
| 236 | #define MMUB_APOLLO 4 /* Custom Apollo */ | ||
| 237 | #define MMUB_SUN3 5 /* Custom Sun-3 */ | ||
| 238 | |||
| 239 | #define MMU_68851 (1<<MMUB_68851) | ||
| 240 | #define MMU_68030 (1<<MMUB_68030) | ||
| 241 | #define MMU_68040 (1<<MMUB_68040) | ||
| 242 | #define MMU_68060 (1<<MMUB_68060) | ||
| 243 | #define MMU_SUN3 (1<<MMUB_SUN3) | ||
| 244 | #define MMU_APOLLO (1<<MMUB_APOLLO) | ||
| 245 | |||
| 246 | #ifdef __KERNEL__ | ||
| 247 | |||
| 248 | #ifndef __ASSEMBLY__ | ||
| 249 | extern unsigned long m68k_cputype; | ||
| 250 | extern unsigned long m68k_fputype; | ||
| 251 | extern unsigned long m68k_mmutype; | ||
| 252 | #ifdef CONFIG_VME | ||
| 253 | extern unsigned long vme_brdtype; | ||
| 254 | #endif | ||
| 255 | |||
| 256 | /* | ||
| 257 | * m68k_is040or060 is != 0 for a '040 or higher; | ||
| 258 | * used numbers are 4 for 68040 and 6 for 68060. | ||
| 259 | */ | ||
| 260 | |||
| 261 | extern int m68k_is040or060; | ||
| 262 | #endif /* !__ASSEMBLY__ */ | ||
| 263 | |||
| 264 | #if !defined(CONFIG_M68020) | ||
| 265 | # define CPU_IS_020 (0) | ||
| 266 | # define MMU_IS_851 (0) | ||
| 267 | # define MMU_IS_SUN3 (0) | ||
| 268 | #elif defined(CONFIG_M68030) || defined(CONFIG_M68040) || defined(CONFIG_M68060) | ||
| 269 | # define CPU_IS_020 (m68k_cputype & CPU_68020) | ||
| 270 | # define MMU_IS_851 (m68k_mmutype & MMU_68851) | ||
| 271 | # define MMU_IS_SUN3 (0) /* Sun3 not supported with other CPU enabled */ | ||
| 272 | #else | ||
| 273 | # define CPU_M68020_ONLY | ||
| 274 | # define CPU_IS_020 (1) | ||
| 275 | #ifdef MACH_SUN3_ONLY | ||
| 276 | # define MMU_IS_SUN3 (1) | ||
| 277 | # define MMU_IS_851 (0) | ||
| 278 | #else | ||
| 279 | # define MMU_IS_SUN3 (0) | ||
| 280 | # define MMU_IS_851 (1) | ||
| 281 | #endif | ||
| 282 | #endif | ||
| 283 | |||
| 284 | #if !defined(CONFIG_M68030) | ||
| 285 | # define CPU_IS_030 (0) | ||
| 286 | # define MMU_IS_030 (0) | ||
| 287 | #elif defined(CONFIG_M68020) || defined(CONFIG_M68040) || defined(CONFIG_M68060) | ||
| 288 | # define CPU_IS_030 (m68k_cputype & CPU_68030) | ||
| 289 | # define MMU_IS_030 (m68k_mmutype & MMU_68030) | ||
| 290 | #else | ||
| 291 | # define CPU_M68030_ONLY | ||
| 292 | # define CPU_IS_030 (1) | ||
| 293 | # define MMU_IS_030 (1) | ||
| 294 | #endif | ||
| 295 | |||
| 296 | #if !defined(CONFIG_M68040) | ||
| 297 | # define CPU_IS_040 (0) | ||
| 298 | # define MMU_IS_040 (0) | ||
| 299 | #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68060) | ||
| 300 | # define CPU_IS_040 (m68k_cputype & CPU_68040) | ||
| 301 | # define MMU_IS_040 (m68k_mmutype & MMU_68040) | ||
| 302 | #else | ||
| 303 | # define CPU_M68040_ONLY | ||
| 304 | # define CPU_IS_040 (1) | ||
| 305 | # define MMU_IS_040 (1) | ||
| 306 | #endif | ||
| 307 | |||
| 308 | #if !defined(CONFIG_M68060) | ||
| 309 | # define CPU_IS_060 (0) | ||
| 310 | # define MMU_IS_060 (0) | ||
| 311 | #elif defined(CONFIG_M68020) || defined(CONFIG_M68030) || defined(CONFIG_M68040) | ||
| 312 | # define CPU_IS_060 (m68k_cputype & CPU_68060) | ||
| 313 | # define MMU_IS_060 (m68k_mmutype & MMU_68060) | ||
| 314 | #else | ||
| 315 | # define CPU_M68060_ONLY | ||
| 316 | # define CPU_IS_060 (1) | ||
| 317 | # define MMU_IS_060 (1) | ||
| 318 | #endif | ||
| 319 | |||
| 320 | #if !defined(CONFIG_M68020) && !defined(CONFIG_M68030) | ||
| 321 | # define CPU_IS_020_OR_030 (0) | ||
| 322 | #else | ||
| 323 | # define CPU_M68020_OR_M68030 | ||
| 324 | # if defined(CONFIG_M68040) || defined(CONFIG_M68060) | ||
| 325 | # define CPU_IS_020_OR_030 (!m68k_is040or060) | ||
| 326 | # else | ||
| 327 | # define CPU_M68020_OR_M68030_ONLY | ||
| 328 | # define CPU_IS_020_OR_030 (1) | ||
| 329 | # endif | ||
| 330 | #endif | ||
| 331 | |||
| 332 | #if !defined(CONFIG_M68040) && !defined(CONFIG_M68060) | ||
| 333 | # define CPU_IS_040_OR_060 (0) | ||
| 334 | #else | ||
| 335 | # define CPU_M68040_OR_M68060 | ||
| 336 | # if defined(CONFIG_M68020) || defined(CONFIG_M68030) | ||
| 337 | # define CPU_IS_040_OR_060 (m68k_is040or060) | ||
| 338 | # else | ||
| 339 | # define CPU_M68040_OR_M68060_ONLY | ||
| 340 | # define CPU_IS_040_OR_060 (1) | ||
| 341 | # endif | ||
| 342 | #endif | ||
| 343 | |||
| 344 | #define CPU_TYPE (m68k_cputype) | ||
| 345 | |||
| 346 | #ifdef CONFIG_M68KFPU_EMU | ||
| 347 | # ifdef CONFIG_M68KFPU_EMU_ONLY | ||
| 348 | # define FPU_IS_EMU (1) | ||
| 349 | # else | ||
| 350 | # define FPU_IS_EMU (!m68k_fputype) | ||
| 351 | # endif | ||
| 352 | #else | ||
| 353 | # define FPU_IS_EMU (0) | ||
| 354 | #endif | ||
| 355 | |||
| 356 | |||
| 357 | /* | ||
| 358 | * Miscellaneous | ||
| 359 | */ | ||
| 360 | |||
| 361 | #define NUM_MEMINFO 4 | ||
| 362 | |||
| 363 | #ifndef __ASSEMBLY__ | ||
| 364 | struct mem_info { | ||
| 365 | unsigned long addr; /* physical address of memory chunk */ | ||
| 366 | unsigned long size; /* length of memory chunk (in bytes) */ | ||
| 367 | }; | ||
| 368 | |||
| 369 | extern int m68k_num_memory; /* # of memory blocks found (and used) */ | ||
| 370 | extern int m68k_realnum_memory; /* real # of memory blocks found */ | ||
| 371 | extern struct mem_info m68k_memory[NUM_MEMINFO];/* memory description */ | ||
| 372 | #endif | ||
| 373 | |||
| 374 | #endif /* __KERNEL__ */ | ||
| 375 | |||
| 376 | #endif /* _M68K_SETUP_H */ | ||
diff --git a/arch/m68k/include/asm/setup_no.h b/arch/m68k/include/asm/setup_no.h deleted file mode 100644 index 45d286ce9398..000000000000 --- a/arch/m68k/include/asm/setup_no.h +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 1 | #ifdef __KERNEL__ | ||
| 2 | |||
| 3 | #include <asm/setup_mm.h> | ||
| 4 | |||
| 5 | /* We have a bigger command line buffer. */ | ||
| 6 | #undef COMMAND_LINE_SIZE | ||
| 7 | |||
| 8 | #endif /* __KERNEL__ */ | ||
| 9 | |||
| 10 | #define COMMAND_LINE_SIZE 512 | ||
diff --git a/arch/m68k/include/asm/sigcontext.h b/arch/m68k/include/asm/sigcontext.h index bff6d40345a9..523db2a51cf3 100644 --- a/arch/m68k/include/asm/sigcontext.h +++ b/arch/m68k/include/asm/sigcontext.h | |||
| @@ -1,5 +1,24 @@ | |||
| 1 | #ifndef _ASM_M68k_SIGCONTEXT_H | ||
| 2 | #define _ASM_M68k_SIGCONTEXT_H | ||
| 3 | |||
| 4 | struct sigcontext { | ||
| 5 | unsigned long sc_mask; /* old sigmask */ | ||
| 6 | unsigned long sc_usp; /* old user stack pointer */ | ||
| 7 | unsigned long sc_d0; | ||
| 8 | unsigned long sc_d1; | ||
| 9 | unsigned long sc_a0; | ||
| 10 | unsigned long sc_a1; | ||
| 1 | #ifdef __uClinux__ | 11 | #ifdef __uClinux__ |
| 2 | #include "sigcontext_no.h" | 12 | unsigned long sc_a5; |
| 3 | #else | 13 | #endif |
| 4 | #include "sigcontext_mm.h" | 14 | unsigned short sc_sr; |
| 15 | unsigned long sc_pc; | ||
| 16 | unsigned short sc_formatvec; | ||
| 17 | #ifndef __uClinux__ | ||
| 18 | unsigned long sc_fpregs[2*3]; /* room for two fp registers */ | ||
| 19 | unsigned long sc_fpcntl[3]; | ||
| 20 | unsigned char sc_fpstate[216]; | ||
| 21 | #endif | ||
| 22 | }; | ||
| 23 | |||
| 5 | #endif | 24 | #endif |
diff --git a/arch/m68k/include/asm/sigcontext_mm.h b/arch/m68k/include/asm/sigcontext_mm.h deleted file mode 100644 index 64fbe34cf26f..000000000000 --- a/arch/m68k/include/asm/sigcontext_mm.h +++ /dev/null | |||
| @@ -1,19 +0,0 @@ | |||
| 1 | #ifndef _ASM_M68k_SIGCONTEXT_H | ||
| 2 | #define _ASM_M68k_SIGCONTEXT_H | ||
| 3 | |||
| 4 | struct sigcontext { | ||
| 5 | unsigned long sc_mask; /* old sigmask */ | ||
| 6 | unsigned long sc_usp; /* old user stack pointer */ | ||
| 7 | unsigned long sc_d0; | ||
| 8 | unsigned long sc_d1; | ||
| 9 | unsigned long sc_a0; | ||
| 10 | unsigned long sc_a1; | ||
| 11 | unsigned short sc_sr; | ||
| 12 | unsigned long sc_pc; | ||
| 13 | unsigned short sc_formatvec; | ||
| 14 | unsigned long sc_fpregs[2*3]; /* room for two fp registers */ | ||
| 15 | unsigned long sc_fpcntl[3]; | ||
| 16 | unsigned char sc_fpstate[216]; | ||
| 17 | }; | ||
| 18 | |||
| 19 | #endif | ||
diff --git a/arch/m68k/include/asm/sigcontext_no.h b/arch/m68k/include/asm/sigcontext_no.h deleted file mode 100644 index 36c293fc133d..000000000000 --- a/arch/m68k/include/asm/sigcontext_no.h +++ /dev/null | |||
| @@ -1,17 +0,0 @@ | |||
| 1 | #ifndef _ASM_M68KNOMMU_SIGCONTEXT_H | ||
| 2 | #define _ASM_M68KNOMMU_SIGCONTEXT_H | ||
| 3 | |||
| 4 | struct sigcontext { | ||
| 5 | unsigned long sc_mask; /* old sigmask */ | ||
| 6 | unsigned long sc_usp; /* old user stack pointer */ | ||
| 7 | unsigned long sc_d0; | ||
| 8 | unsigned long sc_d1; | ||
| 9 | unsigned long sc_a0; | ||
| 10 | unsigned long sc_a1; | ||
| 11 | unsigned long sc_a5; | ||
| 12 | unsigned short sc_sr; | ||
| 13 | unsigned long sc_pc; | ||
| 14 | unsigned short sc_formatvec; | ||
| 15 | }; | ||
| 16 | |||
| 17 | #endif | ||
diff --git a/arch/m68k/include/asm/siginfo.h b/arch/m68k/include/asm/siginfo.h index 61219d7affc8..ca7dde8fd223 100644 --- a/arch/m68k/include/asm/siginfo.h +++ b/arch/m68k/include/asm/siginfo.h | |||
| @@ -1,5 +1,97 @@ | |||
| 1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_SIGINFO_H |
| 2 | #include "siginfo_no.h" | 2 | #define _M68K_SIGINFO_H |
| 3 | |||
| 4 | #ifndef __uClinux__ | ||
| 5 | #define HAVE_ARCH_SIGINFO_T | ||
| 6 | #define HAVE_ARCH_COPY_SIGINFO | ||
| 7 | #endif | ||
| 8 | |||
| 9 | #include <asm-generic/siginfo.h> | ||
| 10 | |||
| 11 | #ifndef __uClinux__ | ||
| 12 | |||
| 13 | typedef struct siginfo { | ||
| 14 | int si_signo; | ||
| 15 | int si_errno; | ||
| 16 | int si_code; | ||
| 17 | |||
| 18 | union { | ||
| 19 | int _pad[SI_PAD_SIZE]; | ||
| 20 | |||
| 21 | /* kill() */ | ||
| 22 | struct { | ||
| 23 | __kernel_pid_t _pid; /* sender's pid */ | ||
| 24 | __kernel_uid_t _uid; /* backwards compatibility */ | ||
| 25 | __kernel_uid32_t _uid32; /* sender's uid */ | ||
| 26 | } _kill; | ||
| 27 | |||
| 28 | /* POSIX.1b timers */ | ||
| 29 | struct { | ||
| 30 | timer_t _tid; /* timer id */ | ||
| 31 | int _overrun; /* overrun count */ | ||
| 32 | char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; | ||
| 33 | sigval_t _sigval; /* same as below */ | ||
| 34 | int _sys_private; /* not to be passed to user */ | ||
| 35 | } _timer; | ||
| 36 | |||
| 37 | /* POSIX.1b signals */ | ||
| 38 | struct { | ||
| 39 | __kernel_pid_t _pid; /* sender's pid */ | ||
| 40 | __kernel_uid_t _uid; /* backwards compatibility */ | ||
| 41 | sigval_t _sigval; | ||
| 42 | __kernel_uid32_t _uid32; /* sender's uid */ | ||
| 43 | } _rt; | ||
| 44 | |||
| 45 | /* SIGCHLD */ | ||
| 46 | struct { | ||
| 47 | __kernel_pid_t _pid; /* which child */ | ||
| 48 | __kernel_uid_t _uid; /* backwards compatibility */ | ||
| 49 | int _status; /* exit code */ | ||
| 50 | clock_t _utime; | ||
| 51 | clock_t _stime; | ||
| 52 | __kernel_uid32_t _uid32; /* sender's uid */ | ||
| 53 | } _sigchld; | ||
| 54 | |||
| 55 | /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ | ||
| 56 | struct { | ||
| 57 | void *_addr; /* faulting insn/memory ref. */ | ||
| 58 | } _sigfault; | ||
| 59 | |||
| 60 | /* SIGPOLL */ | ||
| 61 | struct { | ||
| 62 | int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ | ||
| 63 | int _fd; | ||
| 64 | } _sigpoll; | ||
| 65 | } _sifields; | ||
| 66 | } siginfo_t; | ||
| 67 | |||
| 68 | #define UID16_SIGINFO_COMPAT_NEEDED | ||
| 69 | |||
| 70 | /* | ||
| 71 | * How these fields are to be accessed. | ||
| 72 | */ | ||
| 73 | #undef si_uid | ||
| 74 | #ifdef __KERNEL__ | ||
| 75 | #define si_uid _sifields._kill._uid32 | ||
| 76 | #define si_uid16 _sifields._kill._uid | ||
| 3 | #else | 77 | #else |
| 4 | #include "siginfo_mm.h" | 78 | #define si_uid _sifields._kill._uid |
| 79 | #endif | ||
| 80 | |||
| 81 | #ifdef __KERNEL__ | ||
| 82 | |||
| 83 | #include <linux/string.h> | ||
| 84 | |||
| 85 | static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) | ||
| 86 | { | ||
| 87 | if (from->si_code < 0) | ||
| 88 | memcpy(to, from, sizeof(*to)); | ||
| 89 | else | ||
| 90 | /* _sigchld is currently the largest know union member */ | ||
| 91 | memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld)); | ||
| 92 | } | ||
| 93 | |||
| 94 | #endif /* __KERNEL__ */ | ||
| 95 | #endif /* !__uClinux__ */ | ||
| 96 | |||
| 5 | #endif | 97 | #endif |
diff --git a/arch/m68k/include/asm/siginfo_mm.h b/arch/m68k/include/asm/siginfo_mm.h deleted file mode 100644 index 05a8d6d90b58..000000000000 --- a/arch/m68k/include/asm/siginfo_mm.h +++ /dev/null | |||
| @@ -1,92 +0,0 @@ | |||
| 1 | #ifndef _M68K_SIGINFO_H | ||
| 2 | #define _M68K_SIGINFO_H | ||
| 3 | |||
| 4 | #define HAVE_ARCH_SIGINFO_T | ||
| 5 | #define HAVE_ARCH_COPY_SIGINFO | ||
| 6 | |||
| 7 | #include <asm-generic/siginfo.h> | ||
| 8 | |||
| 9 | typedef struct siginfo { | ||
| 10 | int si_signo; | ||
| 11 | int si_errno; | ||
| 12 | int si_code; | ||
| 13 | |||
| 14 | union { | ||
| 15 | int _pad[SI_PAD_SIZE]; | ||
| 16 | |||
| 17 | /* kill() */ | ||
| 18 | struct { | ||
| 19 | __kernel_pid_t _pid; /* sender's pid */ | ||
| 20 | __kernel_uid_t _uid; /* backwards compatibility */ | ||
| 21 | __kernel_uid32_t _uid32; /* sender's uid */ | ||
| 22 | } _kill; | ||
| 23 | |||
| 24 | /* POSIX.1b timers */ | ||
| 25 | struct { | ||
| 26 | timer_t _tid; /* timer id */ | ||
| 27 | int _overrun; /* overrun count */ | ||
| 28 | char _pad[sizeof( __ARCH_SI_UID_T) - sizeof(int)]; | ||
| 29 | sigval_t _sigval; /* same as below */ | ||
| 30 | int _sys_private; /* not to be passed to user */ | ||
| 31 | } _timer; | ||
| 32 | |||
| 33 | /* POSIX.1b signals */ | ||
| 34 | struct { | ||
| 35 | __kernel_pid_t _pid; /* sender's pid */ | ||
| 36 | __kernel_uid_t _uid; /* backwards compatibility */ | ||
| 37 | sigval_t _sigval; | ||
| 38 | __kernel_uid32_t _uid32; /* sender's uid */ | ||
| 39 | } _rt; | ||
| 40 | |||
| 41 | /* SIGCHLD */ | ||
| 42 | struct { | ||
| 43 | __kernel_pid_t _pid; /* which child */ | ||
| 44 | __kernel_uid_t _uid; /* backwards compatibility */ | ||
| 45 | int _status; /* exit code */ | ||
| 46 | clock_t _utime; | ||
| 47 | clock_t _stime; | ||
| 48 | __kernel_uid32_t _uid32; /* sender's uid */ | ||
| 49 | } _sigchld; | ||
| 50 | |||
| 51 | /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ | ||
| 52 | struct { | ||
| 53 | void *_addr; /* faulting insn/memory ref. */ | ||
| 54 | } _sigfault; | ||
| 55 | |||
| 56 | /* SIGPOLL */ | ||
| 57 | struct { | ||
| 58 | int _band; /* POLL_IN, POLL_OUT, POLL_MSG */ | ||
| 59 | int _fd; | ||
| 60 | } _sigpoll; | ||
| 61 | } _sifields; | ||
| 62 | } siginfo_t; | ||
| 63 | |||
| 64 | #define UID16_SIGINFO_COMPAT_NEEDED | ||
| 65 | |||
| 66 | /* | ||
| 67 | * How these fields are to be accessed. | ||
| 68 | */ | ||
| 69 | #undef si_uid | ||
| 70 | #ifdef __KERNEL__ | ||
| 71 | #define si_uid _sifields._kill._uid32 | ||
| 72 | #define si_uid16 _sifields._kill._uid | ||
| 73 | #else | ||
| 74 | #define si_uid _sifields._kill._uid | ||
| 75 | #endif | ||
| 76 | |||
| 77 | #ifdef __KERNEL__ | ||
| 78 | |||
| 79 | #include <linux/string.h> | ||
| 80 | |||
| 81 | static inline void copy_siginfo(struct siginfo *to, struct siginfo *from) | ||
| 82 | { | ||
| 83 | if (from->si_code < 0) | ||
| 84 | memcpy(to, from, sizeof(*to)); | ||
| 85 | else | ||
| 86 | /* _sigchld is currently the largest know union member */ | ||
| 87 | memcpy(to, from, 3*sizeof(int) + sizeof(from->_sifields._sigchld)); | ||
| 88 | } | ||
| 89 | |||
| 90 | #endif /* __KERNEL__ */ | ||
| 91 | |||
| 92 | #endif | ||
diff --git a/arch/m68k/include/asm/siginfo_no.h b/arch/m68k/include/asm/siginfo_no.h deleted file mode 100644 index b18e5f4064ae..000000000000 --- a/arch/m68k/include/asm/siginfo_no.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef _M68KNOMMU_SIGINFO_H | ||
| 2 | #define _M68KNOMMU_SIGINFO_H | ||
| 3 | |||
| 4 | #include <asm-generic/siginfo.h> | ||
| 5 | |||
| 6 | #endif | ||
diff --git a/arch/m68k/include/asm/signal.h b/arch/m68k/include/asm/signal.h index 3c19988bd93c..08788fdefde0 100644 --- a/arch/m68k/include/asm/signal.h +++ b/arch/m68k/include/asm/signal.h | |||
| @@ -1,5 +1,213 @@ | |||
| 1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_SIGNAL_H |
| 2 | #include "signal_no.h" | 2 | #define _M68K_SIGNAL_H |
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | |||
| 6 | /* Avoid too many header ordering problems. */ | ||
| 7 | struct siginfo; | ||
| 8 | |||
| 9 | #ifdef __KERNEL__ | ||
| 10 | /* Most things should be clean enough to redefine this at will, if care | ||
| 11 | is taken to make libc match. */ | ||
| 12 | |||
| 13 | #define _NSIG 64 | ||
| 14 | #define _NSIG_BPW 32 | ||
| 15 | #define _NSIG_WORDS (_NSIG / _NSIG_BPW) | ||
| 16 | |||
| 17 | typedef unsigned long old_sigset_t; /* at least 32 bits */ | ||
| 18 | |||
| 19 | typedef struct { | ||
| 20 | unsigned long sig[_NSIG_WORDS]; | ||
| 21 | } sigset_t; | ||
| 22 | |||
| 3 | #else | 23 | #else |
| 4 | #include "signal_mm.h" | 24 | /* Here we must cater to libcs that poke about in kernel headers. */ |
| 5 | #endif | 25 | |
| 26 | #define NSIG 32 | ||
| 27 | typedef unsigned long sigset_t; | ||
| 28 | |||
| 29 | #endif /* __KERNEL__ */ | ||
| 30 | |||
| 31 | #define SIGHUP 1 | ||
| 32 | #define SIGINT 2 | ||
| 33 | #define SIGQUIT 3 | ||
| 34 | #define SIGILL 4 | ||
| 35 | #define SIGTRAP 5 | ||
| 36 | #define SIGABRT 6 | ||
| 37 | #define SIGIOT 6 | ||
| 38 | #define SIGBUS 7 | ||
| 39 | #define SIGFPE 8 | ||
| 40 | #define SIGKILL 9 | ||
| 41 | #define SIGUSR1 10 | ||
| 42 | #define SIGSEGV 11 | ||
| 43 | #define SIGUSR2 12 | ||
| 44 | #define SIGPIPE 13 | ||
| 45 | #define SIGALRM 14 | ||
| 46 | #define SIGTERM 15 | ||
| 47 | #define SIGSTKFLT 16 | ||
| 48 | #define SIGCHLD 17 | ||
| 49 | #define SIGCONT 18 | ||
| 50 | #define SIGSTOP 19 | ||
| 51 | #define SIGTSTP 20 | ||
| 52 | #define SIGTTIN 21 | ||
| 53 | #define SIGTTOU 22 | ||
| 54 | #define SIGURG 23 | ||
| 55 | #define SIGXCPU 24 | ||
| 56 | #define SIGXFSZ 25 | ||
| 57 | #define SIGVTALRM 26 | ||
| 58 | #define SIGPROF 27 | ||
| 59 | #define SIGWINCH 28 | ||
| 60 | #define SIGIO 29 | ||
| 61 | #define SIGPOLL SIGIO | ||
| 62 | /* | ||
| 63 | #define SIGLOST 29 | ||
| 64 | */ | ||
| 65 | #define SIGPWR 30 | ||
| 66 | #define SIGSYS 31 | ||
| 67 | #define SIGUNUSED 31 | ||
| 68 | |||
| 69 | /* These should not be considered constants from userland. */ | ||
| 70 | #define SIGRTMIN 32 | ||
| 71 | #define SIGRTMAX _NSIG | ||
| 72 | |||
| 73 | /* | ||
| 74 | * SA_FLAGS values: | ||
| 75 | * | ||
| 76 | * SA_ONSTACK indicates that a registered stack_t will be used. | ||
| 77 | * SA_RESTART flag to get restarting signals (which were the default long ago) | ||
| 78 | * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. | ||
| 79 | * SA_RESETHAND clears the handler when the signal is delivered. | ||
| 80 | * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. | ||
| 81 | * SA_NODEFER prevents the current signal from being masked in the handler. | ||
| 82 | * | ||
| 83 | * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single | ||
| 84 | * Unix names RESETHAND and NODEFER respectively. | ||
| 85 | */ | ||
| 86 | #define SA_NOCLDSTOP 0x00000001 | ||
| 87 | #define SA_NOCLDWAIT 0x00000002 | ||
| 88 | #define SA_SIGINFO 0x00000004 | ||
| 89 | #define SA_ONSTACK 0x08000000 | ||
| 90 | #define SA_RESTART 0x10000000 | ||
| 91 | #define SA_NODEFER 0x40000000 | ||
| 92 | #define SA_RESETHAND 0x80000000 | ||
| 93 | |||
| 94 | #define SA_NOMASK SA_NODEFER | ||
| 95 | #define SA_ONESHOT SA_RESETHAND | ||
| 96 | |||
| 97 | /* | ||
| 98 | * sigaltstack controls | ||
| 99 | */ | ||
| 100 | #define SS_ONSTACK 1 | ||
| 101 | #define SS_DISABLE 2 | ||
| 102 | |||
| 103 | #define MINSIGSTKSZ 2048 | ||
| 104 | #define SIGSTKSZ 8192 | ||
| 105 | |||
| 106 | #include <asm-generic/signal.h> | ||
| 107 | |||
| 108 | #ifdef __KERNEL__ | ||
| 109 | struct old_sigaction { | ||
| 110 | __sighandler_t sa_handler; | ||
| 111 | old_sigset_t sa_mask; | ||
| 112 | unsigned long sa_flags; | ||
| 113 | __sigrestore_t sa_restorer; | ||
| 114 | }; | ||
| 115 | |||
| 116 | struct sigaction { | ||
| 117 | __sighandler_t sa_handler; | ||
| 118 | unsigned long sa_flags; | ||
| 119 | __sigrestore_t sa_restorer; | ||
| 120 | sigset_t sa_mask; /* mask last for extensibility */ | ||
| 121 | }; | ||
| 122 | |||
| 123 | struct k_sigaction { | ||
| 124 | struct sigaction sa; | ||
| 125 | }; | ||
| 126 | #else | ||
| 127 | /* Here we must cater to libcs that poke about in kernel headers. */ | ||
| 128 | |||
| 129 | struct sigaction { | ||
| 130 | union { | ||
| 131 | __sighandler_t _sa_handler; | ||
| 132 | void (*_sa_sigaction)(int, struct siginfo *, void *); | ||
| 133 | } _u; | ||
| 134 | sigset_t sa_mask; | ||
| 135 | unsigned long sa_flags; | ||
| 136 | void (*sa_restorer)(void); | ||
| 137 | }; | ||
| 138 | |||
| 139 | #define sa_handler _u._sa_handler | ||
| 140 | #define sa_sigaction _u._sa_sigaction | ||
| 141 | |||
| 142 | #endif /* __KERNEL__ */ | ||
| 143 | |||
| 144 | typedef struct sigaltstack { | ||
| 145 | void __user *ss_sp; | ||
| 146 | int ss_flags; | ||
| 147 | size_t ss_size; | ||
| 148 | } stack_t; | ||
| 149 | |||
| 150 | #ifdef __KERNEL__ | ||
| 151 | #include <asm/sigcontext.h> | ||
| 152 | |||
| 153 | #ifndef __uClinux__ | ||
| 154 | #define __HAVE_ARCH_SIG_BITOPS | ||
| 155 | |||
| 156 | static inline void sigaddset(sigset_t *set, int _sig) | ||
| 157 | { | ||
| 158 | asm ("bfset %0{%1,#1}" | ||
| 159 | : "+od" (*set) | ||
| 160 | : "id" ((_sig - 1) ^ 31) | ||
| 161 | : "cc"); | ||
| 162 | } | ||
| 163 | |||
| 164 | static inline void sigdelset(sigset_t *set, int _sig) | ||
| 165 | { | ||
| 166 | asm ("bfclr %0{%1,#1}" | ||
| 167 | : "+od" (*set) | ||
| 168 | : "id" ((_sig - 1) ^ 31) | ||
| 169 | : "cc"); | ||
| 170 | } | ||
| 171 | |||
| 172 | static inline int __const_sigismember(sigset_t *set, int _sig) | ||
| 173 | { | ||
| 174 | unsigned long sig = _sig - 1; | ||
| 175 | return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW)); | ||
| 176 | } | ||
| 177 | |||
| 178 | static inline int __gen_sigismember(sigset_t *set, int _sig) | ||
| 179 | { | ||
| 180 | int ret; | ||
| 181 | asm ("bfextu %1{%2,#1},%0" | ||
| 182 | : "=d" (ret) | ||
| 183 | : "od" (*set), "id" ((_sig-1) ^ 31) | ||
| 184 | : "cc"); | ||
| 185 | return ret; | ||
| 186 | } | ||
| 187 | |||
| 188 | #define sigismember(set,sig) \ | ||
| 189 | (__builtin_constant_p(sig) ? \ | ||
| 190 | __const_sigismember(set,sig) : \ | ||
| 191 | __gen_sigismember(set,sig)) | ||
| 192 | |||
| 193 | static inline int sigfindinword(unsigned long word) | ||
| 194 | { | ||
| 195 | asm ("bfffo %1{#0,#0},%0" | ||
| 196 | : "=d" (word) | ||
| 197 | : "d" (word & -word) | ||
| 198 | : "cc"); | ||
| 199 | return word ^ 31; | ||
| 200 | } | ||
| 201 | |||
| 202 | struct pt_regs; | ||
| 203 | extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie); | ||
| 204 | |||
| 205 | #else | ||
| 206 | |||
| 207 | #undef __HAVE_ARCH_SIG_BITOPS | ||
| 208 | #define ptrace_signal_deliver(regs, cookie) do { } while (0) | ||
| 209 | |||
| 210 | #endif /* __uClinux__ */ | ||
| 211 | #endif /* __KERNEL__ */ | ||
| 212 | |||
| 213 | #endif /* _M68K_SIGNAL_H */ | ||
diff --git a/arch/m68k/include/asm/signal_mm.h b/arch/m68k/include/asm/signal_mm.h deleted file mode 100644 index 3db8a81942f1..000000000000 --- a/arch/m68k/include/asm/signal_mm.h +++ /dev/null | |||
| @@ -1,206 +0,0 @@ | |||
| 1 | #ifndef _M68K_SIGNAL_H | ||
| 2 | #define _M68K_SIGNAL_H | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | |||
| 6 | /* Avoid too many header ordering problems. */ | ||
| 7 | struct siginfo; | ||
| 8 | |||
| 9 | #ifdef __KERNEL__ | ||
| 10 | /* Most things should be clean enough to redefine this at will, if care | ||
| 11 | is taken to make libc match. */ | ||
| 12 | |||
| 13 | #define _NSIG 64 | ||
| 14 | #define _NSIG_BPW 32 | ||
| 15 | #define _NSIG_WORDS (_NSIG / _NSIG_BPW) | ||
| 16 | |||
| 17 | typedef unsigned long old_sigset_t; /* at least 32 bits */ | ||
| 18 | |||
| 19 | typedef struct { | ||
| 20 | unsigned long sig[_NSIG_WORDS]; | ||
| 21 | } sigset_t; | ||
| 22 | |||
| 23 | #else | ||
| 24 | /* Here we must cater to libcs that poke about in kernel headers. */ | ||
| 25 | |||
| 26 | #define NSIG 32 | ||
| 27 | typedef unsigned long sigset_t; | ||
| 28 | |||
| 29 | #endif /* __KERNEL__ */ | ||
| 30 | |||
| 31 | #define SIGHUP 1 | ||
| 32 | #define SIGINT 2 | ||
| 33 | #define SIGQUIT 3 | ||
| 34 | #define SIGILL 4 | ||
| 35 | #define SIGTRAP 5 | ||
| 36 | #define SIGABRT 6 | ||
| 37 | #define SIGIOT 6 | ||
| 38 | #define SIGBUS 7 | ||
| 39 | #define SIGFPE 8 | ||
| 40 | #define SIGKILL 9 | ||
| 41 | #define SIGUSR1 10 | ||
| 42 | #define SIGSEGV 11 | ||
| 43 | #define SIGUSR2 12 | ||
| 44 | #define SIGPIPE 13 | ||
| 45 | #define SIGALRM 14 | ||
| 46 | #define SIGTERM 15 | ||
| 47 | #define SIGSTKFLT 16 | ||
| 48 | #define SIGCHLD 17 | ||
| 49 | #define SIGCONT 18 | ||
| 50 | #define SIGSTOP 19 | ||
| 51 | #define SIGTSTP 20 | ||
| 52 | #define SIGTTIN 21 | ||
| 53 | #define SIGTTOU 22 | ||
| 54 | #define SIGURG 23 | ||
| 55 | #define SIGXCPU 24 | ||
| 56 | #define SIGXFSZ 25 | ||
| 57 | #define SIGVTALRM 26 | ||
| 58 | #define SIGPROF 27 | ||
| 59 | #define SIGWINCH 28 | ||
| 60 | #define SIGIO 29 | ||
| 61 | #define SIGPOLL SIGIO | ||
| 62 | /* | ||
| 63 | #define SIGLOST 29 | ||
| 64 | */ | ||
| 65 | #define SIGPWR 30 | ||
| 66 | #define SIGSYS 31 | ||
| 67 | #define SIGUNUSED 31 | ||
| 68 | |||
| 69 | /* These should not be considered constants from userland. */ | ||
| 70 | #define SIGRTMIN 32 | ||
| 71 | #define SIGRTMAX _NSIG | ||
| 72 | |||
| 73 | /* | ||
| 74 | * SA_FLAGS values: | ||
| 75 | * | ||
| 76 | * SA_ONSTACK indicates that a registered stack_t will be used. | ||
| 77 | * SA_RESTART flag to get restarting signals (which were the default long ago) | ||
| 78 | * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. | ||
| 79 | * SA_RESETHAND clears the handler when the signal is delivered. | ||
| 80 | * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. | ||
| 81 | * SA_NODEFER prevents the current signal from being masked in the handler. | ||
| 82 | * | ||
| 83 | * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single | ||
| 84 | * Unix names RESETHAND and NODEFER respectively. | ||
| 85 | */ | ||
| 86 | #define SA_NOCLDSTOP 0x00000001 | ||
| 87 | #define SA_NOCLDWAIT 0x00000002 | ||
| 88 | #define SA_SIGINFO 0x00000004 | ||
| 89 | #define SA_ONSTACK 0x08000000 | ||
| 90 | #define SA_RESTART 0x10000000 | ||
| 91 | #define SA_NODEFER 0x40000000 | ||
| 92 | #define SA_RESETHAND 0x80000000 | ||
| 93 | |||
| 94 | #define SA_NOMASK SA_NODEFER | ||
| 95 | #define SA_ONESHOT SA_RESETHAND | ||
| 96 | |||
| 97 | /* | ||
| 98 | * sigaltstack controls | ||
| 99 | */ | ||
| 100 | #define SS_ONSTACK 1 | ||
| 101 | #define SS_DISABLE 2 | ||
| 102 | |||
| 103 | #define MINSIGSTKSZ 2048 | ||
| 104 | #define SIGSTKSZ 8192 | ||
| 105 | |||
| 106 | #include <asm-generic/signal.h> | ||
| 107 | |||
| 108 | #ifdef __KERNEL__ | ||
| 109 | struct old_sigaction { | ||
| 110 | __sighandler_t sa_handler; | ||
| 111 | old_sigset_t sa_mask; | ||
| 112 | unsigned long sa_flags; | ||
| 113 | __sigrestore_t sa_restorer; | ||
| 114 | }; | ||
| 115 | |||
| 116 | struct sigaction { | ||
| 117 | __sighandler_t sa_handler; | ||
| 118 | unsigned long sa_flags; | ||
| 119 | __sigrestore_t sa_restorer; | ||
| 120 | sigset_t sa_mask; /* mask last for extensibility */ | ||
| 121 | }; | ||
| 122 | |||
| 123 | struct k_sigaction { | ||
| 124 | struct sigaction sa; | ||
| 125 | }; | ||
| 126 | #else | ||
| 127 | /* Here we must cater to libcs that poke about in kernel headers. */ | ||
| 128 | |||
| 129 | struct sigaction { | ||
| 130 | union { | ||
| 131 | __sighandler_t _sa_handler; | ||
| 132 | void (*_sa_sigaction)(int, struct siginfo *, void *); | ||
| 133 | } _u; | ||
| 134 | sigset_t sa_mask; | ||
| 135 | unsigned long sa_flags; | ||
| 136 | void (*sa_restorer)(void); | ||
| 137 | }; | ||
| 138 | |||
| 139 | #define sa_handler _u._sa_handler | ||
| 140 | #define sa_sigaction _u._sa_sigaction | ||
| 141 | |||
| 142 | #endif /* __KERNEL__ */ | ||
| 143 | |||
| 144 | typedef struct sigaltstack { | ||
| 145 | void __user *ss_sp; | ||
| 146 | int ss_flags; | ||
| 147 | size_t ss_size; | ||
| 148 | } stack_t; | ||
| 149 | |||
| 150 | #ifdef __KERNEL__ | ||
| 151 | #include <asm/sigcontext.h> | ||
| 152 | |||
| 153 | #define __HAVE_ARCH_SIG_BITOPS | ||
| 154 | |||
| 155 | static inline void sigaddset(sigset_t *set, int _sig) | ||
| 156 | { | ||
| 157 | asm ("bfset %0{%1,#1}" | ||
| 158 | : "+od" (*set) | ||
| 159 | : "id" ((_sig - 1) ^ 31) | ||
| 160 | : "cc"); | ||
| 161 | } | ||
| 162 | |||
| 163 | static inline void sigdelset(sigset_t *set, int _sig) | ||
| 164 | { | ||
| 165 | asm ("bfclr %0{%1,#1}" | ||
| 166 | : "+od" (*set) | ||
| 167 | : "id" ((_sig - 1) ^ 31) | ||
| 168 | : "cc"); | ||
| 169 | } | ||
| 170 | |||
| 171 | static inline int __const_sigismember(sigset_t *set, int _sig) | ||
| 172 | { | ||
| 173 | unsigned long sig = _sig - 1; | ||
| 174 | return 1 & (set->sig[sig / _NSIG_BPW] >> (sig % _NSIG_BPW)); | ||
| 175 | } | ||
| 176 | |||
| 177 | static inline int __gen_sigismember(sigset_t *set, int _sig) | ||
| 178 | { | ||
| 179 | int ret; | ||
| 180 | asm ("bfextu %1{%2,#1},%0" | ||
| 181 | : "=d" (ret) | ||
| 182 | : "od" (*set), "id" ((_sig-1) ^ 31) | ||
| 183 | : "cc"); | ||
| 184 | return ret; | ||
| 185 | } | ||
| 186 | |||
| 187 | #define sigismember(set,sig) \ | ||
| 188 | (__builtin_constant_p(sig) ? \ | ||
| 189 | __const_sigismember(set,sig) : \ | ||
| 190 | __gen_sigismember(set,sig)) | ||
| 191 | |||
| 192 | static inline int sigfindinword(unsigned long word) | ||
| 193 | { | ||
| 194 | asm ("bfffo %1{#0,#0},%0" | ||
| 195 | : "=d" (word) | ||
| 196 | : "d" (word & -word) | ||
| 197 | : "cc"); | ||
| 198 | return word ^ 31; | ||
| 199 | } | ||
| 200 | |||
| 201 | struct pt_regs; | ||
| 202 | extern void ptrace_signal_deliver(struct pt_regs *regs, void *cookie); | ||
| 203 | |||
| 204 | #endif /* __KERNEL__ */ | ||
| 205 | |||
| 206 | #endif /* _M68K_SIGNAL_H */ | ||
diff --git a/arch/m68k/include/asm/signal_no.h b/arch/m68k/include/asm/signal_no.h deleted file mode 100644 index 216c08be54a0..000000000000 --- a/arch/m68k/include/asm/signal_no.h +++ /dev/null | |||
| @@ -1,159 +0,0 @@ | |||
| 1 | #ifndef _M68KNOMMU_SIGNAL_H | ||
| 2 | #define _M68KNOMMU_SIGNAL_H | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | |||
| 6 | /* Avoid too many header ordering problems. */ | ||
| 7 | struct siginfo; | ||
| 8 | |||
| 9 | #ifdef __KERNEL__ | ||
| 10 | /* Most things should be clean enough to redefine this at will, if care | ||
| 11 | is taken to make libc match. */ | ||
| 12 | |||
| 13 | #define _NSIG 64 | ||
| 14 | #define _NSIG_BPW 32 | ||
| 15 | #define _NSIG_WORDS (_NSIG / _NSIG_BPW) | ||
| 16 | |||
| 17 | typedef unsigned long old_sigset_t; /* at least 32 bits */ | ||
| 18 | |||
| 19 | typedef struct { | ||
| 20 | unsigned long sig[_NSIG_WORDS]; | ||
| 21 | } sigset_t; | ||
| 22 | |||
| 23 | #else | ||
| 24 | /* Here we must cater to libcs that poke about in kernel headers. */ | ||
| 25 | |||
| 26 | #define NSIG 32 | ||
| 27 | typedef unsigned long sigset_t; | ||
| 28 | |||
| 29 | #endif /* __KERNEL__ */ | ||
| 30 | |||
| 31 | #define SIGHUP 1 | ||
| 32 | #define SIGINT 2 | ||
| 33 | #define SIGQUIT 3 | ||
| 34 | #define SIGILL 4 | ||
| 35 | #define SIGTRAP 5 | ||
| 36 | #define SIGABRT 6 | ||
| 37 | #define SIGIOT 6 | ||
| 38 | #define SIGBUS 7 | ||
| 39 | #define SIGFPE 8 | ||
| 40 | #define SIGKILL 9 | ||
| 41 | #define SIGUSR1 10 | ||
| 42 | #define SIGSEGV 11 | ||
| 43 | #define SIGUSR2 12 | ||
| 44 | #define SIGPIPE 13 | ||
| 45 | #define SIGALRM 14 | ||
| 46 | #define SIGTERM 15 | ||
| 47 | #define SIGSTKFLT 16 | ||
| 48 | #define SIGCHLD 17 | ||
| 49 | #define SIGCONT 18 | ||
| 50 | #define SIGSTOP 19 | ||
| 51 | #define SIGTSTP 20 | ||
| 52 | #define SIGTTIN 21 | ||
| 53 | #define SIGTTOU 22 | ||
| 54 | #define SIGURG 23 | ||
| 55 | #define SIGXCPU 24 | ||
| 56 | #define SIGXFSZ 25 | ||
| 57 | #define SIGVTALRM 26 | ||
| 58 | #define SIGPROF 27 | ||
| 59 | #define SIGWINCH 28 | ||
| 60 | #define SIGIO 29 | ||
| 61 | #define SIGPOLL SIGIO | ||
| 62 | /* | ||
| 63 | #define SIGLOST 29 | ||
| 64 | */ | ||
| 65 | #define SIGPWR 30 | ||
| 66 | #define SIGSYS 31 | ||
| 67 | #define SIGUNUSED 31 | ||
| 68 | |||
| 69 | /* These should not be considered constants from userland. */ | ||
| 70 | #define SIGRTMIN 32 | ||
| 71 | #define SIGRTMAX _NSIG | ||
| 72 | |||
| 73 | /* | ||
| 74 | * SA_FLAGS values: | ||
| 75 | * | ||
| 76 | * SA_ONSTACK indicates that a registered stack_t will be used. | ||
| 77 | * SA_RESTART flag to get restarting signals (which were the default long ago) | ||
| 78 | * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop. | ||
| 79 | * SA_RESETHAND clears the handler when the signal is delivered. | ||
| 80 | * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies. | ||
| 81 | * SA_NODEFER prevents the current signal from being masked in the handler. | ||
| 82 | * | ||
| 83 | * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single | ||
| 84 | * Unix names RESETHAND and NODEFER respectively. | ||
| 85 | */ | ||
| 86 | #define SA_NOCLDSTOP 0x00000001 | ||
| 87 | #define SA_NOCLDWAIT 0x00000002 | ||
| 88 | #define SA_SIGINFO 0x00000004 | ||
| 89 | #define SA_ONSTACK 0x08000000 | ||
| 90 | #define SA_RESTART 0x10000000 | ||
| 91 | #define SA_NODEFER 0x40000000 | ||
| 92 | #define SA_RESETHAND 0x80000000 | ||
| 93 | |||
| 94 | #define SA_NOMASK SA_NODEFER | ||
| 95 | #define SA_ONESHOT SA_RESETHAND | ||
| 96 | |||
| 97 | /* | ||
| 98 | * sigaltstack controls | ||
| 99 | */ | ||
| 100 | #define SS_ONSTACK 1 | ||
| 101 | #define SS_DISABLE 2 | ||
| 102 | |||
| 103 | #define MINSIGSTKSZ 2048 | ||
| 104 | #define SIGSTKSZ 8192 | ||
| 105 | |||
| 106 | #include <asm-generic/signal.h> | ||
| 107 | |||
| 108 | #ifdef __KERNEL__ | ||
| 109 | struct old_sigaction { | ||
| 110 | __sighandler_t sa_handler; | ||
| 111 | old_sigset_t sa_mask; | ||
| 112 | unsigned long sa_flags; | ||
| 113 | void (*sa_restorer)(void); | ||
| 114 | }; | ||
| 115 | |||
| 116 | struct sigaction { | ||
| 117 | __sighandler_t sa_handler; | ||
| 118 | unsigned long sa_flags; | ||
| 119 | void (*sa_restorer)(void); | ||
| 120 | sigset_t sa_mask; /* mask last for extensibility */ | ||
| 121 | }; | ||
| 122 | |||
| 123 | struct k_sigaction { | ||
| 124 | struct sigaction sa; | ||
| 125 | }; | ||
| 126 | #else | ||
| 127 | /* Here we must cater to libcs that poke about in kernel headers. */ | ||
| 128 | |||
| 129 | struct sigaction { | ||
| 130 | union { | ||
| 131 | __sighandler_t _sa_handler; | ||
| 132 | void (*_sa_sigaction)(int, struct siginfo *, void *); | ||
| 133 | } _u; | ||
| 134 | sigset_t sa_mask; | ||
| 135 | unsigned long sa_flags; | ||
| 136 | void (*sa_restorer)(void); | ||
| 137 | }; | ||
| 138 | |||
| 139 | #define sa_handler _u._sa_handler | ||
| 140 | #define sa_sigaction _u._sa_sigaction | ||
| 141 | |||
| 142 | #endif /* __KERNEL__ */ | ||
| 143 | |||
| 144 | typedef struct sigaltstack { | ||
| 145 | void *ss_sp; | ||
| 146 | int ss_flags; | ||
| 147 | size_t ss_size; | ||
| 148 | } stack_t; | ||
| 149 | |||
| 150 | #ifdef __KERNEL__ | ||
| 151 | |||
| 152 | #include <asm/sigcontext.h> | ||
| 153 | #undef __HAVE_ARCH_SIG_BITOPS | ||
| 154 | |||
| 155 | #define ptrace_signal_deliver(regs, cookie) do { } while (0) | ||
| 156 | |||
| 157 | #endif /* __KERNEL__ */ | ||
| 158 | |||
| 159 | #endif /* _M68KNOMMU_SIGNAL_H */ | ||
diff --git a/arch/m68k/include/asm/swab.h b/arch/m68k/include/asm/swab.h index 7d7dde1c73ec..9e3054ea59e9 100644 --- a/arch/m68k/include/asm/swab.h +++ b/arch/m68k/include/asm/swab.h | |||
| @@ -1,5 +1,27 @@ | |||
| 1 | #ifdef __uClinux__ | 1 | #ifndef _M68K_SWAB_H |
| 2 | #include "swab_no.h" | 2 | #define _M68K_SWAB_H |
| 3 | #else | 3 | |
| 4 | #include "swab_mm.h" | 4 | #include <asm/types.h> |
| 5 | #include <linux/compiler.h> | ||
| 6 | |||
| 7 | #define __SWAB_64_THRU_32__ | ||
| 8 | |||
| 9 | #if defined (__mcfisaaplus__) || defined (__mcfisac__) | ||
| 10 | static inline __attribute_const__ __u32 __arch_swab32(__u32 val) | ||
| 11 | { | ||
| 12 | __asm__("byterev %0" : "=d" (val) : "0" (val)); | ||
| 13 | return val; | ||
| 14 | } | ||
| 15 | |||
| 16 | #define __arch_swab32 __arch_swab32 | ||
| 17 | #elif !defined(__uClinux__) | ||
| 18 | |||
| 19 | static inline __attribute_const__ __u32 __arch_swab32(__u32 val) | ||
| 20 | { | ||
| 21 | __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val)); | ||
| 22 | return val; | ||
| 23 | } | ||
| 24 | #define __arch_swab32 __arch_swab32 | ||
| 5 | #endif | 25 | #endif |
| 26 | |||
| 27 | #endif /* _M68K_SWAB_H */ | ||
diff --git a/arch/m68k/include/asm/swab_mm.h b/arch/m68k/include/asm/swab_mm.h deleted file mode 100644 index 7221e3066825..000000000000 --- a/arch/m68k/include/asm/swab_mm.h +++ /dev/null | |||
| @@ -1,16 +0,0 @@ | |||
| 1 | #ifndef _M68K_SWAB_H | ||
| 2 | #define _M68K_SWAB_H | ||
| 3 | |||
| 4 | #include <asm/types.h> | ||
| 5 | #include <linux/compiler.h> | ||
| 6 | |||
| 7 | #define __SWAB_64_THRU_32__ | ||
| 8 | |||
| 9 | static inline __attribute_const__ __u32 __arch_swab32(__u32 val) | ||
| 10 | { | ||
| 11 | __asm__("rolw #8,%0; swap %0; rolw #8,%0" : "=d" (val) : "0" (val)); | ||
| 12 | return val; | ||
| 13 | } | ||
| 14 | #define __arch_swab32 __arch_swab32 | ||
| 15 | |||
| 16 | #endif /* _M68K_SWAB_H */ | ||
diff --git a/arch/m68k/include/asm/swab_no.h b/arch/m68k/include/asm/swab_no.h deleted file mode 100644 index e582257db300..000000000000 --- a/arch/m68k/include/asm/swab_no.h +++ /dev/null | |||
| @@ -1,24 +0,0 @@ | |||
| 1 | #ifndef _M68KNOMMU_SWAB_H | ||
| 2 | #define _M68KNOMMU_SWAB_H | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | |||
| 6 | #if defined(__GNUC__) && !defined(__STRICT_ANSI__) || defined(__KERNEL__) | ||
| 7 | # define __SWAB_64_THRU_32__ | ||
| 8 | #endif | ||
| 9 | |||
| 10 | #if defined (__mcfisaaplus__) || defined (__mcfisac__) | ||
| 11 | static inline __attribute_const__ __u32 __arch_swab32(__u32 val) | ||
| 12 | { | ||
| 13 | asm( | ||
| 14 | "byterev %0" | ||
| 15 | : "=d" (val) | ||
| 16 | : "0" (val) | ||
| 17 | ); | ||
| 18 | return val; | ||
| 19 | } | ||
| 20 | |||
| 21 | #define __arch_swab32 __arch_swab32 | ||
| 22 | #endif | ||
| 23 | |||
| 24 | #endif /* _M68KNOMMU_SWAB_H */ | ||
diff --git a/arch/m68k/include/asm/unistd.h b/arch/m68k/include/asm/unistd.h index df1d9d4cb1fd..3c19027331fa 100644 --- a/arch/m68k/include/asm/unistd.h +++ b/arch/m68k/include/asm/unistd.h | |||
| @@ -1,5 +1,372 @@ | |||
| 1 | #ifdef __uClinux__ | 1 | #ifndef _ASM_M68K_UNISTD_H_ |
| 2 | #include "unistd_no.h" | 2 | #define _ASM_M68K_UNISTD_H_ |
| 3 | #else | 3 | |
| 4 | #include "unistd_mm.h" | 4 | /* |
| 5 | #endif | 5 | * This file contains the system call numbers. |
| 6 | */ | ||
| 7 | |||
| 8 | #define __NR_restart_syscall 0 | ||
| 9 | #define __NR_exit 1 | ||
| 10 | #define __NR_fork 2 | ||
| 11 | #define __NR_read 3 | ||
| 12 | #define __NR_write 4 | ||
| 13 | #define __NR_open 5 | ||
| 14 | #define __NR_close 6 | ||
| 15 | #define __NR_waitpid 7 | ||
| 16 | #define __NR_creat 8 | ||
| 17 | #define __NR_link 9 | ||
| 18 | #define __NR_unlink 10 | ||
| 19 | #define __NR_execve 11 | ||
| 20 | #define __NR_chdir 12 | ||
| 21 | #define __NR_time 13 | ||
| 22 | #define __NR_mknod 14 | ||
| 23 | #define __NR_chmod 15 | ||
| 24 | #define __NR_chown 16 | ||
| 25 | #define __NR_break 17 | ||
| 26 | #define __NR_oldstat 18 | ||
| 27 | #define __NR_lseek 19 | ||
| 28 | #define __NR_getpid 20 | ||
| 29 | #define __NR_mount 21 | ||
| 30 | #define __NR_umount 22 | ||
| 31 | #define __NR_setuid 23 | ||
| 32 | #define __NR_getuid 24 | ||
| 33 | #define __NR_stime 25 | ||
| 34 | #define __NR_ptrace 26 | ||
| 35 | #define __NR_alarm 27 | ||
| 36 | #define __NR_oldfstat 28 | ||
| 37 | #define __NR_pause 29 | ||
| 38 | #define __NR_utime 30 | ||
| 39 | #define __NR_stty 31 | ||
| 40 | #define __NR_gtty 32 | ||
| 41 | #define __NR_access 33 | ||
| 42 | #define __NR_nice 34 | ||
| 43 | #define __NR_ftime 35 | ||
| 44 | #define __NR_sync 36 | ||
| 45 | #define __NR_kill 37 | ||
| 46 | #define __NR_rename 38 | ||
| 47 | #define __NR_mkdir 39 | ||
| 48 | #define __NR_rmdir 40 | ||
| 49 | #define __NR_dup 41 | ||
| 50 | #define __NR_pipe 42 | ||
| 51 | #define __NR_times 43 | ||
| 52 | #define __NR_prof 44 | ||
| 53 | #define __NR_brk 45 | ||
| 54 | #define __NR_setgid 46 | ||
| 55 | #define __NR_getgid 47 | ||
| 56 | #define __NR_signal 48 | ||
| 57 | #define __NR_geteuid 49 | ||
| 58 | #define __NR_getegid 50 | ||
| 59 | #define __NR_acct 51 | ||
| 60 | #define __NR_umount2 52 | ||
| 61 | #define __NR_lock 53 | ||
| 62 | #define __NR_ioctl 54 | ||
| 63 | #define __NR_fcntl 55 | ||
| 64 | #define __NR_mpx 56 | ||
| 65 | #define __NR_setpgid 57 | ||
| 66 | #define __NR_ulimit 58 | ||
| 67 | #define __NR_oldolduname 59 | ||
| 68 | #define __NR_umask 60 | ||
| 69 | #define __NR_chroot 61 | ||
| 70 | #define __NR_ustat 62 | ||
| 71 | #define __NR_dup2 63 | ||
| 72 | #define __NR_getppid 64 | ||
| 73 | #define __NR_getpgrp 65 | ||
| 74 | #define __NR_setsid 66 | ||
| 75 | #define __NR_sigaction 67 | ||
| 76 | #define __NR_sgetmask 68 | ||
| 77 | #define __NR_ssetmask 69 | ||
| 78 | #define __NR_setreuid 70 | ||
| 79 | #define __NR_setregid 71 | ||
| 80 | #define __NR_sigsuspend 72 | ||
| 81 | #define __NR_sigpending 73 | ||
| 82 | #define __NR_sethostname 74 | ||
| 83 | #define __NR_setrlimit 75 | ||
| 84 | #define __NR_getrlimit 76 | ||
| 85 | #define __NR_getrusage 77 | ||
| 86 | #define __NR_gettimeofday 78 | ||
| 87 | #define __NR_settimeofday 79 | ||
| 88 | #define __NR_getgroups 80 | ||
| 89 | #define __NR_setgroups 81 | ||
| 90 | #define __NR_select 82 | ||
| 91 | #define __NR_symlink 83 | ||
| 92 | #define __NR_oldlstat 84 | ||
| 93 | #define __NR_readlink 85 | ||
| 94 | #define __NR_uselib 86 | ||
| 95 | #define __NR_swapon 87 | ||
| 96 | #define __NR_reboot 88 | ||
| 97 | #define __NR_readdir 89 | ||
| 98 | #define __NR_mmap 90 | ||
| 99 | #define __NR_munmap 91 | ||
| 100 | #define __NR_truncate 92 | ||
| 101 | #define __NR_ftruncate 93 | ||
| 102 | #define __NR_fchmod 94 | ||
| 103 | #define __NR_fchown 95 | ||
| 104 | #define __NR_getpriority 96 | ||
| 105 | #define __NR_setpriority 97 | ||
| 106 | #define __NR_profil 98 | ||
| 107 | #define __NR_statfs 99 | ||
| 108 | #define __NR_fstatfs 100 | ||
| 109 | #define __NR_ioperm 101 | ||
| 110 | #define __NR_socketcall 102 | ||
| 111 | #define __NR_syslog 103 | ||
| 112 | #define __NR_setitimer 104 | ||
| 113 | #define __NR_getitimer 105 | ||
| 114 | #define __NR_stat 106 | ||
| 115 | #define __NR_lstat 107 | ||
| 116 | #define __NR_fstat 108 | ||
| 117 | #define __NR_olduname 109 | ||
| 118 | #define __NR_iopl /* 110 */ not supported | ||
| 119 | #define __NR_vhangup 111 | ||
| 120 | #define __NR_idle /* 112 */ Obsolete | ||
| 121 | #define __NR_vm86 /* 113 */ not supported | ||
| 122 | #define __NR_wait4 114 | ||
| 123 | #define __NR_swapoff 115 | ||
| 124 | #define __NR_sysinfo 116 | ||
| 125 | #define __NR_ipc 117 | ||
| 126 | #define __NR_fsync 118 | ||
| 127 | #define __NR_sigreturn 119 | ||
| 128 | #define __NR_clone 120 | ||
| 129 | #define __NR_setdomainname 121 | ||
| 130 | #define __NR_uname 122 | ||
| 131 | #define __NR_cacheflush 123 | ||
| 132 | #define __NR_adjtimex 124 | ||
| 133 | #define __NR_mprotect 125 | ||
| 134 | #define __NR_sigprocmask 126 | ||
| 135 | #define __NR_create_module 127 | ||
| 136 | #define __NR_init_module 128 | ||
| 137 | #define __NR_delete_module 129 | ||
| 138 | #define __NR_get_kernel_syms 130 | ||
| 139 | #define __NR_quotactl 131 | ||
| 140 | #define __NR_getpgid 132 | ||
| 141 | #define __NR_fchdir 133 | ||
| 142 | #define __NR_bdflush 134 | ||
| 143 | #define __NR_sysfs 135 | ||
| 144 | #define __NR_personality 136 | ||
| 145 | #define __NR_afs_syscall 137 /* Syscall for Andrew File System */ | ||
| 146 | #define __NR_setfsuid 138 | ||
| 147 | #define __NR_setfsgid 139 | ||
| 148 | #define __NR__llseek 140 | ||
| 149 | #define __NR_getdents 141 | ||
| 150 | #define __NR__newselect 142 | ||
| 151 | #define __NR_flock 143 | ||
| 152 | #define __NR_msync 144 | ||
| 153 | #define __NR_readv 145 | ||
| 154 | #define __NR_writev 146 | ||
| 155 | #define __NR_getsid 147 | ||
| 156 | #define __NR_fdatasync 148 | ||
| 157 | #define __NR__sysctl 149 | ||
| 158 | #define __NR_mlock 150 | ||
| 159 | #define __NR_munlock 151 | ||
| 160 | #define __NR_mlockall 152 | ||
| 161 | #define __NR_munlockall 153 | ||
| 162 | #define __NR_sched_setparam 154 | ||
| 163 | #define __NR_sched_getparam 155 | ||
| 164 | #define __NR_sched_setscheduler 156 | ||
| 165 | #define __NR_sched_getscheduler 157 | ||
| 166 | #define __NR_sched_yield 158 | ||
| 167 | #define __NR_sched_get_priority_max 159 | ||
| 168 | #define __NR_sched_get_priority_min 160 | ||
| 169 | #define __NR_sched_rr_get_interval 161 | ||
| 170 | #define __NR_nanosleep 162 | ||
| 171 | #define __NR_mremap 163 | ||
| 172 | #define __NR_setresuid 164 | ||
| 173 | #define __NR_getresuid 165 | ||
| 174 | #define __NR_getpagesize 166 | ||
| 175 | #define __NR_query_module 167 | ||
| 176 | #define __NR_poll 168 | ||
| 177 | #define __NR_nfsservctl 169 | ||
| 178 | #define __NR_setresgid 170 | ||
| 179 | #define __NR_getresgid 171 | ||
| 180 | #define __NR_prctl 172 | ||
| 181 | #define __NR_rt_sigreturn 173 | ||
| 182 | #define __NR_rt_sigaction 174 | ||
| 183 | #define __NR_rt_sigprocmask 175 | ||
| 184 | #define __NR_rt_sigpending 176 | ||
| 185 | #define __NR_rt_sigtimedwait 177 | ||
| 186 | #define __NR_rt_sigqueueinfo 178 | ||
| 187 | #define __NR_rt_sigsuspend 179 | ||
| 188 | #define __NR_pread64 180 | ||
| 189 | #define __NR_pwrite64 181 | ||
| 190 | #define __NR_lchown 182 | ||
| 191 | #define __NR_getcwd 183 | ||
| 192 | #define __NR_capget 184 | ||
| 193 | #define __NR_capset 185 | ||
| 194 | #define __NR_sigaltstack 186 | ||
| 195 | #define __NR_sendfile 187 | ||
| 196 | #define __NR_getpmsg 188 /* some people actually want streams */ | ||
| 197 | #define __NR_putpmsg 189 /* some people actually want streams */ | ||
| 198 | #define __NR_vfork 190 | ||
| 199 | #define __NR_ugetrlimit 191 | ||
| 200 | #define __NR_mmap2 192 | ||
| 201 | #define __NR_truncate64 193 | ||
| 202 | #define __NR_ftruncate64 194 | ||
| 203 | #define __NR_stat64 195 | ||
| 204 | #define __NR_lstat64 196 | ||
| 205 | #define __NR_fstat64 197 | ||
| 206 | #define __NR_chown32 198 | ||
| 207 | #define __NR_getuid32 199 | ||
| 208 | #define __NR_getgid32 200 | ||
| 209 | #define __NR_geteuid32 201 | ||
| 210 | #define __NR_getegid32 202 | ||
| 211 | #define __NR_setreuid32 203 | ||
| 212 | #define __NR_setregid32 204 | ||
| 213 | #define __NR_getgroups32 205 | ||
| 214 | #define __NR_setgroups32 206 | ||
| 215 | #define __NR_fchown32 207 | ||
| 216 | #define __NR_setresuid32 208 | ||
| 217 | #define __NR_getresuid32 209 | ||
| 218 | #define __NR_setresgid32 210 | ||
| 219 | #define __NR_getresgid32 211 | ||
| 220 | #define __NR_lchown32 212 | ||
| 221 | #define __NR_setuid32 213 | ||
| 222 | #define __NR_setgid32 214 | ||
| 223 | #define __NR_setfsuid32 215 | ||
| 224 | #define __NR_setfsgid32 216 | ||
| 225 | #define __NR_pivot_root 217 | ||
| 226 | #define __NR_getdents64 220 | ||
| 227 | #define __NR_gettid 221 | ||
| 228 | #define __NR_tkill 222 | ||
| 229 | #define __NR_setxattr 223 | ||
| 230 | #define __NR_lsetxattr 224 | ||
| 231 | #define __NR_fsetxattr 225 | ||
| 232 | #define __NR_getxattr 226 | ||
| 233 | #define __NR_lgetxattr 227 | ||
| 234 | #define __NR_fgetxattr 228 | ||
| 235 | #define __NR_listxattr 229 | ||
| 236 | #define __NR_llistxattr 230 | ||
| 237 | #define __NR_flistxattr 231 | ||
| 238 | #define __NR_removexattr 232 | ||
| 239 | #define __NR_lremovexattr 233 | ||
| 240 | #define __NR_fremovexattr 234 | ||
| 241 | #define __NR_futex 235 | ||
| 242 | #define __NR_sendfile64 236 | ||
| 243 | #define __NR_mincore 237 | ||
| 244 | #define __NR_madvise 238 | ||
| 245 | #define __NR_fcntl64 239 | ||
| 246 | #define __NR_readahead 240 | ||
| 247 | #define __NR_io_setup 241 | ||
| 248 | #define __NR_io_destroy 242 | ||
| 249 | #define __NR_io_getevents 243 | ||
| 250 | #define __NR_io_submit 244 | ||
| 251 | #define __NR_io_cancel 245 | ||
| 252 | #define __NR_fadvise64 246 | ||
| 253 | #define __NR_exit_group 247 | ||
| 254 | #define __NR_lookup_dcookie 248 | ||
| 255 | #define __NR_epoll_create 249 | ||
| 256 | #define __NR_epoll_ctl 250 | ||
| 257 | #define __NR_epoll_wait 251 | ||
| 258 | #define __NR_remap_file_pages 252 | ||
| 259 | #define __NR_set_tid_address 253 | ||
| 260 | #define __NR_timer_create 254 | ||
| 261 | #define __NR_timer_settime 255 | ||
| 262 | #define __NR_timer_gettime 256 | ||
| 263 | #define __NR_timer_getoverrun 257 | ||
| 264 | #define __NR_timer_delete 258 | ||
| 265 | #define __NR_clock_settime 259 | ||
| 266 | #define __NR_clock_gettime 260 | ||
| 267 | #define __NR_clock_getres 261 | ||
| 268 | #define __NR_clock_nanosleep 262 | ||
| 269 | #define __NR_statfs64 263 | ||
| 270 | #define __NR_fstatfs64 264 | ||
| 271 | #define __NR_tgkill 265 | ||
| 272 | #define __NR_utimes 266 | ||
| 273 | #define __NR_fadvise64_64 267 | ||
| 274 | #define __NR_mbind 268 | ||
| 275 | #define __NR_get_mempolicy 269 | ||
| 276 | #define __NR_set_mempolicy 270 | ||
| 277 | #define __NR_mq_open 271 | ||
| 278 | #define __NR_mq_unlink 272 | ||
| 279 | #define __NR_mq_timedsend 273 | ||
| 280 | #define __NR_mq_timedreceive 274 | ||
| 281 | #define __NR_mq_notify 275 | ||
| 282 | #define __NR_mq_getsetattr 276 | ||
| 283 | #define __NR_waitid 277 | ||
| 284 | #define __NR_vserver 278 | ||
| 285 | #define __NR_add_key 279 | ||
| 286 | #define __NR_request_key 280 | ||
| 287 | #define __NR_keyctl 281 | ||
| 288 | #define __NR_ioprio_set 282 | ||
| 289 | #define __NR_ioprio_get 283 | ||
| 290 | #define __NR_inotify_init 284 | ||
| 291 | #define __NR_inotify_add_watch 285 | ||
| 292 | #define __NR_inotify_rm_watch 286 | ||
| 293 | #define __NR_migrate_pages 287 | ||
| 294 | #define __NR_openat 288 | ||
| 295 | #define __NR_mkdirat 289 | ||
| 296 | #define __NR_mknodat 290 | ||
| 297 | #define __NR_fchownat 291 | ||
| 298 | #define __NR_futimesat 292 | ||
| 299 | #define __NR_fstatat64 293 | ||
| 300 | #define __NR_unlinkat 294 | ||
| 301 | #define __NR_renameat 295 | ||
| 302 | #define __NR_linkat 296 | ||
| 303 | #define __NR_symlinkat 297 | ||
| 304 | #define __NR_readlinkat 298 | ||
| 305 | #define __NR_fchmodat 299 | ||
| 306 | #define __NR_faccessat 300 | ||
| 307 | #define __NR_pselect6 301 | ||
| 308 | #define __NR_ppoll 302 | ||
| 309 | #define __NR_unshare 303 | ||
| 310 | #define __NR_set_robust_list 304 | ||
| 311 | #define __NR_get_robust_list 305 | ||
| 312 | #define __NR_splice 306 | ||
| 313 | #define __NR_sync_file_range 307 | ||
| 314 | #define __NR_tee 308 | ||
| 315 | #define __NR_vmsplice 309 | ||
| 316 | #define __NR_move_pages 310 | ||
| 317 | #define __NR_sched_setaffinity 311 | ||
| 318 | #define __NR_sched_getaffinity 312 | ||
| 319 | #define __NR_kexec_load 313 | ||
| 320 | #define __NR_getcpu 314 | ||
| 321 | #define __NR_epoll_pwait 315 | ||
| 322 | #define __NR_utimensat 316 | ||
| 323 | #define __NR_signalfd 317 | ||
| 324 | #define __NR_timerfd_create 318 | ||
| 325 | #define __NR_eventfd 319 | ||
| 326 | #define __NR_fallocate 320 | ||
| 327 | #define __NR_timerfd_settime 321 | ||
| 328 | #define __NR_timerfd_gettime 322 | ||
| 329 | #define __NR_signalfd4 323 | ||
| 330 | #define __NR_eventfd2 324 | ||
| 331 | #define __NR_epoll_create1 325 | ||
| 332 | #define __NR_dup3 326 | ||
| 333 | #define __NR_pipe2 327 | ||
| 334 | #define __NR_inotify_init1 328 | ||
| 335 | |||
| 336 | #ifdef __KERNEL__ | ||
| 337 | |||
| 338 | #define NR_syscalls 329 | ||
| 339 | |||
| 340 | #define __ARCH_WANT_IPC_PARSE_VERSION | ||
| 341 | #define __ARCH_WANT_OLD_READDIR | ||
| 342 | #define __ARCH_WANT_OLD_STAT | ||
| 343 | #define __ARCH_WANT_STAT64 | ||
| 344 | #define __ARCH_WANT_SYS_ALARM | ||
| 345 | #define __ARCH_WANT_SYS_GETHOSTNAME | ||
| 346 | #define __ARCH_WANT_SYS_PAUSE | ||
| 347 | #define __ARCH_WANT_SYS_SGETMASK | ||
| 348 | #define __ARCH_WANT_SYS_SIGNAL | ||
| 349 | #define __ARCH_WANT_SYS_TIME | ||
| 350 | #define __ARCH_WANT_SYS_UTIME | ||
| 351 | #define __ARCH_WANT_SYS_WAITPID | ||
| 352 | #define __ARCH_WANT_SYS_SOCKETCALL | ||
| 353 | #define __ARCH_WANT_SYS_FADVISE64 | ||
| 354 | #define __ARCH_WANT_SYS_GETPGRP | ||
| 355 | #define __ARCH_WANT_SYS_LLSEEK | ||
| 356 | #define __ARCH_WANT_SYS_NICE | ||
| 357 | #define __ARCH_WANT_SYS_OLD_GETRLIMIT | ||
| 358 | #define __ARCH_WANT_SYS_OLDUMOUNT | ||
| 359 | #define __ARCH_WANT_SYS_SIGPENDING | ||
| 360 | #define __ARCH_WANT_SYS_SIGPROCMASK | ||
| 361 | #define __ARCH_WANT_SYS_RT_SIGACTION | ||
| 362 | |||
| 363 | /* | ||
| 364 | * "Conditional" syscalls | ||
| 365 | * | ||
| 366 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
| 367 | * but it doesn't work on all toolchains, so we just do it by hand | ||
| 368 | */ | ||
| 369 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | ||
| 370 | |||
| 371 | #endif /* __KERNEL__ */ | ||
| 372 | #endif /* _ASM_M68K_UNISTD_H_ */ | ||
diff --git a/arch/m68k/include/asm/unistd_mm.h b/arch/m68k/include/asm/unistd_mm.h deleted file mode 100644 index 3c19027331fa..000000000000 --- a/arch/m68k/include/asm/unistd_mm.h +++ /dev/null | |||
| @@ -1,372 +0,0 @@ | |||
| 1 | #ifndef _ASM_M68K_UNISTD_H_ | ||
| 2 | #define _ASM_M68K_UNISTD_H_ | ||
| 3 | |||
| 4 | /* | ||
| 5 | * This file contains the system call numbers. | ||
| 6 | */ | ||
| 7 | |||
| 8 | #define __NR_restart_syscall 0 | ||
| 9 | #define __NR_exit 1 | ||
| 10 | #define __NR_fork 2 | ||
| 11 | #define __NR_read 3 | ||
| 12 | #define __NR_write 4 | ||
| 13 | #define __NR_open 5 | ||
| 14 | #define __NR_close 6 | ||
| 15 | #define __NR_waitpid 7 | ||
| 16 | #define __NR_creat 8 | ||
| 17 | #define __NR_link 9 | ||
| 18 | #define __NR_unlink 10 | ||
| 19 | #define __NR_execve 11 | ||
| 20 | #define __NR_chdir 12 | ||
| 21 | #define __NR_time 13 | ||
| 22 | #define __NR_mknod 14 | ||
| 23 | #define __NR_chmod 15 | ||
| 24 | #define __NR_chown 16 | ||
| 25 | #define __NR_break 17 | ||
| 26 | #define __NR_oldstat 18 | ||
| 27 | #define __NR_lseek 19 | ||
| 28 | #define __NR_getpid 20 | ||
| 29 | #define __NR_mount 21 | ||
| 30 | #define __NR_umount 22 | ||
| 31 | #define __NR_setuid 23 | ||
| 32 | #define __NR_getuid 24 | ||
| 33 | #define __NR_stime 25 | ||
| 34 | #define __NR_ptrace 26 | ||
| 35 | #define __NR_alarm 27 | ||
| 36 | #define __NR_oldfstat 28 | ||
| 37 | #define __NR_pause 29 | ||
| 38 | #define __NR_utime 30 | ||
| 39 | #define __NR_stty 31 | ||
| 40 | #define __NR_gtty 32 | ||
| 41 | #define __NR_access 33 | ||
| 42 | #define __NR_nice 34 | ||
| 43 | #define __NR_ftime 35 | ||
| 44 | #define __NR_sync 36 | ||
| 45 | #define __NR_kill 37 | ||
| 46 | #define __NR_rename 38 | ||
| 47 | #define __NR_mkdir 39 | ||
| 48 | #define __NR_rmdir 40 | ||
| 49 | #define __NR_dup 41 | ||
| 50 | #define __NR_pipe 42 | ||
| 51 | #define __NR_times 43 | ||
| 52 | #define __NR_prof 44 | ||
| 53 | #define __NR_brk 45 | ||
| 54 | #define __NR_setgid 46 | ||
| 55 | #define __NR_getgid 47 | ||
| 56 | #define __NR_signal 48 | ||
| 57 | #define __NR_geteuid 49 | ||
| 58 | #define __NR_getegid 50 | ||
| 59 | #define __NR_acct 51 | ||
| 60 | #define __NR_umount2 52 | ||
| 61 | #define __NR_lock 53 | ||
| 62 | #define __NR_ioctl 54 | ||
| 63 | #define __NR_fcntl 55 | ||
| 64 | #define __NR_mpx 56 | ||
| 65 | #define __NR_setpgid 57 | ||
| 66 | #define __NR_ulimit 58 | ||
| 67 | #define __NR_oldolduname 59 | ||
| 68 | #define __NR_umask 60 | ||
| 69 | #define __NR_chroot 61 | ||
| 70 | #define __NR_ustat 62 | ||
| 71 | #define __NR_dup2 63 | ||
| 72 | #define __NR_getppid 64 | ||
| 73 | #define __NR_getpgrp 65 | ||
| 74 | #define __NR_setsid 66 | ||
| 75 | #define __NR_sigaction 67 | ||
| 76 | #define __NR_sgetmask 68 | ||
| 77 | #define __NR_ssetmask 69 | ||
| 78 | #define __NR_setreuid 70 | ||
| 79 | #define __NR_setregid 71 | ||
| 80 | #define __NR_sigsuspend 72 | ||
| 81 | #define __NR_sigpending 73 | ||
| 82 | #define __NR_sethostname 74 | ||
| 83 | #define __NR_setrlimit 75 | ||
| 84 | #define __NR_getrlimit 76 | ||
| 85 | #define __NR_getrusage 77 | ||
| 86 | #define __NR_gettimeofday 78 | ||
| 87 | #define __NR_settimeofday 79 | ||
| 88 | #define __NR_getgroups 80 | ||
| 89 | #define __NR_setgroups 81 | ||
| 90 | #define __NR_select 82 | ||
| 91 | #define __NR_symlink 83 | ||
| 92 | #define __NR_oldlstat 84 | ||
| 93 | #define __NR_readlink 85 | ||
| 94 | #define __NR_uselib 86 | ||
| 95 | #define __NR_swapon 87 | ||
| 96 | #define __NR_reboot 88 | ||
| 97 | #define __NR_readdir 89 | ||
| 98 | #define __NR_mmap 90 | ||
| 99 | #define __NR_munmap 91 | ||
| 100 | #define __NR_truncate 92 | ||
| 101 | #define __NR_ftruncate 93 | ||
| 102 | #define __NR_fchmod 94 | ||
| 103 | #define __NR_fchown 95 | ||
| 104 | #define __NR_getpriority 96 | ||
| 105 | #define __NR_setpriority 97 | ||
| 106 | #define __NR_profil 98 | ||
| 107 | #define __NR_statfs 99 | ||
| 108 | #define __NR_fstatfs 100 | ||
| 109 | #define __NR_ioperm 101 | ||
| 110 | #define __NR_socketcall 102 | ||
| 111 | #define __NR_syslog 103 | ||
| 112 | #define __NR_setitimer 104 | ||
| 113 | #define __NR_getitimer 105 | ||
| 114 | #define __NR_stat 106 | ||
| 115 | #define __NR_lstat 107 | ||
| 116 | #define __NR_fstat 108 | ||
| 117 | #define __NR_olduname 109 | ||
| 118 | #define __NR_iopl /* 110 */ not supported | ||
| 119 | #define __NR_vhangup 111 | ||
| 120 | #define __NR_idle /* 112 */ Obsolete | ||
| 121 | #define __NR_vm86 /* 113 */ not supported | ||
| 122 | #define __NR_wait4 114 | ||
| 123 | #define __NR_swapoff 115 | ||
| 124 | #define __NR_sysinfo 116 | ||
| 125 | #define __NR_ipc 117 | ||
| 126 | #define __NR_fsync 118 | ||
| 127 | #define __NR_sigreturn 119 | ||
| 128 | #define __NR_clone 120 | ||
| 129 | #define __NR_setdomainname 121 | ||
| 130 | #define __NR_uname 122 | ||
| 131 | #define __NR_cacheflush 123 | ||
| 132 | #define __NR_adjtimex 124 | ||
| 133 | #define __NR_mprotect 125 | ||
| 134 | #define __NR_sigprocmask 126 | ||
| 135 | #define __NR_create_module 127 | ||
| 136 | #define __NR_init_module 128 | ||
| 137 | #define __NR_delete_module 129 | ||
| 138 | #define __NR_get_kernel_syms 130 | ||
| 139 | #define __NR_quotactl 131 | ||
| 140 | #define __NR_getpgid 132 | ||
| 141 | #define __NR_fchdir 133 | ||
| 142 | #define __NR_bdflush 134 | ||
| 143 | #define __NR_sysfs 135 | ||
| 144 | #define __NR_personality 136 | ||
| 145 | #define __NR_afs_syscall 137 /* Syscall for Andrew File System */ | ||
| 146 | #define __NR_setfsuid 138 | ||
| 147 | #define __NR_setfsgid 139 | ||
| 148 | #define __NR__llseek 140 | ||
| 149 | #define __NR_getdents 141 | ||
| 150 | #define __NR__newselect 142 | ||
| 151 | #define __NR_flock 143 | ||
| 152 | #define __NR_msync 144 | ||
| 153 | #define __NR_readv 145 | ||
| 154 | #define __NR_writev 146 | ||
| 155 | #define __NR_getsid 147 | ||
| 156 | #define __NR_fdatasync 148 | ||
| 157 | #define __NR__sysctl 149 | ||
| 158 | #define __NR_mlock 150 | ||
| 159 | #define __NR_munlock 151 | ||
| 160 | #define __NR_mlockall 152 | ||
| 161 | #define __NR_munlockall 153 | ||
| 162 | #define __NR_sched_setparam 154 | ||
| 163 | #define __NR_sched_getparam 155 | ||
| 164 | #define __NR_sched_setscheduler 156 | ||
| 165 | #define __NR_sched_getscheduler 157 | ||
| 166 | #define __NR_sched_yield 158 | ||
| 167 | #define __NR_sched_get_priority_max 159 | ||
| 168 | #define __NR_sched_get_priority_min 160 | ||
| 169 | #define __NR_sched_rr_get_interval 161 | ||
| 170 | #define __NR_nanosleep 162 | ||
| 171 | #define __NR_mremap 163 | ||
| 172 | #define __NR_setresuid 164 | ||
| 173 | #define __NR_getresuid 165 | ||
| 174 | #define __NR_getpagesize 166 | ||
| 175 | #define __NR_query_module 167 | ||
| 176 | #define __NR_poll 168 | ||
| 177 | #define __NR_nfsservctl 169 | ||
| 178 | #define __NR_setresgid 170 | ||
| 179 | #define __NR_getresgid 171 | ||
| 180 | #define __NR_prctl 172 | ||
| 181 | #define __NR_rt_sigreturn 173 | ||
| 182 | #define __NR_rt_sigaction 174 | ||
| 183 | #define __NR_rt_sigprocmask 175 | ||
| 184 | #define __NR_rt_sigpending 176 | ||
| 185 | #define __NR_rt_sigtimedwait 177 | ||
| 186 | #define __NR_rt_sigqueueinfo 178 | ||
| 187 | #define __NR_rt_sigsuspend 179 | ||
| 188 | #define __NR_pread64 180 | ||
| 189 | #define __NR_pwrite64 181 | ||
| 190 | #define __NR_lchown 182 | ||
| 191 | #define __NR_getcwd 183 | ||
| 192 | #define __NR_capget 184 | ||
| 193 | #define __NR_capset 185 | ||
| 194 | #define __NR_sigaltstack 186 | ||
| 195 | #define __NR_sendfile 187 | ||
| 196 | #define __NR_getpmsg 188 /* some people actually want streams */ | ||
| 197 | #define __NR_putpmsg 189 /* some people actually want streams */ | ||
| 198 | #define __NR_vfork 190 | ||
| 199 | #define __NR_ugetrlimit 191 | ||
| 200 | #define __NR_mmap2 192 | ||
| 201 | #define __NR_truncate64 193 | ||
| 202 | #define __NR_ftruncate64 194 | ||
| 203 | #define __NR_stat64 195 | ||
| 204 | #define __NR_lstat64 196 | ||
| 205 | #define __NR_fstat64 197 | ||
| 206 | #define __NR_chown32 198 | ||
| 207 | #define __NR_getuid32 199 | ||
| 208 | #define __NR_getgid32 200 | ||
| 209 | #define __NR_geteuid32 201 | ||
| 210 | #define __NR_getegid32 202 | ||
| 211 | #define __NR_setreuid32 203 | ||
| 212 | #define __NR_setregid32 204 | ||
| 213 | #define __NR_getgroups32 205 | ||
| 214 | #define __NR_setgroups32 206 | ||
| 215 | #define __NR_fchown32 207 | ||
| 216 | #define __NR_setresuid32 208 | ||
| 217 | #define __NR_getresuid32 209 | ||
| 218 | #define __NR_setresgid32 210 | ||
| 219 | #define __NR_getresgid32 211 | ||
| 220 | #define __NR_lchown32 212 | ||
| 221 | #define __NR_setuid32 213 | ||
| 222 | #define __NR_setgid32 214 | ||
| 223 | #define __NR_setfsuid32 215 | ||
| 224 | #define __NR_setfsgid32 216 | ||
| 225 | #define __NR_pivot_root 217 | ||
| 226 | #define __NR_getdents64 220 | ||
| 227 | #define __NR_gettid 221 | ||
| 228 | #define __NR_tkill 222 | ||
| 229 | #define __NR_setxattr 223 | ||
| 230 | #define __NR_lsetxattr 224 | ||
| 231 | #define __NR_fsetxattr 225 | ||
| 232 | #define __NR_getxattr 226 | ||
| 233 | #define __NR_lgetxattr 227 | ||
| 234 | #define __NR_fgetxattr 228 | ||
| 235 | #define __NR_listxattr 229 | ||
| 236 | #define __NR_llistxattr 230 | ||
| 237 | #define __NR_flistxattr 231 | ||
| 238 | #define __NR_removexattr 232 | ||
| 239 | #define __NR_lremovexattr 233 | ||
| 240 | #define __NR_fremovexattr 234 | ||
| 241 | #define __NR_futex 235 | ||
| 242 | #define __NR_sendfile64 236 | ||
| 243 | #define __NR_mincore 237 | ||
| 244 | #define __NR_madvise 238 | ||
| 245 | #define __NR_fcntl64 239 | ||
| 246 | #define __NR_readahead 240 | ||
| 247 | #define __NR_io_setup 241 | ||
| 248 | #define __NR_io_destroy 242 | ||
| 249 | #define __NR_io_getevents 243 | ||
| 250 | #define __NR_io_submit 244 | ||
| 251 | #define __NR_io_cancel 245 | ||
| 252 | #define __NR_fadvise64 246 | ||
| 253 | #define __NR_exit_group 247 | ||
| 254 | #define __NR_lookup_dcookie 248 | ||
| 255 | #define __NR_epoll_create 249 | ||
| 256 | #define __NR_epoll_ctl 250 | ||
| 257 | #define __NR_epoll_wait 251 | ||
| 258 | #define __NR_remap_file_pages 252 | ||
| 259 | #define __NR_set_tid_address 253 | ||
| 260 | #define __NR_timer_create 254 | ||
| 261 | #define __NR_timer_settime 255 | ||
| 262 | #define __NR_timer_gettime 256 | ||
| 263 | #define __NR_timer_getoverrun 257 | ||
| 264 | #define __NR_timer_delete 258 | ||
| 265 | #define __NR_clock_settime 259 | ||
| 266 | #define __NR_clock_gettime 260 | ||
| 267 | #define __NR_clock_getres 261 | ||
| 268 | #define __NR_clock_nanosleep 262 | ||
| 269 | #define __NR_statfs64 263 | ||
| 270 | #define __NR_fstatfs64 264 | ||
| 271 | #define __NR_tgkill 265 | ||
| 272 | #define __NR_utimes 266 | ||
| 273 | #define __NR_fadvise64_64 267 | ||
| 274 | #define __NR_mbind 268 | ||
| 275 | #define __NR_get_mempolicy 269 | ||
| 276 | #define __NR_set_mempolicy 270 | ||
| 277 | #define __NR_mq_open 271 | ||
| 278 | #define __NR_mq_unlink 272 | ||
| 279 | #define __NR_mq_timedsend 273 | ||
| 280 | #define __NR_mq_timedreceive 274 | ||
| 281 | #define __NR_mq_notify 275 | ||
| 282 | #define __NR_mq_getsetattr 276 | ||
| 283 | #define __NR_waitid 277 | ||
| 284 | #define __NR_vserver 278 | ||
| 285 | #define __NR_add_key 279 | ||
| 286 | #define __NR_request_key 280 | ||
| 287 | #define __NR_keyctl 281 | ||
| 288 | #define __NR_ioprio_set 282 | ||
| 289 | #define __NR_ioprio_get 283 | ||
| 290 | #define __NR_inotify_init 284 | ||
| 291 | #define __NR_inotify_add_watch 285 | ||
| 292 | #define __NR_inotify_rm_watch 286 | ||
| 293 | #define __NR_migrate_pages 287 | ||
| 294 | #define __NR_openat 288 | ||
| 295 | #define __NR_mkdirat 289 | ||
| 296 | #define __NR_mknodat 290 | ||
| 297 | #define __NR_fchownat 291 | ||
| 298 | #define __NR_futimesat 292 | ||
| 299 | #define __NR_fstatat64 293 | ||
| 300 | #define __NR_unlinkat 294 | ||
| 301 | #define __NR_renameat 295 | ||
| 302 | #define __NR_linkat 296 | ||
| 303 | #define __NR_symlinkat 297 | ||
| 304 | #define __NR_readlinkat 298 | ||
| 305 | #define __NR_fchmodat 299 | ||
| 306 | #define __NR_faccessat 300 | ||
| 307 | #define __NR_pselect6 301 | ||
| 308 | #define __NR_ppoll 302 | ||
| 309 | #define __NR_unshare 303 | ||
| 310 | #define __NR_set_robust_list 304 | ||
| 311 | #define __NR_get_robust_list 305 | ||
| 312 | #define __NR_splice 306 | ||
| 313 | #define __NR_sync_file_range 307 | ||
| 314 | #define __NR_tee 308 | ||
| 315 | #define __NR_vmsplice 309 | ||
| 316 | #define __NR_move_pages 310 | ||
| 317 | #define __NR_sched_setaffinity 311 | ||
| 318 | #define __NR_sched_getaffinity 312 | ||
| 319 | #define __NR_kexec_load 313 | ||
| 320 | #define __NR_getcpu 314 | ||
| 321 | #define __NR_epoll_pwait 315 | ||
| 322 | #define __NR_utimensat 316 | ||
| 323 | #define __NR_signalfd 317 | ||
| 324 | #define __NR_timerfd_create 318 | ||
| 325 | #define __NR_eventfd 319 | ||
| 326 | #define __NR_fallocate 320 | ||
| 327 | #define __NR_timerfd_settime 321 | ||
| 328 | #define __NR_timerfd_gettime 322 | ||
| 329 | #define __NR_signalfd4 323 | ||
| 330 | #define __NR_eventfd2 324 | ||
| 331 | #define __NR_epoll_create1 325 | ||
| 332 | #define __NR_dup3 326 | ||
| 333 | #define __NR_pipe2 327 | ||
| 334 | #define __NR_inotify_init1 328 | ||
| 335 | |||
| 336 | #ifdef __KERNEL__ | ||
| 337 | |||
| 338 | #define NR_syscalls 329 | ||
| 339 | |||
| 340 | #define __ARCH_WANT_IPC_PARSE_VERSION | ||
| 341 | #define __ARCH_WANT_OLD_READDIR | ||
| 342 | #define __ARCH_WANT_OLD_STAT | ||
| 343 | #define __ARCH_WANT_STAT64 | ||
| 344 | #define __ARCH_WANT_SYS_ALARM | ||
| 345 | #define __ARCH_WANT_SYS_GETHOSTNAME | ||
| 346 | #define __ARCH_WANT_SYS_PAUSE | ||
| 347 | #define __ARCH_WANT_SYS_SGETMASK | ||
| 348 | #define __ARCH_WANT_SYS_SIGNAL | ||
| 349 | #define __ARCH_WANT_SYS_TIME | ||
| 350 | #define __ARCH_WANT_SYS_UTIME | ||
| 351 | #define __ARCH_WANT_SYS_WAITPID | ||
| 352 | #define __ARCH_WANT_SYS_SOCKETCALL | ||
| 353 | #define __ARCH_WANT_SYS_FADVISE64 | ||
| 354 | #define __ARCH_WANT_SYS_GETPGRP | ||
| 355 | #define __ARCH_WANT_SYS_LLSEEK | ||
| 356 | #define __ARCH_WANT_SYS_NICE | ||
| 357 | #define __ARCH_WANT_SYS_OLD_GETRLIMIT | ||
| 358 | #define __ARCH_WANT_SYS_OLDUMOUNT | ||
| 359 | #define __ARCH_WANT_SYS_SIGPENDING | ||
| 360 | #define __ARCH_WANT_SYS_SIGPROCMASK | ||
| 361 | #define __ARCH_WANT_SYS_RT_SIGACTION | ||
| 362 | |||
| 363 | /* | ||
| 364 | * "Conditional" syscalls | ||
| 365 | * | ||
| 366 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
| 367 | * but it doesn't work on all toolchains, so we just do it by hand | ||
| 368 | */ | ||
| 369 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | ||
| 370 | |||
| 371 | #endif /* __KERNEL__ */ | ||
| 372 | #endif /* _ASM_M68K_UNISTD_H_ */ | ||
diff --git a/arch/m68k/include/asm/unistd_no.h b/arch/m68k/include/asm/unistd_no.h deleted file mode 100644 index b034a2f7b444..000000000000 --- a/arch/m68k/include/asm/unistd_no.h +++ /dev/null | |||
| @@ -1,372 +0,0 @@ | |||
| 1 | #ifndef _ASM_M68K_UNISTD_H_ | ||
| 2 | #define _ASM_M68K_UNISTD_H_ | ||
| 3 | |||
| 4 | /* | ||
| 5 | * This file contains the system call numbers. | ||
| 6 | */ | ||
| 7 | |||
| 8 | #define __NR_restart_syscall 0 | ||
| 9 | #define __NR_exit 1 | ||
| 10 | #define __NR_fork 2 | ||
| 11 | #define __NR_read 3 | ||
| 12 | #define __NR_write 4 | ||
| 13 | #define __NR_open 5 | ||
| 14 | #define __NR_close 6 | ||
| 15 | #define __NR_waitpid 7 | ||
| 16 | #define __NR_creat 8 | ||
| 17 | #define __NR_link 9 | ||
| 18 | #define __NR_unlink 10 | ||
| 19 | #define __NR_execve 11 | ||
| 20 | #define __NR_chdir 12 | ||
| 21 | #define __NR_time 13 | ||
| 22 | #define __NR_mknod 14 | ||
| 23 | #define __NR_chmod 15 | ||
| 24 | #define __NR_chown 16 | ||
| 25 | #define __NR_break 17 | ||
| 26 | #define __NR_oldstat 18 | ||
| 27 | #define __NR_lseek 19 | ||
| 28 | #define __NR_getpid 20 | ||
| 29 | #define __NR_mount 21 | ||
| 30 | #define __NR_umount 22 | ||
| 31 | #define __NR_setuid 23 | ||
| 32 | #define __NR_getuid 24 | ||
| 33 | #define __NR_stime 25 | ||
| 34 | #define __NR_ptrace 26 | ||
| 35 | #define __NR_alarm 27 | ||
| 36 | #define __NR_oldfstat 28 | ||
| 37 | #define __NR_pause 29 | ||
| 38 | #define __NR_utime 30 | ||
| 39 | #define __NR_stty 31 | ||
| 40 | #define __NR_gtty 32 | ||
| 41 | #define __NR_access 33 | ||
| 42 | #define __NR_nice 34 | ||
| 43 | #define __NR_ftime 35 | ||
| 44 | #define __NR_sync 36 | ||
| 45 | #define __NR_kill 37 | ||
| 46 | #define __NR_rename 38 | ||
| 47 | #define __NR_mkdir 39 | ||
| 48 | #define __NR_rmdir 40 | ||
| 49 | #define __NR_dup 41 | ||
| 50 | #define __NR_pipe 42 | ||
| 51 | #define __NR_times 43 | ||
| 52 | #define __NR_prof 44 | ||
| 53 | #define __NR_brk 45 | ||
| 54 | #define __NR_setgid 46 | ||
| 55 | #define __NR_getgid 47 | ||
| 56 | #define __NR_signal 48 | ||
| 57 | #define __NR_geteuid 49 | ||
| 58 | #define __NR_getegid 50 | ||
| 59 | #define __NR_acct 51 | ||
| 60 | #define __NR_umount2 52 | ||
| 61 | #define __NR_lock 53 | ||
| 62 | #define __NR_ioctl 54 | ||
| 63 | #define __NR_fcntl 55 | ||
| 64 | #define __NR_mpx 56 | ||
| 65 | #define __NR_setpgid 57 | ||
| 66 | #define __NR_ulimit 58 | ||
| 67 | #define __NR_oldolduname 59 | ||
| 68 | #define __NR_umask 60 | ||
| 69 | #define __NR_chroot 61 | ||
| 70 | #define __NR_ustat 62 | ||
| 71 | #define __NR_dup2 63 | ||
| 72 | #define __NR_getppid 64 | ||
| 73 | #define __NR_getpgrp 65 | ||
| 74 | #define __NR_setsid 66 | ||
| 75 | #define __NR_sigaction 67 | ||
| 76 | #define __NR_sgetmask 68 | ||
| 77 | #define __NR_ssetmask 69 | ||
| 78 | #define __NR_setreuid 70 | ||
| 79 | #define __NR_setregid 71 | ||
| 80 | #define __NR_sigsuspend 72 | ||
| 81 | #define __NR_sigpending 73 | ||
| 82 | #define __NR_sethostname 74 | ||
| 83 | #define __NR_setrlimit 75 | ||
| 84 | #define __NR_getrlimit 76 | ||
| 85 | #define __NR_getrusage 77 | ||
| 86 | #define __NR_gettimeofday 78 | ||
| 87 | #define __NR_settimeofday 79 | ||
| 88 | #define __NR_getgroups 80 | ||
| 89 | #define __NR_setgroups 81 | ||
| 90 | #define __NR_select 82 | ||
| 91 | #define __NR_symlink 83 | ||
| 92 | #define __NR_oldlstat 84 | ||
| 93 | #define __NR_readlink 85 | ||
| 94 | #define __NR_uselib 86 | ||
| 95 | #define __NR_swapon 87 | ||
| 96 | #define __NR_reboot 88 | ||
| 97 | #define __NR_readdir 89 | ||
| 98 | #define __NR_mmap 90 | ||
| 99 | #define __NR_munmap 91 | ||
| 100 | #define __NR_truncate 92 | ||
| 101 | #define __NR_ftruncate 93 | ||
| 102 | #define __NR_fchmod 94 | ||
| 103 | #define __NR_fchown 95 | ||
| 104 | #define __NR_getpriority 96 | ||
| 105 | #define __NR_setpriority 97 | ||
| 106 | #define __NR_profil 98 | ||
| 107 | #define __NR_statfs 99 | ||
| 108 | #define __NR_fstatfs 100 | ||
| 109 | #define __NR_ioperm 101 | ||
| 110 | #define __NR_socketcall 102 | ||
| 111 | #define __NR_syslog 103 | ||
| 112 | #define __NR_setitimer 104 | ||
| 113 | #define __NR_getitimer 105 | ||
| 114 | #define __NR_stat 106 | ||
| 115 | #define __NR_lstat 107 | ||
| 116 | #define __NR_fstat 108 | ||
| 117 | #define __NR_olduname 109 | ||
| 118 | #define __NR_iopl /* 110 */ not supported | ||
| 119 | #define __NR_vhangup 111 | ||
| 120 | #define __NR_idle /* 112 */ Obsolete | ||
| 121 | #define __NR_vm86 /* 113 */ not supported | ||
| 122 | #define __NR_wait4 114 | ||
| 123 | #define __NR_swapoff 115 | ||
| 124 | #define __NR_sysinfo 116 | ||
| 125 | #define __NR_ipc 117 | ||
| 126 | #define __NR_fsync 118 | ||
| 127 | #define __NR_sigreturn 119 | ||
| 128 | #define __NR_clone 120 | ||
| 129 | #define __NR_setdomainname 121 | ||
| 130 | #define __NR_uname 122 | ||
| 131 | #define __NR_cacheflush 123 | ||
| 132 | #define __NR_adjtimex 124 | ||
| 133 | #define __NR_mprotect 125 | ||
| 134 | #define __NR_sigprocmask 126 | ||
| 135 | #define __NR_create_module 127 | ||
| 136 | #define __NR_init_module 128 | ||
| 137 | #define __NR_delete_module 129 | ||
| 138 | #define __NR_get_kernel_syms 130 | ||
| 139 | #define __NR_quotactl 131 | ||
| 140 | #define __NR_getpgid 132 | ||
| 141 | #define __NR_fchdir 133 | ||
| 142 | #define __NR_bdflush 134 | ||
| 143 | #define __NR_sysfs 135 | ||
| 144 | #define __NR_personality 136 | ||
| 145 | #define __NR_afs_syscall 137 /* Syscall for Andrew File System */ | ||
| 146 | #define __NR_setfsuid 138 | ||
| 147 | #define __NR_setfsgid 139 | ||
| 148 | #define __NR__llseek 140 | ||
| 149 | #define __NR_getdents 141 | ||
| 150 | #define __NR__newselect 142 | ||
| 151 | #define __NR_flock 143 | ||
| 152 | #define __NR_msync 144 | ||
| 153 | #define __NR_readv 145 | ||
| 154 | #define __NR_writev 146 | ||
| 155 | #define __NR_getsid 147 | ||
| 156 | #define __NR_fdatasync 148 | ||
| 157 | #define __NR__sysctl 149 | ||
| 158 | #define __NR_mlock 150 | ||
| 159 | #define __NR_munlock 151 | ||
| 160 | #define __NR_mlockall 152 | ||
| 161 | #define __NR_munlockall 153 | ||
| 162 | #define __NR_sched_setparam 154 | ||
| 163 | #define __NR_sched_getparam 155 | ||
| 164 | #define __NR_sched_setscheduler 156 | ||
| 165 | #define __NR_sched_getscheduler 157 | ||
| 166 | #define __NR_sched_yield 158 | ||
| 167 | #define __NR_sched_get_priority_max 159 | ||
| 168 | #define __NR_sched_get_priority_min 160 | ||
| 169 | #define __NR_sched_rr_get_interval 161 | ||
| 170 | #define __NR_nanosleep 162 | ||
| 171 | #define __NR_mremap 163 | ||
| 172 | #define __NR_setresuid 164 | ||
| 173 | #define __NR_getresuid 165 | ||
| 174 | #define __NR_getpagesize 166 | ||
| 175 | #define __NR_query_module 167 | ||
| 176 | #define __NR_poll 168 | ||
| 177 | #define __NR_nfsservctl 169 | ||
| 178 | #define __NR_setresgid 170 | ||
| 179 | #define __NR_getresgid 171 | ||
| 180 | #define __NR_prctl 172 | ||
| 181 | #define __NR_rt_sigreturn 173 | ||
| 182 | #define __NR_rt_sigaction 174 | ||
| 183 | #define __NR_rt_sigprocmask 175 | ||
| 184 | #define __NR_rt_sigpending 176 | ||
| 185 | #define __NR_rt_sigtimedwait 177 | ||
| 186 | #define __NR_rt_sigqueueinfo 178 | ||
| 187 | #define __NR_rt_sigsuspend 179 | ||
| 188 | #define __NR_pread64 180 | ||
| 189 | #define __NR_pwrite64 181 | ||
| 190 | #define __NR_lchown 182 | ||
| 191 | #define __NR_getcwd 183 | ||
| 192 | #define __NR_capget 184 | ||
| 193 | #define __NR_capset 185 | ||
| 194 | #define __NR_sigaltstack 186 | ||
| 195 | #define __NR_sendfile 187 | ||
| 196 | #define __NR_getpmsg 188 /* some people actually want streams */ | ||
| 197 | #define __NR_putpmsg 189 /* some people actually want streams */ | ||
| 198 | #define __NR_vfork 190 | ||
| 199 | #define __NR_ugetrlimit 191 | ||
| 200 | #define __NR_mmap2 192 | ||
| 201 | #define __NR_truncate64 193 | ||
| 202 | #define __NR_ftruncate64 194 | ||
| 203 | #define __NR_stat64 195 | ||
| 204 | #define __NR_lstat64 196 | ||
| 205 | #define __NR_fstat64 197 | ||
| 206 | #define __NR_chown32 198 | ||
| 207 | #define __NR_getuid32 199 | ||
| 208 | #define __NR_getgid32 200 | ||
| 209 | #define __NR_geteuid32 201 | ||
| 210 | #define __NR_getegid32 202 | ||
| 211 | #define __NR_setreuid32 203 | ||
| 212 | #define __NR_setregid32 204 | ||
| 213 | #define __NR_getgroups32 205 | ||
| 214 | #define __NR_setgroups32 206 | ||
| 215 | #define __NR_fchown32 207 | ||
| 216 | #define __NR_setresuid32 208 | ||
| 217 | #define __NR_getresuid32 209 | ||
| 218 | #define __NR_setresgid32 210 | ||
| 219 | #define __NR_getresgid32 211 | ||
| 220 | #define __NR_lchown32 212 | ||
| 221 | #define __NR_setuid32 213 | ||
| 222 | #define __NR_setgid32 214 | ||
| 223 | #define __NR_setfsuid32 215 | ||
| 224 | #define __NR_setfsgid32 216 | ||
| 225 | #define __NR_pivot_root 217 | ||
| 226 | #define __NR_getdents64 220 | ||
| 227 | #define __NR_gettid 221 | ||
| 228 | #define __NR_tkill 222 | ||
| 229 | #define __NR_setxattr 223 | ||
| 230 | #define __NR_lsetxattr 224 | ||
| 231 | #define __NR_fsetxattr 225 | ||
| 232 | #define __NR_getxattr 226 | ||
| 233 | #define __NR_lgetxattr 227 | ||
| 234 | #define __NR_fgetxattr 228 | ||
| 235 | #define __NR_listxattr 229 | ||
| 236 | #define __NR_llistxattr 230 | ||
| 237 | #define __NR_flistxattr 231 | ||
| 238 | #define __NR_removexattr 232 | ||
| 239 | #define __NR_lremovexattr 233 | ||
| 240 | #define __NR_fremovexattr 234 | ||
| 241 | #define __NR_futex 235 | ||
| 242 | #define __NR_sendfile64 236 | ||
| 243 | #define __NR_mincore 237 | ||
| 244 | #define __NR_madvise 238 | ||
| 245 | #define __NR_fcntl64 239 | ||
| 246 | #define __NR_readahead 240 | ||
| 247 | #define __NR_io_setup 241 | ||
| 248 | #define __NR_io_destroy 242 | ||
| 249 | #define __NR_io_getevents 243 | ||
| 250 | #define __NR_io_submit 244 | ||
| 251 | #define __NR_io_cancel 245 | ||
| 252 | #define __NR_fadvise64 246 | ||
| 253 | #define __NR_exit_group 247 | ||
| 254 | #define __NR_lookup_dcookie 248 | ||
| 255 | #define __NR_epoll_create 249 | ||
| 256 | #define __NR_epoll_ctl 250 | ||
| 257 | #define __NR_epoll_wait 251 | ||
| 258 | #define __NR_remap_file_pages 252 | ||
| 259 | #define __NR_set_tid_address 253 | ||
| 260 | #define __NR_timer_create 254 | ||
| 261 | #define __NR_timer_settime 255 | ||
| 262 | #define __NR_timer_gettime 256 | ||
| 263 | #define __NR_timer_getoverrun 257 | ||
| 264 | #define __NR_timer_delete 258 | ||
| 265 | #define __NR_clock_settime 259 | ||
| 266 | #define __NR_clock_gettime 260 | ||
| 267 | #define __NR_clock_getres 261 | ||
| 268 | #define __NR_clock_nanosleep 262 | ||
| 269 | #define __NR_statfs64 263 | ||
| 270 | #define __NR_fstatfs64 264 | ||
| 271 | #define __NR_tgkill 265 | ||
| 272 | #define __NR_utimes 266 | ||
| 273 | #define __NR_fadvise64_64 267 | ||
| 274 | #define __NR_mbind 268 | ||
| 275 | #define __NR_get_mempolicy 269 | ||
| 276 | #define __NR_set_mempolicy 270 | ||
| 277 | #define __NR_mq_open 271 | ||
| 278 | #define __NR_mq_unlink 272 | ||
| 279 | #define __NR_mq_timedsend 273 | ||
| 280 | #define __NR_mq_timedreceive 274 | ||
| 281 | #define __NR_mq_notify 275 | ||
| 282 | #define __NR_mq_getsetattr 276 | ||
| 283 | #define __NR_waitid 277 | ||
| 284 | #define __NR_vserver 278 | ||
| 285 | #define __NR_add_key 279 | ||
| 286 | #define __NR_request_key 280 | ||
| 287 | #define __NR_keyctl 281 | ||
| 288 | #define __NR_ioprio_set 282 | ||
| 289 | #define __NR_ioprio_get 283 | ||
| 290 | #define __NR_inotify_init 284 | ||
| 291 | #define __NR_inotify_add_watch 285 | ||
| 292 | #define __NR_inotify_rm_watch 286 | ||
| 293 | #define __NR_migrate_pages 287 | ||
| 294 | #define __NR_openat 288 | ||
| 295 | #define __NR_mkdirat 289 | ||
| 296 | #define __NR_mknodat 290 | ||
| 297 | #define __NR_fchownat 291 | ||
| 298 | #define __NR_futimesat 292 | ||
| 299 | #define __NR_fstatat64 293 | ||
| 300 | #define __NR_unlinkat 294 | ||
| 301 | #define __NR_renameat 295 | ||
| 302 | #define __NR_linkat 296 | ||
| 303 | #define __NR_symlinkat 297 | ||
| 304 | #define __NR_readlinkat 298 | ||
| 305 | #define __NR_fchmodat 299 | ||
| 306 | #define __NR_faccessat 300 | ||
| 307 | #define __NR_pselect6 301 | ||
| 308 | #define __NR_ppoll 302 | ||
| 309 | #define __NR_unshare 303 | ||
| 310 | #define __NR_set_robust_list 304 | ||
| 311 | #define __NR_get_robust_list 305 | ||
| 312 | #define __NR_splice 306 | ||
| 313 | #define __NR_sync_file_range 307 | ||
| 314 | #define __NR_tee 308 | ||
| 315 | #define __NR_vmsplice 309 | ||
| 316 | #define __NR_move_pages 310 | ||
| 317 | #define __NR_sched_setaffinity 311 | ||
| 318 | #define __NR_sched_getaffinity 312 | ||
| 319 | #define __NR_kexec_load 313 | ||
| 320 | #define __NR_getcpu 314 | ||
| 321 | #define __NR_epoll_pwait 315 | ||
| 322 | #define __NR_utimensat 316 | ||
| 323 | #define __NR_signalfd 317 | ||
| 324 | #define __NR_timerfd_create 318 | ||
| 325 | #define __NR_eventfd 319 | ||
| 326 | #define __NR_fallocate 320 | ||
| 327 | #define __NR_timerfd_settime 321 | ||
| 328 | #define __NR_timerfd_gettime 322 | ||
| 329 | #define __NR_signalfd4 323 | ||
| 330 | #define __NR_eventfd2 324 | ||
| 331 | #define __NR_epoll_create1 325 | ||
| 332 | #define __NR_dup3 326 | ||
| 333 | #define __NR_pipe2 327 | ||
| 334 | #define __NR_inotify_init1 328 | ||
| 335 | |||
| 336 | #ifdef __KERNEL__ | ||
| 337 | |||
| 338 | #define NR_syscalls 329 | ||
| 339 | |||
| 340 | #define __ARCH_WANT_IPC_PARSE_VERSION | ||
| 341 | #define __ARCH_WANT_OLD_READDIR | ||
| 342 | #define __ARCH_WANT_OLD_STAT | ||
| 343 | #define __ARCH_WANT_STAT64 | ||
| 344 | #define __ARCH_WANT_SYS_ALARM | ||
| 345 | #define __ARCH_WANT_SYS_GETHOSTNAME | ||
| 346 | #define __ARCH_WANT_SYS_PAUSE | ||
| 347 | #define __ARCH_WANT_SYS_SGETMASK | ||
| 348 | #define __ARCH_WANT_SYS_SIGNAL | ||
| 349 | #define __ARCH_WANT_SYS_TIME | ||
| 350 | #define __ARCH_WANT_SYS_UTIME | ||
| 351 | #define __ARCH_WANT_SYS_WAITPID | ||
| 352 | #define __ARCH_WANT_SYS_SOCKETCALL | ||
| 353 | #define __ARCH_WANT_SYS_FADVISE64 | ||
| 354 | #define __ARCH_WANT_SYS_GETPGRP | ||
| 355 | #define __ARCH_WANT_SYS_LLSEEK | ||
| 356 | #define __ARCH_WANT_SYS_NICE | ||
| 357 | #define __ARCH_WANT_SYS_OLD_GETRLIMIT | ||
| 358 | #define __ARCH_WANT_SYS_OLDUMOUNT | ||
| 359 | #define __ARCH_WANT_SYS_SIGPENDING | ||
| 360 | #define __ARCH_WANT_SYS_SIGPROCMASK | ||
| 361 | #define __ARCH_WANT_SYS_RT_SIGACTION | ||
| 362 | |||
| 363 | /* | ||
| 364 | * "Conditional" syscalls | ||
| 365 | * | ||
| 366 | * What we want is __attribute__((weak,alias("sys_ni_syscall"))), | ||
| 367 | * but it doesn't work on all toolchains, so we just do it by hand | ||
| 368 | */ | ||
| 369 | #define cond_syscall(x) asm(".weak\t" #x "\n\t.set\t" #x ",sys_ni_syscall") | ||
| 370 | |||
| 371 | #endif /* __KERNEL__ */ | ||
| 372 | #endif /* _ASM_M68K_UNISTD_H_ */ | ||
diff --git a/arch/powerpc/kernel/head_32.S b/arch/powerpc/kernel/head_32.S index 7db2e42d97a2..d794a637e421 100644 --- a/arch/powerpc/kernel/head_32.S +++ b/arch/powerpc/kernel/head_32.S | |||
| @@ -513,6 +513,9 @@ InstructionTLBMiss: | |||
| 513 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ | 513 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ |
| 514 | ori r1,r1,0xe04 /* clear out reserved bits */ | 514 | ori r1,r1,0xe04 /* clear out reserved bits */ |
| 515 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ | 515 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ |
| 516 | BEGIN_FTR_SECTION | ||
| 517 | rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */ | ||
| 518 | END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT) | ||
| 516 | mtspr SPRN_RPA,r1 | 519 | mtspr SPRN_RPA,r1 |
| 517 | mfspr r3,SPRN_IMISS | 520 | mfspr r3,SPRN_IMISS |
| 518 | tlbli r3 | 521 | tlbli r3 |
| @@ -587,6 +590,9 @@ DataLoadTLBMiss: | |||
| 587 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ | 590 | rlwimi r3,r3,32-1,31,31 /* _PAGE_USER -> PP lsb */ |
| 588 | ori r1,r1,0xe04 /* clear out reserved bits */ | 591 | ori r1,r1,0xe04 /* clear out reserved bits */ |
| 589 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ | 592 | andc r1,r3,r1 /* PP = user? (rw&dirty? 2: 3): 0 */ |
| 593 | BEGIN_FTR_SECTION | ||
| 594 | rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */ | ||
| 595 | END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT) | ||
| 590 | mtspr SPRN_RPA,r1 | 596 | mtspr SPRN_RPA,r1 |
| 591 | mfspr r3,SPRN_DMISS | 597 | mfspr r3,SPRN_DMISS |
| 592 | tlbld r3 | 598 | tlbld r3 |
| @@ -655,6 +661,9 @@ DataStoreTLBMiss: | |||
| 655 | rlwimi r3,r3,32-1,30,30 /* _PAGE_USER -> PP msb */ | 661 | rlwimi r3,r3,32-1,30,30 /* _PAGE_USER -> PP msb */ |
| 656 | li r1,0xe05 /* clear out reserved bits & PP lsb */ | 662 | li r1,0xe05 /* clear out reserved bits & PP lsb */ |
| 657 | andc r1,r3,r1 /* PP = user? 2: 0 */ | 663 | andc r1,r3,r1 /* PP = user? 2: 0 */ |
| 664 | BEGIN_FTR_SECTION | ||
| 665 | rlwinm r1,r1,0,~_PAGE_COHERENT /* clear M (coherence not required) */ | ||
| 666 | END_FTR_SECTION_IFCLR(CPU_FTR_NEED_COHERENT) | ||
| 658 | mtspr SPRN_RPA,r1 | 667 | mtspr SPRN_RPA,r1 |
| 659 | mfspr r3,SPRN_DMISS | 668 | mfspr r3,SPRN_DMISS |
| 660 | tlbld r3 | 669 | tlbld r3 |
diff --git a/arch/s390/include/asm/mman.h b/arch/s390/include/asm/mman.h index 7839767d837e..da01432e8f44 100644 --- a/arch/s390/include/asm/mman.h +++ b/arch/s390/include/asm/mman.h | |||
| @@ -22,4 +22,9 @@ | |||
| 22 | #define MCL_CURRENT 1 /* lock all current mappings */ | 22 | #define MCL_CURRENT 1 /* lock all current mappings */ |
| 23 | #define MCL_FUTURE 2 /* lock all future mappings */ | 23 | #define MCL_FUTURE 2 /* lock all future mappings */ |
| 24 | 24 | ||
| 25 | #if defined(__KERNEL__) && !defined(__ASSEMBLY__) && defined(CONFIG_64BIT) | ||
| 26 | int s390_mmap_check(unsigned long addr, unsigned long len); | ||
| 27 | #define arch_mmap_check(addr,len,flags) s390_mmap_check(addr,len) | ||
| 28 | #endif | ||
| 29 | |||
| 25 | #endif /* __S390_MMAN_H__ */ | 30 | #endif /* __S390_MMAN_H__ */ |
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h index 066b99502e09..db4523fe38ac 100644 --- a/arch/s390/include/asm/processor.h +++ b/arch/s390/include/asm/processor.h | |||
| @@ -61,7 +61,7 @@ extern void print_cpu_info(struct cpuinfo_S390 *); | |||
| 61 | extern int get_cpu_capability(unsigned int *); | 61 | extern int get_cpu_capability(unsigned int *); |
| 62 | 62 | ||
| 63 | /* | 63 | /* |
| 64 | * User space process size: 2GB for 31 bit, 4TB for 64 bit. | 64 | * User space process size: 2GB for 31 bit, 4TB or 8PT for 64 bit. |
| 65 | */ | 65 | */ |
| 66 | #ifndef __s390x__ | 66 | #ifndef __s390x__ |
| 67 | 67 | ||
| @@ -70,8 +70,7 @@ extern int get_cpu_capability(unsigned int *); | |||
| 70 | 70 | ||
| 71 | #else /* __s390x__ */ | 71 | #else /* __s390x__ */ |
| 72 | 72 | ||
| 73 | #define TASK_SIZE_OF(tsk) (test_tsk_thread_flag(tsk,TIF_31BIT) ? \ | 73 | #define TASK_SIZE_OF(tsk) ((tsk)->mm->context.asce_limit) |
| 74 | (1UL << 31) : (1UL << 53)) | ||
| 75 | #define TASK_UNMAPPED_BASE (test_thread_flag(TIF_31BIT) ? \ | 74 | #define TASK_UNMAPPED_BASE (test_thread_flag(TIF_31BIT) ? \ |
| 76 | (1UL << 30) : (1UL << 41)) | 75 | (1UL << 30) : (1UL << 41)) |
| 77 | #define TASK_SIZE TASK_SIZE_OF(current) | 76 | #define TASK_SIZE TASK_SIZE_OF(current) |
diff --git a/arch/s390/include/asm/topology.h b/arch/s390/include/asm/topology.h index c93eb50e1d09..c979c3b56ab0 100644 --- a/arch/s390/include/asm/topology.h +++ b/arch/s390/include/asm/topology.h | |||
| @@ -30,6 +30,8 @@ static inline void s390_init_cpu_topology(void) | |||
| 30 | }; | 30 | }; |
| 31 | #endif | 31 | #endif |
| 32 | 32 | ||
| 33 | #define SD_MC_INIT SD_CPU_INIT | ||
| 34 | |||
| 33 | #include <asm-generic/topology.h> | 35 | #include <asm-generic/topology.h> |
| 34 | 36 | ||
| 35 | #endif /* _ASM_S390_TOPOLOGY_H */ | 37 | #endif /* _ASM_S390_TOPOLOGY_H */ |
diff --git a/arch/s390/kernel/mcount.S b/arch/s390/kernel/mcount.S index 397d131a345f..80641224a095 100644 --- a/arch/s390/kernel/mcount.S +++ b/arch/s390/kernel/mcount.S | |||
| @@ -5,6 +5,8 @@ | |||
| 5 | * | 5 | * |
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | #include <asm/asm-offsets.h> | ||
| 9 | |||
| 8 | #ifndef CONFIG_64BIT | 10 | #ifndef CONFIG_64BIT |
| 9 | .globl _mcount | 11 | .globl _mcount |
| 10 | _mcount: | 12 | _mcount: |
| @@ -14,7 +16,7 @@ _mcount: | |||
| 14 | ahi %r15,-96 | 16 | ahi %r15,-96 |
| 15 | l %r3,100(%r15) | 17 | l %r3,100(%r15) |
| 16 | la %r2,0(%r14) | 18 | la %r2,0(%r14) |
| 17 | st %r1,0(%r15) | 19 | st %r1,__SF_BACKCHAIN(%r15) |
| 18 | la %r3,0(%r3) | 20 | la %r3,0(%r3) |
| 19 | bras %r14,0f | 21 | bras %r14,0f |
| 20 | .long ftrace_trace_function | 22 | .long ftrace_trace_function |
| @@ -38,7 +40,7 @@ _mcount: | |||
| 38 | stg %r14,112(%r15) | 40 | stg %r14,112(%r15) |
| 39 | lgr %r1,%r15 | 41 | lgr %r1,%r15 |
| 40 | aghi %r15,-160 | 42 | aghi %r15,-160 |
| 41 | stg %r1,0(%r15) | 43 | stg %r1,__SF_BACKCHAIN(%r15) |
| 42 | lgr %r2,%r14 | 44 | lgr %r2,%r14 |
| 43 | lg %r3,168(%r15) | 45 | lg %r3,168(%r15) |
| 44 | larl %r14,ftrace_trace_function | 46 | larl %r14,ftrace_trace_function |
diff --git a/arch/s390/lib/div64.c b/arch/s390/lib/div64.c index a5f8300bf3ee..d9e62c0b576a 100644 --- a/arch/s390/lib/div64.c +++ b/arch/s390/lib/div64.c | |||
| @@ -61,7 +61,7 @@ static uint32_t __div64_31(uint64_t *n, uint32_t base) | |||
| 61 | " clr %0,%3\n" | 61 | " clr %0,%3\n" |
| 62 | " jl 0f\n" | 62 | " jl 0f\n" |
| 63 | " slr %0,%3\n" | 63 | " slr %0,%3\n" |
| 64 | " alr %1,%2\n" | 64 | " ahi %1,1\n" |
| 65 | "0:\n" | 65 | "0:\n" |
| 66 | : "+d" (reg2), "+d" (reg3), "=d" (tmp) | 66 | : "+d" (reg2), "+d" (reg3), "=d" (tmp) |
| 67 | : "d" (base), "2" (1UL) : "cc" ); | 67 | : "d" (base), "2" (1UL) : "cc" ); |
diff --git a/arch/s390/lib/uaccess_pt.c b/arch/s390/lib/uaccess_pt.c index d66215b0fde9..b0b84c35b0ad 100644 --- a/arch/s390/lib/uaccess_pt.c +++ b/arch/s390/lib/uaccess_pt.c | |||
| @@ -119,8 +119,6 @@ retry: | |||
| 119 | goto fault; | 119 | goto fault; |
| 120 | 120 | ||
| 121 | pfn = pte_pfn(*pte); | 121 | pfn = pte_pfn(*pte); |
| 122 | if (!pfn_valid(pfn)) | ||
| 123 | goto out; | ||
| 124 | 122 | ||
| 125 | offset = uaddr & (PAGE_SIZE - 1); | 123 | offset = uaddr & (PAGE_SIZE - 1); |
| 126 | size = min(n - done, PAGE_SIZE - offset); | 124 | size = min(n - done, PAGE_SIZE - offset); |
| @@ -135,7 +133,6 @@ retry: | |||
| 135 | done += size; | 133 | done += size; |
| 136 | uaddr += size; | 134 | uaddr += size; |
| 137 | } while (done < n); | 135 | } while (done < n); |
| 138 | out: | ||
| 139 | spin_unlock(&mm->page_table_lock); | 136 | spin_unlock(&mm->page_table_lock); |
| 140 | return n - done; | 137 | return n - done; |
| 141 | fault: | 138 | fault: |
| @@ -163,9 +160,6 @@ retry: | |||
| 163 | goto fault; | 160 | goto fault; |
| 164 | 161 | ||
| 165 | pfn = pte_pfn(*pte); | 162 | pfn = pte_pfn(*pte); |
| 166 | if (!pfn_valid(pfn)) | ||
| 167 | goto out; | ||
| 168 | |||
| 169 | ret = (pfn << PAGE_SHIFT) + (uaddr & (PAGE_SIZE - 1)); | 163 | ret = (pfn << PAGE_SHIFT) + (uaddr & (PAGE_SIZE - 1)); |
| 170 | out: | 164 | out: |
| 171 | return ret; | 165 | return ret; |
| @@ -244,11 +238,6 @@ retry: | |||
| 244 | goto fault; | 238 | goto fault; |
| 245 | 239 | ||
| 246 | pfn = pte_pfn(*pte); | 240 | pfn = pte_pfn(*pte); |
| 247 | if (!pfn_valid(pfn)) { | ||
| 248 | done = -1; | ||
| 249 | goto out; | ||
| 250 | } | ||
| 251 | |||
| 252 | offset = uaddr & (PAGE_SIZE-1); | 241 | offset = uaddr & (PAGE_SIZE-1); |
| 253 | addr = (char *)(pfn << PAGE_SHIFT) + offset; | 242 | addr = (char *)(pfn << PAGE_SHIFT) + offset; |
| 254 | len = min(count - done, PAGE_SIZE - offset); | 243 | len = min(count - done, PAGE_SIZE - offset); |
| @@ -256,7 +245,6 @@ retry: | |||
| 256 | done += len_str; | 245 | done += len_str; |
| 257 | uaddr += len_str; | 246 | uaddr += len_str; |
| 258 | } while ((len_str == len) && (done < count)); | 247 | } while ((len_str == len) && (done < count)); |
| 259 | out: | ||
| 260 | spin_unlock(&mm->page_table_lock); | 248 | spin_unlock(&mm->page_table_lock); |
| 261 | return done + 1; | 249 | return done + 1; |
| 262 | fault: | 250 | fault: |
| @@ -325,12 +313,7 @@ retry: | |||
| 325 | } | 313 | } |
| 326 | 314 | ||
| 327 | pfn_from = pte_pfn(*pte_from); | 315 | pfn_from = pte_pfn(*pte_from); |
| 328 | if (!pfn_valid(pfn_from)) | ||
| 329 | goto out; | ||
| 330 | pfn_to = pte_pfn(*pte_to); | 316 | pfn_to = pte_pfn(*pte_to); |
| 331 | if (!pfn_valid(pfn_to)) | ||
| 332 | goto out; | ||
| 333 | |||
| 334 | offset_from = uaddr_from & (PAGE_SIZE-1); | 317 | offset_from = uaddr_from & (PAGE_SIZE-1); |
| 335 | offset_to = uaddr_from & (PAGE_SIZE-1); | 318 | offset_to = uaddr_from & (PAGE_SIZE-1); |
| 336 | offset_max = max(offset_from, offset_to); | 319 | offset_max = max(offset_from, offset_to); |
| @@ -342,7 +325,6 @@ retry: | |||
| 342 | uaddr_from += size; | 325 | uaddr_from += size; |
| 343 | uaddr_to += size; | 326 | uaddr_to += size; |
| 344 | } while (done < n); | 327 | } while (done < n); |
| 345 | out: | ||
| 346 | spin_unlock(&mm->page_table_lock); | 328 | spin_unlock(&mm->page_table_lock); |
| 347 | return n - done; | 329 | return n - done; |
| 348 | fault: | 330 | fault: |
diff --git a/arch/s390/mm/mmap.c b/arch/s390/mm/mmap.c index 5932a824547a..e008d236cc15 100644 --- a/arch/s390/mm/mmap.c +++ b/arch/s390/mm/mmap.c | |||
| @@ -35,7 +35,7 @@ | |||
| 35 | * Leave an at least ~128 MB hole. | 35 | * Leave an at least ~128 MB hole. |
| 36 | */ | 36 | */ |
| 37 | #define MIN_GAP (128*1024*1024) | 37 | #define MIN_GAP (128*1024*1024) |
| 38 | #define MAX_GAP (TASK_SIZE/6*5) | 38 | #define MAX_GAP (STACK_TOP/6*5) |
| 39 | 39 | ||
| 40 | static inline unsigned long mmap_base(void) | 40 | static inline unsigned long mmap_base(void) |
| 41 | { | 41 | { |
| @@ -46,7 +46,7 @@ static inline unsigned long mmap_base(void) | |||
| 46 | else if (gap > MAX_GAP) | 46 | else if (gap > MAX_GAP) |
| 47 | gap = MAX_GAP; | 47 | gap = MAX_GAP; |
| 48 | 48 | ||
| 49 | return TASK_SIZE - (gap & PAGE_MASK); | 49 | return STACK_TOP - (gap & PAGE_MASK); |
| 50 | } | 50 | } |
| 51 | 51 | ||
| 52 | static inline int mmap_is_legacy(void) | 52 | static inline int mmap_is_legacy(void) |
| @@ -89,42 +89,58 @@ EXPORT_SYMBOL_GPL(arch_pick_mmap_layout); | |||
| 89 | 89 | ||
| 90 | #else | 90 | #else |
| 91 | 91 | ||
| 92 | int s390_mmap_check(unsigned long addr, unsigned long len) | ||
| 93 | { | ||
| 94 | if (!test_thread_flag(TIF_31BIT) && | ||
| 95 | len >= TASK_SIZE && TASK_SIZE < (1UL << 53)) | ||
| 96 | return crst_table_upgrade(current->mm, 1UL << 53); | ||
| 97 | return 0; | ||
| 98 | } | ||
| 99 | |||
| 92 | static unsigned long | 100 | static unsigned long |
| 93 | s390_get_unmapped_area(struct file *filp, unsigned long addr, | 101 | s390_get_unmapped_area(struct file *filp, unsigned long addr, |
| 94 | unsigned long len, unsigned long pgoff, unsigned long flags) | 102 | unsigned long len, unsigned long pgoff, unsigned long flags) |
| 95 | { | 103 | { |
| 96 | struct mm_struct *mm = current->mm; | 104 | struct mm_struct *mm = current->mm; |
| 105 | unsigned long area; | ||
| 97 | int rc; | 106 | int rc; |
| 98 | 107 | ||
| 99 | addr = arch_get_unmapped_area(filp, addr, len, pgoff, flags); | 108 | area = arch_get_unmapped_area(filp, addr, len, pgoff, flags); |
| 100 | if (addr & ~PAGE_MASK) | 109 | if (!(area & ~PAGE_MASK)) |
| 101 | return addr; | 110 | return area; |
| 102 | if (unlikely(mm->context.asce_limit < addr + len)) { | 111 | if (area == -ENOMEM && |
| 103 | rc = crst_table_upgrade(mm, addr + len); | 112 | !test_thread_flag(TIF_31BIT) && TASK_SIZE < (1UL << 53)) { |
| 113 | /* Upgrade the page table to 4 levels and retry. */ | ||
| 114 | rc = crst_table_upgrade(mm, 1UL << 53); | ||
| 104 | if (rc) | 115 | if (rc) |
| 105 | return (unsigned long) rc; | 116 | return (unsigned long) rc; |
| 117 | area = arch_get_unmapped_area(filp, addr, len, pgoff, flags); | ||
| 106 | } | 118 | } |
| 107 | return addr; | 119 | return area; |
| 108 | } | 120 | } |
| 109 | 121 | ||
| 110 | static unsigned long | 122 | static unsigned long |
| 111 | s390_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0, | 123 | s390_get_unmapped_area_topdown(struct file *filp, const unsigned long addr, |
| 112 | const unsigned long len, const unsigned long pgoff, | 124 | const unsigned long len, const unsigned long pgoff, |
| 113 | const unsigned long flags) | 125 | const unsigned long flags) |
| 114 | { | 126 | { |
| 115 | struct mm_struct *mm = current->mm; | 127 | struct mm_struct *mm = current->mm; |
| 116 | unsigned long addr = addr0; | 128 | unsigned long area; |
| 117 | int rc; | 129 | int rc; |
| 118 | 130 | ||
| 119 | addr = arch_get_unmapped_area_topdown(filp, addr, len, pgoff, flags); | 131 | area = arch_get_unmapped_area_topdown(filp, addr, len, pgoff, flags); |
| 120 | if (addr & ~PAGE_MASK) | 132 | if (!(area & ~PAGE_MASK)) |
| 121 | return addr; | 133 | return area; |
| 122 | if (unlikely(mm->context.asce_limit < addr + len)) { | 134 | if (area == -ENOMEM && |
| 123 | rc = crst_table_upgrade(mm, addr + len); | 135 | !test_thread_flag(TIF_31BIT) && TASK_SIZE < (1UL << 53)) { |
| 136 | /* Upgrade the page table to 4 levels and retry. */ | ||
| 137 | rc = crst_table_upgrade(mm, 1UL << 53); | ||
| 124 | if (rc) | 138 | if (rc) |
| 125 | return (unsigned long) rc; | 139 | return (unsigned long) rc; |
| 140 | area = arch_get_unmapped_area_topdown(filp, addr, len, | ||
| 141 | pgoff, flags); | ||
| 126 | } | 142 | } |
| 127 | return addr; | 143 | return area; |
| 128 | } | 144 | } |
| 129 | /* | 145 | /* |
| 130 | * This function, called very early during the creation of a new | 146 | * This function, called very early during the creation of a new |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 0767827540b1..6b6ddc4ea02b 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
| @@ -117,6 +117,7 @@ repeat: | |||
| 117 | crst_table_init(table, entry); | 117 | crst_table_init(table, entry); |
| 118 | pgd_populate(mm, (pgd_t *) table, (pud_t *) pgd); | 118 | pgd_populate(mm, (pgd_t *) table, (pud_t *) pgd); |
| 119 | mm->pgd = (pgd_t *) table; | 119 | mm->pgd = (pgd_t *) table; |
| 120 | mm->task_size = mm->context.asce_limit; | ||
| 120 | table = NULL; | 121 | table = NULL; |
| 121 | } | 122 | } |
| 122 | spin_unlock(&mm->page_table_lock); | 123 | spin_unlock(&mm->page_table_lock); |
| @@ -154,6 +155,7 @@ void crst_table_downgrade(struct mm_struct *mm, unsigned long limit) | |||
| 154 | BUG(); | 155 | BUG(); |
| 155 | } | 156 | } |
| 156 | mm->pgd = (pgd_t *) (pgd_val(*pgd) & _REGION_ENTRY_ORIGIN); | 157 | mm->pgd = (pgd_t *) (pgd_val(*pgd) & _REGION_ENTRY_ORIGIN); |
| 158 | mm->task_size = mm->context.asce_limit; | ||
| 157 | crst_table_free(mm, (unsigned long *) pgd); | 159 | crst_table_free(mm, (unsigned long *) pgd); |
| 158 | } | 160 | } |
| 159 | update_mm(mm, current); | 161 | update_mm(mm, current); |
diff --git a/drivers/hid/usbhid/hiddev.c b/drivers/hid/usbhid/hiddev.c index 4940e4d70c2d..1f5b5d4c3c34 100644 --- a/drivers/hid/usbhid/hiddev.c +++ b/drivers/hid/usbhid/hiddev.c | |||
| @@ -306,7 +306,7 @@ static int hiddev_open(struct inode *inode, struct file *file) | |||
| 306 | return 0; | 306 | return 0; |
| 307 | bail: | 307 | bail: |
| 308 | file->private_data = NULL; | 308 | file->private_data = NULL; |
| 309 | kfree(list->hiddev); | 309 | kfree(list); |
| 310 | return res; | 310 | return res; |
| 311 | } | 311 | } |
| 312 | 312 | ||
| @@ -323,7 +323,7 @@ static ssize_t hiddev_write(struct file * file, const char __user * buffer, size | |||
| 323 | */ | 323 | */ |
| 324 | static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t count, loff_t *ppos) | 324 | static ssize_t hiddev_read(struct file * file, char __user * buffer, size_t count, loff_t *ppos) |
| 325 | { | 325 | { |
| 326 | DECLARE_WAITQUEUE(wait, current); | 326 | DEFINE_WAIT(wait); |
| 327 | struct hiddev_list *list = file->private_data; | 327 | struct hiddev_list *list = file->private_data; |
| 328 | int event_size; | 328 | int event_size; |
| 329 | int retval; | 329 | int retval; |
diff --git a/drivers/video/aty/radeon_pm.c b/drivers/video/aty/radeon_pm.c index 81603f85e17e..c6d7cc76516f 100644 --- a/drivers/video/aty/radeon_pm.c +++ b/drivers/video/aty/radeon_pm.c | |||
| @@ -2507,6 +2507,25 @@ static void radeon_reinitialize_QW(struct radeonfb_info *rinfo) | |||
| 2507 | 2507 | ||
| 2508 | #endif /* CONFIG_PPC_OF */ | 2508 | #endif /* CONFIG_PPC_OF */ |
| 2509 | 2509 | ||
| 2510 | static void radeonfb_whack_power_state(struct radeonfb_info *rinfo, pci_power_t state) | ||
| 2511 | { | ||
| 2512 | u16 pwr_cmd; | ||
| 2513 | |||
| 2514 | for (;;) { | ||
| 2515 | pci_read_config_word(rinfo->pdev, | ||
| 2516 | rinfo->pm_reg+PCI_PM_CTRL, | ||
| 2517 | &pwr_cmd); | ||
| 2518 | if (pwr_cmd & 2) | ||
| 2519 | break; | ||
| 2520 | pwr_cmd = (pwr_cmd & ~PCI_PM_CTRL_STATE_MASK) | 2; | ||
| 2521 | pci_write_config_word(rinfo->pdev, | ||
| 2522 | rinfo->pm_reg+PCI_PM_CTRL, | ||
| 2523 | pwr_cmd); | ||
| 2524 | msleep(500); | ||
| 2525 | } | ||
| 2526 | rinfo->pdev->current_state = state; | ||
| 2527 | } | ||
| 2528 | |||
| 2510 | static void radeon_set_suspend(struct radeonfb_info *rinfo, int suspend) | 2529 | static void radeon_set_suspend(struct radeonfb_info *rinfo, int suspend) |
| 2511 | { | 2530 | { |
| 2512 | u32 tmp; | 2531 | u32 tmp; |
| @@ -2558,6 +2577,11 @@ static void radeon_set_suspend(struct radeonfb_info *rinfo, int suspend) | |||
| 2558 | /* Switch PCI power management to D2. */ | 2577 | /* Switch PCI power management to D2. */ |
| 2559 | pci_disable_device(rinfo->pdev); | 2578 | pci_disable_device(rinfo->pdev); |
| 2560 | pci_save_state(rinfo->pdev); | 2579 | pci_save_state(rinfo->pdev); |
| 2580 | /* The chip seems to need us to whack the PM register | ||
| 2581 | * repeatedly until it sticks. We do that -prior- to | ||
| 2582 | * calling pci_set_power_state() | ||
| 2583 | */ | ||
| 2584 | radeonfb_whack_power_state(rinfo, PCI_D2); | ||
| 2561 | pci_set_power_state(rinfo->pdev, PCI_D2); | 2585 | pci_set_power_state(rinfo->pdev, PCI_D2); |
| 2562 | } else { | 2586 | } else { |
| 2563 | printk(KERN_DEBUG "radeonfb (%s): switching to D0 state...\n", | 2587 | printk(KERN_DEBUG "radeonfb (%s): switching to D0 state...\n", |
| @@ -443,7 +443,7 @@ static struct kiocb *__aio_get_req(struct kioctx *ctx) | |||
| 443 | req->private = NULL; | 443 | req->private = NULL; |
| 444 | req->ki_iovec = NULL; | 444 | req->ki_iovec = NULL; |
| 445 | INIT_LIST_HEAD(&req->ki_run_list); | 445 | INIT_LIST_HEAD(&req->ki_run_list); |
| 446 | req->ki_eventfd = ERR_PTR(-EINVAL); | 446 | req->ki_eventfd = NULL; |
| 447 | 447 | ||
| 448 | /* Check if the completion queue has enough free space to | 448 | /* Check if the completion queue has enough free space to |
| 449 | * accept an event from this io. | 449 | * accept an event from this io. |
| @@ -485,8 +485,6 @@ static inline void really_put_req(struct kioctx *ctx, struct kiocb *req) | |||
| 485 | { | 485 | { |
| 486 | assert_spin_locked(&ctx->ctx_lock); | 486 | assert_spin_locked(&ctx->ctx_lock); |
| 487 | 487 | ||
| 488 | if (!IS_ERR(req->ki_eventfd)) | ||
| 489 | fput(req->ki_eventfd); | ||
| 490 | if (req->ki_dtor) | 488 | if (req->ki_dtor) |
| 491 | req->ki_dtor(req); | 489 | req->ki_dtor(req); |
| 492 | if (req->ki_iovec != &req->ki_inline_vec) | 490 | if (req->ki_iovec != &req->ki_inline_vec) |
| @@ -508,8 +506,11 @@ static void aio_fput_routine(struct work_struct *data) | |||
| 508 | list_del(&req->ki_list); | 506 | list_del(&req->ki_list); |
| 509 | spin_unlock_irq(&fput_lock); | 507 | spin_unlock_irq(&fput_lock); |
| 510 | 508 | ||
| 511 | /* Complete the fput */ | 509 | /* Complete the fput(s) */ |
| 512 | __fput(req->ki_filp); | 510 | if (req->ki_filp != NULL) |
| 511 | __fput(req->ki_filp); | ||
| 512 | if (req->ki_eventfd != NULL) | ||
| 513 | __fput(req->ki_eventfd); | ||
| 513 | 514 | ||
| 514 | /* Link the iocb into the context's free list */ | 515 | /* Link the iocb into the context's free list */ |
| 515 | spin_lock_irq(&ctx->ctx_lock); | 516 | spin_lock_irq(&ctx->ctx_lock); |
| @@ -527,12 +528,14 @@ static void aio_fput_routine(struct work_struct *data) | |||
| 527 | */ | 528 | */ |
| 528 | static int __aio_put_req(struct kioctx *ctx, struct kiocb *req) | 529 | static int __aio_put_req(struct kioctx *ctx, struct kiocb *req) |
| 529 | { | 530 | { |
| 531 | int schedule_putreq = 0; | ||
| 532 | |||
| 530 | dprintk(KERN_DEBUG "aio_put(%p): f_count=%ld\n", | 533 | dprintk(KERN_DEBUG "aio_put(%p): f_count=%ld\n", |
| 531 | req, atomic_long_read(&req->ki_filp->f_count)); | 534 | req, atomic_long_read(&req->ki_filp->f_count)); |
| 532 | 535 | ||
| 533 | assert_spin_locked(&ctx->ctx_lock); | 536 | assert_spin_locked(&ctx->ctx_lock); |
| 534 | 537 | ||
| 535 | req->ki_users --; | 538 | req->ki_users--; |
| 536 | BUG_ON(req->ki_users < 0); | 539 | BUG_ON(req->ki_users < 0); |
| 537 | if (likely(req->ki_users)) | 540 | if (likely(req->ki_users)) |
| 538 | return 0; | 541 | return 0; |
| @@ -540,10 +543,23 @@ static int __aio_put_req(struct kioctx *ctx, struct kiocb *req) | |||
| 540 | req->ki_cancel = NULL; | 543 | req->ki_cancel = NULL; |
| 541 | req->ki_retry = NULL; | 544 | req->ki_retry = NULL; |
| 542 | 545 | ||
| 543 | /* Must be done under the lock to serialise against cancellation. | 546 | /* |
| 544 | * Call this aio_fput as it duplicates fput via the fput_work. | 547 | * Try to optimize the aio and eventfd file* puts, by avoiding to |
| 548 | * schedule work in case it is not __fput() time. In normal cases, | ||
| 549 | * we would not be holding the last reference to the file*, so | ||
| 550 | * this function will be executed w/out any aio kthread wakeup. | ||
| 545 | */ | 551 | */ |
| 546 | if (unlikely(atomic_long_dec_and_test(&req->ki_filp->f_count))) { | 552 | if (unlikely(atomic_long_dec_and_test(&req->ki_filp->f_count))) |
| 553 | schedule_putreq++; | ||
| 554 | else | ||
| 555 | req->ki_filp = NULL; | ||
| 556 | if (req->ki_eventfd != NULL) { | ||
| 557 | if (unlikely(atomic_long_dec_and_test(&req->ki_eventfd->f_count))) | ||
| 558 | schedule_putreq++; | ||
| 559 | else | ||
| 560 | req->ki_eventfd = NULL; | ||
| 561 | } | ||
| 562 | if (unlikely(schedule_putreq)) { | ||
| 547 | get_ioctx(ctx); | 563 | get_ioctx(ctx); |
| 548 | spin_lock(&fput_lock); | 564 | spin_lock(&fput_lock); |
| 549 | list_add(&req->ki_list, &fput_head); | 565 | list_add(&req->ki_list, &fput_head); |
| @@ -571,7 +587,7 @@ int aio_put_req(struct kiocb *req) | |||
| 571 | static struct kioctx *lookup_ioctx(unsigned long ctx_id) | 587 | static struct kioctx *lookup_ioctx(unsigned long ctx_id) |
| 572 | { | 588 | { |
| 573 | struct mm_struct *mm = current->mm; | 589 | struct mm_struct *mm = current->mm; |
| 574 | struct kioctx *ctx = NULL; | 590 | struct kioctx *ctx, *ret = NULL; |
| 575 | struct hlist_node *n; | 591 | struct hlist_node *n; |
| 576 | 592 | ||
| 577 | rcu_read_lock(); | 593 | rcu_read_lock(); |
| @@ -579,12 +595,13 @@ static struct kioctx *lookup_ioctx(unsigned long ctx_id) | |||
| 579 | hlist_for_each_entry_rcu(ctx, n, &mm->ioctx_list, list) { | 595 | hlist_for_each_entry_rcu(ctx, n, &mm->ioctx_list, list) { |
| 580 | if (ctx->user_id == ctx_id && !ctx->dead) { | 596 | if (ctx->user_id == ctx_id && !ctx->dead) { |
| 581 | get_ioctx(ctx); | 597 | get_ioctx(ctx); |
| 598 | ret = ctx; | ||
| 582 | break; | 599 | break; |
| 583 | } | 600 | } |
| 584 | } | 601 | } |
| 585 | 602 | ||
| 586 | rcu_read_unlock(); | 603 | rcu_read_unlock(); |
| 587 | return ctx; | 604 | return ret; |
| 588 | } | 605 | } |
| 589 | 606 | ||
| 590 | /* | 607 | /* |
| @@ -1009,7 +1026,7 @@ int aio_complete(struct kiocb *iocb, long res, long res2) | |||
| 1009 | * eventfd. The eventfd_signal() function is safe to be called | 1026 | * eventfd. The eventfd_signal() function is safe to be called |
| 1010 | * from IRQ context. | 1027 | * from IRQ context. |
| 1011 | */ | 1028 | */ |
| 1012 | if (!IS_ERR(iocb->ki_eventfd)) | 1029 | if (iocb->ki_eventfd != NULL) |
| 1013 | eventfd_signal(iocb->ki_eventfd, 1); | 1030 | eventfd_signal(iocb->ki_eventfd, 1); |
| 1014 | 1031 | ||
| 1015 | put_rq: | 1032 | put_rq: |
| @@ -1608,6 +1625,7 @@ static int io_submit_one(struct kioctx *ctx, struct iocb __user *user_iocb, | |||
| 1608 | req->ki_eventfd = eventfd_fget((int) iocb->aio_resfd); | 1625 | req->ki_eventfd = eventfd_fget((int) iocb->aio_resfd); |
| 1609 | if (IS_ERR(req->ki_eventfd)) { | 1626 | if (IS_ERR(req->ki_eventfd)) { |
| 1610 | ret = PTR_ERR(req->ki_eventfd); | 1627 | ret = PTR_ERR(req->ki_eventfd); |
| 1628 | req->ki_eventfd = NULL; | ||
| 1611 | goto out_put_req; | 1629 | goto out_put_req; |
| 1612 | } | 1630 | } |
| 1613 | } | 1631 | } |
diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h index 82491ba8fa40..5e1d4e30e9d8 100644 --- a/fs/btrfs/ctree.h +++ b/fs/btrfs/ctree.h | |||
| @@ -784,7 +784,14 @@ struct btrfs_fs_info { | |||
| 784 | struct list_head dirty_cowonly_roots; | 784 | struct list_head dirty_cowonly_roots; |
| 785 | 785 | ||
| 786 | struct btrfs_fs_devices *fs_devices; | 786 | struct btrfs_fs_devices *fs_devices; |
| 787 | |||
| 788 | /* | ||
| 789 | * the space_info list is almost entirely read only. It only changes | ||
| 790 | * when we add a new raid type to the FS, and that happens | ||
| 791 | * very rarely. RCU is used to protect it. | ||
| 792 | */ | ||
| 787 | struct list_head space_info; | 793 | struct list_head space_info; |
| 794 | |||
| 788 | spinlock_t delalloc_lock; | 795 | spinlock_t delalloc_lock; |
| 789 | spinlock_t new_trans_lock; | 796 | spinlock_t new_trans_lock; |
| 790 | u64 delalloc_bytes; | 797 | u64 delalloc_bytes; |
| @@ -1797,6 +1804,8 @@ int btrfs_cleanup_reloc_trees(struct btrfs_root *root); | |||
| 1797 | int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len); | 1804 | int btrfs_reloc_clone_csums(struct inode *inode, u64 file_pos, u64 len); |
| 1798 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags); | 1805 | u64 btrfs_reduce_alloc_profile(struct btrfs_root *root, u64 flags); |
| 1799 | void btrfs_set_inode_space_info(struct btrfs_root *root, struct inode *ionde); | 1806 | void btrfs_set_inode_space_info(struct btrfs_root *root, struct inode *ionde); |
| 1807 | void btrfs_clear_space_info_full(struct btrfs_fs_info *info); | ||
| 1808 | |||
| 1800 | int btrfs_check_metadata_free_space(struct btrfs_root *root); | 1809 | int btrfs_check_metadata_free_space(struct btrfs_root *root); |
| 1801 | int btrfs_check_data_free_space(struct btrfs_root *root, struct inode *inode, | 1810 | int btrfs_check_data_free_space(struct btrfs_root *root, struct inode *inode, |
| 1802 | u64 bytes); | 1811 | u64 bytes); |
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 9abf81f71c46..fefe83ad2059 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <linux/writeback.h> | 20 | #include <linux/writeback.h> |
| 21 | #include <linux/blkdev.h> | 21 | #include <linux/blkdev.h> |
| 22 | #include <linux/sort.h> | 22 | #include <linux/sort.h> |
| 23 | #include <linux/rcupdate.h> | ||
| 23 | #include "compat.h" | 24 | #include "compat.h" |
| 24 | #include "hash.h" | 25 | #include "hash.h" |
| 25 | #include "crc32c.h" | 26 | #include "crc32c.h" |
| @@ -330,13 +331,33 @@ static struct btrfs_space_info *__find_space_info(struct btrfs_fs_info *info, | |||
| 330 | { | 331 | { |
| 331 | struct list_head *head = &info->space_info; | 332 | struct list_head *head = &info->space_info; |
| 332 | struct btrfs_space_info *found; | 333 | struct btrfs_space_info *found; |
| 333 | list_for_each_entry(found, head, list) { | 334 | |
| 334 | if (found->flags == flags) | 335 | rcu_read_lock(); |
| 336 | list_for_each_entry_rcu(found, head, list) { | ||
| 337 | if (found->flags == flags) { | ||
| 338 | rcu_read_unlock(); | ||
| 335 | return found; | 339 | return found; |
| 340 | } | ||
| 336 | } | 341 | } |
| 342 | rcu_read_unlock(); | ||
| 337 | return NULL; | 343 | return NULL; |
| 338 | } | 344 | } |
| 339 | 345 | ||
| 346 | /* | ||
| 347 | * after adding space to the filesystem, we need to clear the full flags | ||
| 348 | * on all the space infos. | ||
| 349 | */ | ||
| 350 | void btrfs_clear_space_info_full(struct btrfs_fs_info *info) | ||
| 351 | { | ||
| 352 | struct list_head *head = &info->space_info; | ||
| 353 | struct btrfs_space_info *found; | ||
| 354 | |||
| 355 | rcu_read_lock(); | ||
| 356 | list_for_each_entry_rcu(found, head, list) | ||
| 357 | found->full = 0; | ||
| 358 | rcu_read_unlock(); | ||
| 359 | } | ||
| 360 | |||
| 340 | static u64 div_factor(u64 num, int factor) | 361 | static u64 div_factor(u64 num, int factor) |
| 341 | { | 362 | { |
| 342 | if (factor == 10) | 363 | if (factor == 10) |
| @@ -1903,7 +1924,6 @@ static int update_space_info(struct btrfs_fs_info *info, u64 flags, | |||
| 1903 | if (!found) | 1924 | if (!found) |
| 1904 | return -ENOMEM; | 1925 | return -ENOMEM; |
| 1905 | 1926 | ||
| 1906 | list_add(&found->list, &info->space_info); | ||
| 1907 | INIT_LIST_HEAD(&found->block_groups); | 1927 | INIT_LIST_HEAD(&found->block_groups); |
| 1908 | init_rwsem(&found->groups_sem); | 1928 | init_rwsem(&found->groups_sem); |
| 1909 | spin_lock_init(&found->lock); | 1929 | spin_lock_init(&found->lock); |
| @@ -1917,6 +1937,7 @@ static int update_space_info(struct btrfs_fs_info *info, u64 flags, | |||
| 1917 | found->full = 0; | 1937 | found->full = 0; |
| 1918 | found->force_alloc = 0; | 1938 | found->force_alloc = 0; |
| 1919 | *space_info = found; | 1939 | *space_info = found; |
| 1940 | list_add_rcu(&found->list, &info->space_info); | ||
| 1920 | return 0; | 1941 | return 0; |
| 1921 | } | 1942 | } |
| 1922 | 1943 | ||
| @@ -6320,6 +6341,7 @@ out: | |||
| 6320 | int btrfs_free_block_groups(struct btrfs_fs_info *info) | 6341 | int btrfs_free_block_groups(struct btrfs_fs_info *info) |
| 6321 | { | 6342 | { |
| 6322 | struct btrfs_block_group_cache *block_group; | 6343 | struct btrfs_block_group_cache *block_group; |
| 6344 | struct btrfs_space_info *space_info; | ||
| 6323 | struct rb_node *n; | 6345 | struct rb_node *n; |
| 6324 | 6346 | ||
| 6325 | spin_lock(&info->block_group_cache_lock); | 6347 | spin_lock(&info->block_group_cache_lock); |
| @@ -6341,6 +6363,23 @@ int btrfs_free_block_groups(struct btrfs_fs_info *info) | |||
| 6341 | spin_lock(&info->block_group_cache_lock); | 6363 | spin_lock(&info->block_group_cache_lock); |
| 6342 | } | 6364 | } |
| 6343 | spin_unlock(&info->block_group_cache_lock); | 6365 | spin_unlock(&info->block_group_cache_lock); |
| 6366 | |||
| 6367 | /* now that all the block groups are freed, go through and | ||
| 6368 | * free all the space_info structs. This is only called during | ||
| 6369 | * the final stages of unmount, and so we know nobody is | ||
| 6370 | * using them. We call synchronize_rcu() once before we start, | ||
| 6371 | * just to be on the safe side. | ||
| 6372 | */ | ||
| 6373 | synchronize_rcu(); | ||
| 6374 | |||
| 6375 | while(!list_empty(&info->space_info)) { | ||
| 6376 | space_info = list_entry(info->space_info.next, | ||
| 6377 | struct btrfs_space_info, | ||
| 6378 | list); | ||
| 6379 | |||
| 6380 | list_del(&space_info->list); | ||
| 6381 | kfree(space_info); | ||
| 6382 | } | ||
| 6344 | return 0; | 6383 | return 0; |
| 6345 | } | 6384 | } |
| 6346 | 6385 | ||
diff --git a/fs/btrfs/volumes.c b/fs/btrfs/volumes.c index 1316139bf9e8..dd06e18e5aac 100644 --- a/fs/btrfs/volumes.c +++ b/fs/btrfs/volumes.c | |||
| @@ -1374,6 +1374,12 @@ int btrfs_init_new_device(struct btrfs_root *root, char *device_path) | |||
| 1374 | ret = btrfs_add_device(trans, root, device); | 1374 | ret = btrfs_add_device(trans, root, device); |
| 1375 | } | 1375 | } |
| 1376 | 1376 | ||
| 1377 | /* | ||
| 1378 | * we've got more storage, clear any full flags on the space | ||
| 1379 | * infos | ||
| 1380 | */ | ||
| 1381 | btrfs_clear_space_info_full(root->fs_info); | ||
| 1382 | |||
| 1377 | unlock_chunks(root); | 1383 | unlock_chunks(root); |
| 1378 | btrfs_commit_transaction(trans, root); | 1384 | btrfs_commit_transaction(trans, root); |
| 1379 | 1385 | ||
| @@ -1459,6 +1465,8 @@ static int __btrfs_grow_device(struct btrfs_trans_handle *trans, | |||
| 1459 | device->fs_devices->total_rw_bytes += diff; | 1465 | device->fs_devices->total_rw_bytes += diff; |
| 1460 | 1466 | ||
| 1461 | device->total_bytes = new_size; | 1467 | device->total_bytes = new_size; |
| 1468 | btrfs_clear_space_info_full(device->dev_root->fs_info); | ||
| 1469 | |||
| 1462 | return btrfs_update_device(trans, device); | 1470 | return btrfs_update_device(trans, device); |
| 1463 | } | 1471 | } |
| 1464 | 1472 | ||
diff --git a/fs/buffer.c b/fs/buffer.c index 9f697419ed8e..891e1c78e4f1 100644 --- a/fs/buffer.c +++ b/fs/buffer.c | |||
| @@ -760,15 +760,9 @@ EXPORT_SYMBOL(mark_buffer_dirty_inode); | |||
| 760 | * If warn is true, then emit a warning if the page is not uptodate and has | 760 | * If warn is true, then emit a warning if the page is not uptodate and has |
| 761 | * not been truncated. | 761 | * not been truncated. |
| 762 | */ | 762 | */ |
| 763 | static int __set_page_dirty(struct page *page, | 763 | static void __set_page_dirty(struct page *page, |
| 764 | struct address_space *mapping, int warn) | 764 | struct address_space *mapping, int warn) |
| 765 | { | 765 | { |
| 766 | if (unlikely(!mapping)) | ||
| 767 | return !TestSetPageDirty(page); | ||
| 768 | |||
| 769 | if (TestSetPageDirty(page)) | ||
| 770 | return 0; | ||
| 771 | |||
| 772 | spin_lock_irq(&mapping->tree_lock); | 766 | spin_lock_irq(&mapping->tree_lock); |
| 773 | if (page->mapping) { /* Race with truncate? */ | 767 | if (page->mapping) { /* Race with truncate? */ |
| 774 | WARN_ON_ONCE(warn && !PageUptodate(page)); | 768 | WARN_ON_ONCE(warn && !PageUptodate(page)); |
| @@ -785,8 +779,6 @@ static int __set_page_dirty(struct page *page, | |||
| 785 | } | 779 | } |
| 786 | spin_unlock_irq(&mapping->tree_lock); | 780 | spin_unlock_irq(&mapping->tree_lock); |
| 787 | __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); | 781 | __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); |
| 788 | |||
| 789 | return 1; | ||
| 790 | } | 782 | } |
| 791 | 783 | ||
| 792 | /* | 784 | /* |
| @@ -816,6 +808,7 @@ static int __set_page_dirty(struct page *page, | |||
| 816 | */ | 808 | */ |
| 817 | int __set_page_dirty_buffers(struct page *page) | 809 | int __set_page_dirty_buffers(struct page *page) |
| 818 | { | 810 | { |
| 811 | int newly_dirty; | ||
| 819 | struct address_space *mapping = page_mapping(page); | 812 | struct address_space *mapping = page_mapping(page); |
| 820 | 813 | ||
| 821 | if (unlikely(!mapping)) | 814 | if (unlikely(!mapping)) |
| @@ -831,9 +824,12 @@ int __set_page_dirty_buffers(struct page *page) | |||
| 831 | bh = bh->b_this_page; | 824 | bh = bh->b_this_page; |
| 832 | } while (bh != head); | 825 | } while (bh != head); |
| 833 | } | 826 | } |
| 827 | newly_dirty = !TestSetPageDirty(page); | ||
| 834 | spin_unlock(&mapping->private_lock); | 828 | spin_unlock(&mapping->private_lock); |
| 835 | 829 | ||
| 836 | return __set_page_dirty(page, mapping, 1); | 830 | if (newly_dirty) |
| 831 | __set_page_dirty(page, mapping, 1); | ||
| 832 | return newly_dirty; | ||
| 837 | } | 833 | } |
| 838 | EXPORT_SYMBOL(__set_page_dirty_buffers); | 834 | EXPORT_SYMBOL(__set_page_dirty_buffers); |
| 839 | 835 | ||
| @@ -1262,8 +1258,11 @@ void mark_buffer_dirty(struct buffer_head *bh) | |||
| 1262 | return; | 1258 | return; |
| 1263 | } | 1259 | } |
| 1264 | 1260 | ||
| 1265 | if (!test_set_buffer_dirty(bh)) | 1261 | if (!test_set_buffer_dirty(bh)) { |
| 1266 | __set_page_dirty(bh->b_page, page_mapping(bh->b_page), 0); | 1262 | struct page *page = bh->b_page; |
| 1263 | if (!TestSetPageDirty(page)) | ||
| 1264 | __set_page_dirty(page, page_mapping(page), 0); | ||
| 1265 | } | ||
| 1267 | } | 1266 | } |
| 1268 | 1267 | ||
| 1269 | /* | 1268 | /* |
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c index bdca1f4b3a3e..8b65f289ee00 100644 --- a/fs/ecryptfs/crypto.c +++ b/fs/ecryptfs/crypto.c | |||
| @@ -1324,14 +1324,13 @@ static int ecryptfs_write_headers_virt(char *page_virt, size_t max, | |||
| 1324 | } | 1324 | } |
| 1325 | 1325 | ||
| 1326 | static int | 1326 | static int |
| 1327 | ecryptfs_write_metadata_to_contents(struct ecryptfs_crypt_stat *crypt_stat, | 1327 | ecryptfs_write_metadata_to_contents(struct dentry *ecryptfs_dentry, |
| 1328 | struct dentry *ecryptfs_dentry, | 1328 | char *virt, size_t virt_len) |
| 1329 | char *virt) | ||
| 1330 | { | 1329 | { |
| 1331 | int rc; | 1330 | int rc; |
| 1332 | 1331 | ||
| 1333 | rc = ecryptfs_write_lower(ecryptfs_dentry->d_inode, virt, | 1332 | rc = ecryptfs_write_lower(ecryptfs_dentry->d_inode, virt, |
| 1334 | 0, crypt_stat->num_header_bytes_at_front); | 1333 | 0, virt_len); |
| 1335 | if (rc) | 1334 | if (rc) |
| 1336 | printk(KERN_ERR "%s: Error attempting to write header " | 1335 | printk(KERN_ERR "%s: Error attempting to write header " |
| 1337 | "information to lower file; rc = [%d]\n", __func__, | 1336 | "information to lower file; rc = [%d]\n", __func__, |
| @@ -1341,7 +1340,6 @@ ecryptfs_write_metadata_to_contents(struct ecryptfs_crypt_stat *crypt_stat, | |||
| 1341 | 1340 | ||
| 1342 | static int | 1341 | static int |
| 1343 | ecryptfs_write_metadata_to_xattr(struct dentry *ecryptfs_dentry, | 1342 | ecryptfs_write_metadata_to_xattr(struct dentry *ecryptfs_dentry, |
| 1344 | struct ecryptfs_crypt_stat *crypt_stat, | ||
| 1345 | char *page_virt, size_t size) | 1343 | char *page_virt, size_t size) |
| 1346 | { | 1344 | { |
| 1347 | int rc; | 1345 | int rc; |
| @@ -1351,6 +1349,17 @@ ecryptfs_write_metadata_to_xattr(struct dentry *ecryptfs_dentry, | |||
| 1351 | return rc; | 1349 | return rc; |
| 1352 | } | 1350 | } |
| 1353 | 1351 | ||
| 1352 | static unsigned long ecryptfs_get_zeroed_pages(gfp_t gfp_mask, | ||
| 1353 | unsigned int order) | ||
| 1354 | { | ||
| 1355 | struct page *page; | ||
| 1356 | |||
| 1357 | page = alloc_pages(gfp_mask | __GFP_ZERO, order); | ||
| 1358 | if (page) | ||
| 1359 | return (unsigned long) page_address(page); | ||
| 1360 | return 0; | ||
| 1361 | } | ||
| 1362 | |||
| 1354 | /** | 1363 | /** |
| 1355 | * ecryptfs_write_metadata | 1364 | * ecryptfs_write_metadata |
| 1356 | * @ecryptfs_dentry: The eCryptfs dentry | 1365 | * @ecryptfs_dentry: The eCryptfs dentry |
| @@ -1367,7 +1376,9 @@ int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry) | |||
| 1367 | { | 1376 | { |
| 1368 | struct ecryptfs_crypt_stat *crypt_stat = | 1377 | struct ecryptfs_crypt_stat *crypt_stat = |
| 1369 | &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat; | 1378 | &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat; |
| 1379 | unsigned int order; | ||
| 1370 | char *virt; | 1380 | char *virt; |
| 1381 | size_t virt_len; | ||
| 1371 | size_t size = 0; | 1382 | size_t size = 0; |
| 1372 | int rc = 0; | 1383 | int rc = 0; |
| 1373 | 1384 | ||
| @@ -1383,33 +1394,35 @@ int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry) | |||
| 1383 | rc = -EINVAL; | 1394 | rc = -EINVAL; |
| 1384 | goto out; | 1395 | goto out; |
| 1385 | } | 1396 | } |
| 1397 | virt_len = crypt_stat->num_header_bytes_at_front; | ||
| 1398 | order = get_order(virt_len); | ||
| 1386 | /* Released in this function */ | 1399 | /* Released in this function */ |
| 1387 | virt = (char *)get_zeroed_page(GFP_KERNEL); | 1400 | virt = (char *)ecryptfs_get_zeroed_pages(GFP_KERNEL, order); |
| 1388 | if (!virt) { | 1401 | if (!virt) { |
| 1389 | printk(KERN_ERR "%s: Out of memory\n", __func__); | 1402 | printk(KERN_ERR "%s: Out of memory\n", __func__); |
| 1390 | rc = -ENOMEM; | 1403 | rc = -ENOMEM; |
| 1391 | goto out; | 1404 | goto out; |
| 1392 | } | 1405 | } |
| 1393 | rc = ecryptfs_write_headers_virt(virt, PAGE_CACHE_SIZE, &size, | 1406 | rc = ecryptfs_write_headers_virt(virt, virt_len, &size, crypt_stat, |
| 1394 | crypt_stat, ecryptfs_dentry); | 1407 | ecryptfs_dentry); |
| 1395 | if (unlikely(rc)) { | 1408 | if (unlikely(rc)) { |
| 1396 | printk(KERN_ERR "%s: Error whilst writing headers; rc = [%d]\n", | 1409 | printk(KERN_ERR "%s: Error whilst writing headers; rc = [%d]\n", |
| 1397 | __func__, rc); | 1410 | __func__, rc); |
| 1398 | goto out_free; | 1411 | goto out_free; |
| 1399 | } | 1412 | } |
| 1400 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) | 1413 | if (crypt_stat->flags & ECRYPTFS_METADATA_IN_XATTR) |
| 1401 | rc = ecryptfs_write_metadata_to_xattr(ecryptfs_dentry, | 1414 | rc = ecryptfs_write_metadata_to_xattr(ecryptfs_dentry, virt, |
| 1402 | crypt_stat, virt, size); | 1415 | size); |
| 1403 | else | 1416 | else |
| 1404 | rc = ecryptfs_write_metadata_to_contents(crypt_stat, | 1417 | rc = ecryptfs_write_metadata_to_contents(ecryptfs_dentry, virt, |
| 1405 | ecryptfs_dentry, virt); | 1418 | virt_len); |
| 1406 | if (rc) { | 1419 | if (rc) { |
| 1407 | printk(KERN_ERR "%s: Error writing metadata out to lower file; " | 1420 | printk(KERN_ERR "%s: Error writing metadata out to lower file; " |
| 1408 | "rc = [%d]\n", __func__, rc); | 1421 | "rc = [%d]\n", __func__, rc); |
| 1409 | goto out_free; | 1422 | goto out_free; |
| 1410 | } | 1423 | } |
| 1411 | out_free: | 1424 | out_free: |
| 1412 | free_page((unsigned long)virt); | 1425 | free_pages((unsigned long)virt, order); |
| 1413 | out: | 1426 | out: |
| 1414 | return rc; | 1427 | return rc; |
| 1415 | } | 1428 | } |
| @@ -2208,17 +2221,19 @@ int ecryptfs_decode_and_decrypt_filename(char **plaintext_name, | |||
| 2208 | struct dentry *ecryptfs_dir_dentry, | 2221 | struct dentry *ecryptfs_dir_dentry, |
| 2209 | const char *name, size_t name_size) | 2222 | const char *name, size_t name_size) |
| 2210 | { | 2223 | { |
| 2224 | struct ecryptfs_mount_crypt_stat *mount_crypt_stat = | ||
| 2225 | &ecryptfs_superblock_to_private( | ||
| 2226 | ecryptfs_dir_dentry->d_sb)->mount_crypt_stat; | ||
| 2211 | char *decoded_name; | 2227 | char *decoded_name; |
| 2212 | size_t decoded_name_size; | 2228 | size_t decoded_name_size; |
| 2213 | size_t packet_size; | 2229 | size_t packet_size; |
| 2214 | int rc = 0; | 2230 | int rc = 0; |
| 2215 | 2231 | ||
| 2216 | if ((name_size > ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX_SIZE) | 2232 | if ((mount_crypt_stat->flags & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES) |
| 2233 | && !(mount_crypt_stat->flags & ECRYPTFS_ENCRYPTED_VIEW_ENABLED) | ||
| 2234 | && (name_size > ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX_SIZE) | ||
| 2217 | && (strncmp(name, ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX, | 2235 | && (strncmp(name, ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX, |
| 2218 | ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX_SIZE) == 0)) { | 2236 | ECRYPTFS_FNEK_ENCRYPTED_FILENAME_PREFIX_SIZE) == 0)) { |
| 2219 | struct ecryptfs_mount_crypt_stat *mount_crypt_stat = | ||
| 2220 | &ecryptfs_superblock_to_private( | ||
| 2221 | ecryptfs_dir_dentry->d_sb)->mount_crypt_stat; | ||
| 2222 | const char *orig_name = name; | 2237 | const char *orig_name = name; |
| 2223 | size_t orig_name_size = name_size; | 2238 | size_t orig_name_size = name_size; |
| 2224 | 2239 | ||
diff --git a/fs/ecryptfs/ecryptfs_kernel.h b/fs/ecryptfs/ecryptfs_kernel.h index eb2267eca1fe..ac749d4d644f 100644 --- a/fs/ecryptfs/ecryptfs_kernel.h +++ b/fs/ecryptfs/ecryptfs_kernel.h | |||
| @@ -620,7 +620,6 @@ int ecryptfs_interpose(struct dentry *hidden_dentry, | |||
| 620 | u32 flags); | 620 | u32 flags); |
| 621 | int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | 621 | int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, |
| 622 | struct dentry *lower_dentry, | 622 | struct dentry *lower_dentry, |
| 623 | struct ecryptfs_crypt_stat *crypt_stat, | ||
| 624 | struct inode *ecryptfs_dir_inode, | 623 | struct inode *ecryptfs_dir_inode, |
| 625 | struct nameidata *ecryptfs_nd); | 624 | struct nameidata *ecryptfs_nd); |
| 626 | int ecryptfs_decode_and_decrypt_filename(char **decrypted_name, | 625 | int ecryptfs_decode_and_decrypt_filename(char **decrypted_name, |
diff --git a/fs/ecryptfs/inode.c b/fs/ecryptfs/inode.c index 5697899a168d..55b3145b8072 100644 --- a/fs/ecryptfs/inode.c +++ b/fs/ecryptfs/inode.c | |||
| @@ -246,7 +246,6 @@ out: | |||
| 246 | */ | 246 | */ |
| 247 | int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | 247 | int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, |
| 248 | struct dentry *lower_dentry, | 248 | struct dentry *lower_dentry, |
| 249 | struct ecryptfs_crypt_stat *crypt_stat, | ||
| 250 | struct inode *ecryptfs_dir_inode, | 249 | struct inode *ecryptfs_dir_inode, |
| 251 | struct nameidata *ecryptfs_nd) | 250 | struct nameidata *ecryptfs_nd) |
| 252 | { | 251 | { |
| @@ -254,6 +253,7 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | |||
| 254 | struct vfsmount *lower_mnt; | 253 | struct vfsmount *lower_mnt; |
| 255 | struct inode *lower_inode; | 254 | struct inode *lower_inode; |
| 256 | struct ecryptfs_mount_crypt_stat *mount_crypt_stat; | 255 | struct ecryptfs_mount_crypt_stat *mount_crypt_stat; |
| 256 | struct ecryptfs_crypt_stat *crypt_stat; | ||
| 257 | char *page_virt = NULL; | 257 | char *page_virt = NULL; |
| 258 | u64 file_size; | 258 | u64 file_size; |
| 259 | int rc = 0; | 259 | int rc = 0; |
| @@ -314,6 +314,11 @@ int ecryptfs_lookup_and_interpose_lower(struct dentry *ecryptfs_dentry, | |||
| 314 | goto out_free_kmem; | 314 | goto out_free_kmem; |
| 315 | } | 315 | } |
| 316 | } | 316 | } |
| 317 | crypt_stat = &ecryptfs_inode_to_private( | ||
| 318 | ecryptfs_dentry->d_inode)->crypt_stat; | ||
| 319 | /* TODO: lock for crypt_stat comparison */ | ||
| 320 | if (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED)) | ||
| 321 | ecryptfs_set_default_sizes(crypt_stat); | ||
| 317 | rc = ecryptfs_read_and_validate_header_region(page_virt, | 322 | rc = ecryptfs_read_and_validate_header_region(page_virt, |
| 318 | ecryptfs_dentry->d_inode); | 323 | ecryptfs_dentry->d_inode); |
| 319 | if (rc) { | 324 | if (rc) { |
| @@ -362,9 +367,7 @@ static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode, | |||
| 362 | { | 367 | { |
| 363 | char *encrypted_and_encoded_name = NULL; | 368 | char *encrypted_and_encoded_name = NULL; |
| 364 | size_t encrypted_and_encoded_name_size; | 369 | size_t encrypted_and_encoded_name_size; |
| 365 | struct ecryptfs_crypt_stat *crypt_stat = NULL; | ||
| 366 | struct ecryptfs_mount_crypt_stat *mount_crypt_stat = NULL; | 370 | struct ecryptfs_mount_crypt_stat *mount_crypt_stat = NULL; |
| 367 | struct ecryptfs_inode_info *inode_info; | ||
| 368 | struct dentry *lower_dir_dentry, *lower_dentry; | 371 | struct dentry *lower_dir_dentry, *lower_dentry; |
| 369 | int rc = 0; | 372 | int rc = 0; |
| 370 | 373 | ||
| @@ -388,26 +391,15 @@ static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode, | |||
| 388 | } | 391 | } |
| 389 | if (lower_dentry->d_inode) | 392 | if (lower_dentry->d_inode) |
| 390 | goto lookup_and_interpose; | 393 | goto lookup_and_interpose; |
| 391 | inode_info = ecryptfs_inode_to_private(ecryptfs_dentry->d_inode); | 394 | mount_crypt_stat = &ecryptfs_superblock_to_private( |
| 392 | if (inode_info) { | 395 | ecryptfs_dentry->d_sb)->mount_crypt_stat; |
| 393 | crypt_stat = &inode_info->crypt_stat; | 396 | if (!(mount_crypt_stat |
| 394 | /* TODO: lock for crypt_stat comparison */ | 397 | && (mount_crypt_stat->flags & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES))) |
| 395 | if (!(crypt_stat->flags & ECRYPTFS_POLICY_APPLIED)) | ||
| 396 | ecryptfs_set_default_sizes(crypt_stat); | ||
| 397 | } | ||
| 398 | if (crypt_stat) | ||
| 399 | mount_crypt_stat = crypt_stat->mount_crypt_stat; | ||
| 400 | else | ||
| 401 | mount_crypt_stat = &ecryptfs_superblock_to_private( | ||
| 402 | ecryptfs_dentry->d_sb)->mount_crypt_stat; | ||
| 403 | if (!(crypt_stat && (crypt_stat->flags & ECRYPTFS_ENCRYPT_FILENAMES)) | ||
| 404 | && !(mount_crypt_stat && (mount_crypt_stat->flags | ||
| 405 | & ECRYPTFS_GLOBAL_ENCRYPT_FILENAMES))) | ||
| 406 | goto lookup_and_interpose; | 398 | goto lookup_and_interpose; |
| 407 | dput(lower_dentry); | 399 | dput(lower_dentry); |
| 408 | rc = ecryptfs_encrypt_and_encode_filename( | 400 | rc = ecryptfs_encrypt_and_encode_filename( |
| 409 | &encrypted_and_encoded_name, &encrypted_and_encoded_name_size, | 401 | &encrypted_and_encoded_name, &encrypted_and_encoded_name_size, |
| 410 | crypt_stat, mount_crypt_stat, ecryptfs_dentry->d_name.name, | 402 | NULL, mount_crypt_stat, ecryptfs_dentry->d_name.name, |
| 411 | ecryptfs_dentry->d_name.len); | 403 | ecryptfs_dentry->d_name.len); |
| 412 | if (rc) { | 404 | if (rc) { |
| 413 | printk(KERN_ERR "%s: Error attempting to encrypt and encode " | 405 | printk(KERN_ERR "%s: Error attempting to encrypt and encode " |
| @@ -426,7 +418,7 @@ static struct dentry *ecryptfs_lookup(struct inode *ecryptfs_dir_inode, | |||
| 426 | } | 418 | } |
| 427 | lookup_and_interpose: | 419 | lookup_and_interpose: |
| 428 | rc = ecryptfs_lookup_and_interpose_lower(ecryptfs_dentry, lower_dentry, | 420 | rc = ecryptfs_lookup_and_interpose_lower(ecryptfs_dentry, lower_dentry, |
| 429 | crypt_stat, ecryptfs_dir_inode, | 421 | ecryptfs_dir_inode, |
| 430 | ecryptfs_nd); | 422 | ecryptfs_nd); |
| 431 | goto out; | 423 | goto out; |
| 432 | out_d_drop: | 424 | out_d_drop: |
diff --git a/fs/minix/inode.c b/fs/minix/inode.c index d1d1eb84679d..618865b3128b 100644 --- a/fs/minix/inode.c +++ b/fs/minix/inode.c | |||
| @@ -3,7 +3,7 @@ | |||
| 3 | * | 3 | * |
| 4 | * Copyright (C) 1991, 1992 Linus Torvalds | 4 | * Copyright (C) 1991, 1992 Linus Torvalds |
| 5 | * | 5 | * |
| 6 | * Copyright (C) 1996 Gertjan van Wingerde (gertjan@cs.vu.nl) | 6 | * Copyright (C) 1996 Gertjan van Wingerde |
| 7 | * Minix V2 fs support. | 7 | * Minix V2 fs support. |
| 8 | * | 8 | * |
| 9 | * Modified for 680x0 by Andreas Schwab | 9 | * Modified for 680x0 by Andreas Schwab |
diff --git a/fs/ufs/super.c b/fs/ufs/super.c index e65212dfb60e..261a1c2f22dd 100644 --- a/fs/ufs/super.c +++ b/fs/ufs/super.c | |||
| @@ -41,7 +41,7 @@ | |||
| 41 | * Stefan Reinauer <stepan@home.culture.mipt.ru> | 41 | * Stefan Reinauer <stepan@home.culture.mipt.ru> |
| 42 | * | 42 | * |
| 43 | * Module usage counts added on 96/04/29 by | 43 | * Module usage counts added on 96/04/29 by |
| 44 | * Gertjan van Wingerde <gertjan@cs.vu.nl> | 44 | * Gertjan van Wingerde <gwingerde@gmail.com> |
| 45 | * | 45 | * |
| 46 | * Clean swab support on 19970406 by | 46 | * Clean swab support on 19970406 by |
| 47 | * Francois-Rene Rideau <fare@tunes.org> | 47 | * Francois-Rene Rideau <fare@tunes.org> |
diff --git a/kernel/signal.c b/kernel/signal.c index 2a74fe87c0dd..1c8814481a11 100644 --- a/kernel/signal.c +++ b/kernel/signal.c | |||
| @@ -1575,7 +1575,15 @@ static void ptrace_stop(int exit_code, int clear_code, siginfo_t *info) | |||
| 1575 | read_lock(&tasklist_lock); | 1575 | read_lock(&tasklist_lock); |
| 1576 | if (may_ptrace_stop()) { | 1576 | if (may_ptrace_stop()) { |
| 1577 | do_notify_parent_cldstop(current, CLD_TRAPPED); | 1577 | do_notify_parent_cldstop(current, CLD_TRAPPED); |
| 1578 | /* | ||
| 1579 | * Don't want to allow preemption here, because | ||
| 1580 | * sys_ptrace() needs this task to be inactive. | ||
| 1581 | * | ||
| 1582 | * XXX: implement read_unlock_no_resched(). | ||
| 1583 | */ | ||
| 1584 | preempt_disable(); | ||
| 1578 | read_unlock(&tasklist_lock); | 1585 | read_unlock(&tasklist_lock); |
| 1586 | preempt_enable_no_resched(); | ||
| 1579 | schedule(); | 1587 | schedule(); |
| 1580 | } else { | 1588 | } else { |
| 1581 | /* | 1589 | /* |
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c index 3e1057f885c6..d190092c3b6e 100644 --- a/scripts/kconfig/conf.c +++ b/scripts/kconfig/conf.c | |||
| @@ -11,6 +11,7 @@ | |||
| 11 | #include <time.h> | 11 | #include <time.h> |
| 12 | #include <unistd.h> | 12 | #include <unistd.h> |
| 13 | #include <sys/stat.h> | 13 | #include <sys/stat.h> |
| 14 | #include <sys/time.h> | ||
| 14 | 15 | ||
| 15 | #define LKC_DIRECT_LINK | 16 | #define LKC_DIRECT_LINK |
| 16 | #include "lkc.h" | 17 | #include "lkc.h" |
| @@ -464,9 +465,22 @@ int main(int ac, char **av) | |||
| 464 | input_mode = set_yes; | 465 | input_mode = set_yes; |
| 465 | break; | 466 | break; |
| 466 | case 'r': | 467 | case 'r': |
| 468 | { | ||
| 469 | struct timeval now; | ||
| 470 | unsigned int seed; | ||
| 471 | |||
| 472 | /* | ||
| 473 | * Use microseconds derived seed, | ||
| 474 | * compensate for systems where it may be zero | ||
| 475 | */ | ||
| 476 | gettimeofday(&now, NULL); | ||
| 477 | |||
| 478 | seed = (unsigned int)((now.tv_sec + 1) * (now.tv_usec + 1)); | ||
| 479 | srand(seed); | ||
| 480 | |||
| 467 | input_mode = set_random; | 481 | input_mode = set_random; |
| 468 | srand(time(NULL)); | ||
| 469 | break; | 482 | break; |
| 483 | } | ||
| 470 | case 'h': | 484 | case 'h': |
| 471 | printf(_("See README for usage info\n")); | 485 | printf(_("See README for usage info\n")); |
| 472 | exit(0); | 486 | exit(0); |
diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c index 830d9eae11f9..273d73888f9d 100644 --- a/scripts/kconfig/confdata.c +++ b/scripts/kconfig/confdata.c | |||
| @@ -843,7 +843,7 @@ void conf_set_all_new_symbols(enum conf_def_mode mode) | |||
| 843 | default: | 843 | default: |
| 844 | continue; | 844 | continue; |
| 845 | } | 845 | } |
| 846 | if (!sym_is_choice(sym) || mode != def_random) | 846 | if (!(sym_is_choice(sym) && mode == def_random)) |
| 847 | sym->flags |= SYMBOL_DEF_USER; | 847 | sym->flags |= SYMBOL_DEF_USER; |
| 848 | break; | 848 | break; |
| 849 | default: | 849 | default: |
| @@ -856,28 +856,49 @@ void conf_set_all_new_symbols(enum conf_def_mode mode) | |||
| 856 | 856 | ||
| 857 | if (mode != def_random) | 857 | if (mode != def_random) |
| 858 | return; | 858 | return; |
| 859 | 859 | /* | |
| 860 | * We have different type of choice blocks. | ||
| 861 | * If curr.tri equal to mod then we can select several | ||
| 862 | * choice symbols in one block. | ||
| 863 | * In this case we do nothing. | ||
| 864 | * If curr.tri equal yes then only one symbol can be | ||
| 865 | * selected in a choice block and we set it to yes, | ||
| 866 | * and the rest to no. | ||
| 867 | */ | ||
| 860 | for_all_symbols(i, csym) { | 868 | for_all_symbols(i, csym) { |
| 861 | if (sym_has_value(csym) || !sym_is_choice(csym)) | 869 | if (sym_has_value(csym) || !sym_is_choice(csym)) |
| 862 | continue; | 870 | continue; |
| 863 | 871 | ||
| 864 | sym_calc_value(csym); | 872 | sym_calc_value(csym); |
| 873 | |||
| 874 | if (csym->curr.tri != yes) | ||
| 875 | continue; | ||
| 876 | |||
| 865 | prop = sym_get_choice_prop(csym); | 877 | prop = sym_get_choice_prop(csym); |
| 866 | def = -1; | 878 | |
| 867 | while (1) { | 879 | /* count entries in choice block */ |
| 868 | cnt = 0; | 880 | cnt = 0; |
| 869 | expr_list_for_each_sym(prop->expr, e, sym) { | 881 | expr_list_for_each_sym(prop->expr, e, sym) |
| 870 | if (sym->visible == no) | 882 | cnt++; |
| 871 | continue; | 883 | |
| 872 | if (def == cnt++) { | 884 | /* |
| 873 | csym->def[S_DEF_USER].val = sym; | 885 | * find a random value and set it to yes, |
| 874 | break; | 886 | * set the rest to no so we have only one set |
| 875 | } | 887 | */ |
| 888 | def = (rand() % cnt); | ||
| 889 | |||
| 890 | cnt = 0; | ||
| 891 | expr_list_for_each_sym(prop->expr, e, sym) { | ||
| 892 | if (def == cnt++) { | ||
| 893 | sym->def[S_DEF_USER].tri = yes; | ||
| 894 | csym->def[S_DEF_USER].val = sym; | ||
| 895 | } | ||
| 896 | else { | ||
| 897 | sym->def[S_DEF_USER].tri = no; | ||
| 876 | } | 898 | } |
| 877 | if (def >= 0 || cnt < 2) | ||
| 878 | break; | ||
| 879 | def = (rand() % cnt) + 1; | ||
| 880 | } | 899 | } |
| 881 | csym->flags |= SYMBOL_DEF_USER; | 900 | csym->flags |= SYMBOL_DEF_USER; |
| 901 | /* clear VALID to get value calculated */ | ||
| 902 | csym->flags &= ~(SYMBOL_VALID); | ||
| 882 | } | 903 | } |
| 883 | } | 904 | } |
