diff options
| author | John W. Linville <linville@tuxdriver.com> | 2006-07-27 14:27:06 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2006-07-27 14:27:06 -0400 |
| commit | 20f99dcf417a28089ef6c877ae97f5dec2eab435 (patch) | |
| tree | b4fe1f3e429d6a82ddaaa8e12899da630cfa8a63 /include | |
| parent | dd2f5538a157bda68bfa8efb39feaaccdda9e74e (diff) | |
| parent | 64821324ca49f24be1a66f2f432108f96a24e596 (diff) | |
Merge branch 'from-linus' into upstream
Diffstat (limited to 'include')
174 files changed, 1472 insertions, 899 deletions
diff --git a/include/acpi/acconfig.h b/include/acpi/acconfig.h index b492857fe721..9e6c23c360b2 100644 --- a/include/acpi/acconfig.h +++ b/include/acpi/acconfig.h | |||
| @@ -63,7 +63,7 @@ | |||
| 63 | 63 | ||
| 64 | /* Current ACPICA subsystem version in YYYYMMDD format */ | 64 | /* Current ACPICA subsystem version in YYYYMMDD format */ |
| 65 | 65 | ||
| 66 | #define ACPI_CA_VERSION 0x20060623 | 66 | #define ACPI_CA_VERSION 0x20060707 |
| 67 | 67 | ||
| 68 | /* | 68 | /* |
| 69 | * OS name, used for the _OS object. The _OS object is essentially obsolete, | 69 | * OS name, used for the _OS object. The _OS object is essentially obsolete, |
diff --git a/include/acpi/acinterp.h b/include/acpi/acinterp.h index 216339a8f1f6..91586d0d5bb5 100644 --- a/include/acpi/acinterp.h +++ b/include/acpi/acinterp.h | |||
| @@ -53,10 +53,14 @@ | |||
| 53 | #define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_exdump_info)) | 53 | #define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (struct acpi_exdump_info)) |
| 54 | 54 | ||
| 55 | /* | 55 | /* |
| 56 | * If possible, pack the following structure to byte alignment, since we | 56 | * If possible, pack the following structures to byte alignment, since we |
| 57 | * don't care about performance for debug output | 57 | * don't care about performance for debug output. Two cases where we cannot |
| 58 | * pack the structures: | ||
| 59 | * | ||
| 60 | * 1) Hardware does not support misaligned memory transfers | ||
| 61 | * 2) Compiler does not support pointers within packed structures | ||
| 58 | */ | 62 | */ |
| 59 | #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED | 63 | #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) |
| 60 | #pragma pack(1) | 64 | #pragma pack(1) |
| 61 | #endif | 65 | #endif |
| 62 | 66 | ||
diff --git a/include/acpi/aclocal.h b/include/acpi/aclocal.h index 56b802486161..a4d0e73d5aca 100644 --- a/include/acpi/aclocal.h +++ b/include/acpi/aclocal.h | |||
| @@ -127,7 +127,7 @@ typedef u8 acpi_owner_id; | |||
| 127 | 127 | ||
| 128 | /* This Thread ID means that the mutex is not in use (unlocked) */ | 128 | /* This Thread ID means that the mutex is not in use (unlocked) */ |
| 129 | 129 | ||
| 130 | #define ACPI_MUTEX_NOT_ACQUIRED (u32) -1 | 130 | #define ACPI_MUTEX_NOT_ACQUIRED (acpi_thread_id) 0 |
| 131 | 131 | ||
| 132 | /* Table for the global mutexes */ | 132 | /* Table for the global mutexes */ |
| 133 | 133 | ||
| @@ -204,7 +204,7 @@ struct acpi_namespace_node { | |||
| 204 | /* Namespace Node flags */ | 204 | /* Namespace Node flags */ |
| 205 | 205 | ||
| 206 | #define ANOBJ_END_OF_PEER_LIST 0x01 /* End-of-list, Peer field points to parent */ | 206 | #define ANOBJ_END_OF_PEER_LIST 0x01 /* End-of-list, Peer field points to parent */ |
| 207 | #define ANOBJ_DATA_WIDTH_32 0x02 /* Parent table uses 32-bit math */ | 207 | #define ANOBJ_RESERVED 0x02 /* Available for future use */ |
| 208 | #define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ | 208 | #define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ |
| 209 | #define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ | 209 | #define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ |
| 210 | #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ | 210 | #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ |
diff --git a/include/acpi/acmacros.h b/include/acpi/acmacros.h index f1ac6109556e..192fa095a515 100644 --- a/include/acpi/acmacros.h +++ b/include/acpi/acmacros.h | |||
| @@ -724,9 +724,15 @@ | |||
| 724 | 724 | ||
| 725 | /* Memory allocation */ | 725 | /* Memory allocation */ |
| 726 | 726 | ||
| 727 | #ifndef ACPI_ALLOCATE | ||
| 727 | #define ACPI_ALLOCATE(a) acpi_ut_allocate((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__) | 728 | #define ACPI_ALLOCATE(a) acpi_ut_allocate((acpi_size)(a),_COMPONENT,_acpi_module_name,__LINE__) |
| 729 | #endif | ||
| 730 | #ifndef ACPI_ALLOCATE_ZEROED | ||
| 728 | #define ACPI_ALLOCATE_ZEROED(a) acpi_ut_allocate_zeroed((acpi_size)(a), _COMPONENT,_acpi_module_name,__LINE__) | 731 | #define ACPI_ALLOCATE_ZEROED(a) acpi_ut_allocate_zeroed((acpi_size)(a), _COMPONENT,_acpi_module_name,__LINE__) |
| 729 | #define ACPI_FREE(a) kfree(a) | 732 | #endif |
| 733 | #ifndef ACPI_FREE | ||
| 734 | #define ACPI_FREE(a) acpio_os_free(a) | ||
| 735 | #endif | ||
| 730 | #define ACPI_MEM_TRACKING(a) | 736 | #define ACPI_MEM_TRACKING(a) |
| 731 | 737 | ||
| 732 | #else | 738 | #else |
diff --git a/include/acpi/acresrc.h b/include/acpi/acresrc.h index ad11fc13fbef..80a3b33571b4 100644 --- a/include/acpi/acresrc.h +++ b/include/acpi/acresrc.h | |||
| @@ -50,9 +50,13 @@ | |||
| 50 | 50 | ||
| 51 | /* | 51 | /* |
| 52 | * If possible, pack the following structures to byte alignment, since we | 52 | * If possible, pack the following structures to byte alignment, since we |
| 53 | * don't care about performance for debug output | 53 | * don't care about performance for debug output. Two cases where we cannot |
| 54 | * pack the structures: | ||
| 55 | * | ||
| 56 | * 1) Hardware does not support misaligned memory transfers | ||
| 57 | * 2) Compiler does not support pointers within packed structures | ||
| 54 | */ | 58 | */ |
| 55 | #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED | 59 | #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) |
| 56 | #pragma pack(1) | 60 | #pragma pack(1) |
| 57 | #endif | 61 | #endif |
| 58 | 62 | ||
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h index 3f853cabbd41..47faf27913a5 100644 --- a/include/acpi/platform/aclinux.h +++ b/include/acpi/platform/aclinux.h | |||
| @@ -59,6 +59,7 @@ | |||
| 59 | #include <asm/acpi.h> | 59 | #include <asm/acpi.h> |
| 60 | #include <linux/slab.h> | 60 | #include <linux/slab.h> |
| 61 | #include <linux/spinlock_types.h> | 61 | #include <linux/spinlock_types.h> |
| 62 | #include <asm/current.h> | ||
| 62 | 63 | ||
| 63 | /* Host-dependent types and defines */ | 64 | /* Host-dependent types and defines */ |
| 64 | 65 | ||
| @@ -100,8 +101,30 @@ | |||
| 100 | 101 | ||
| 101 | #define acpi_cpu_flags unsigned long | 102 | #define acpi_cpu_flags unsigned long |
| 102 | 103 | ||
| 103 | #define acpi_thread_id u32 | 104 | #define acpi_thread_id struct task_struct * |
| 104 | 105 | ||
| 105 | static inline acpi_thread_id acpi_os_get_thread_id(void) { return 0; } | 106 | static inline acpi_thread_id acpi_os_get_thread_id(void) { return current; } |
| 107 | |||
| 108 | /* | ||
| 109 | * The irqs_disabled() check is for resume from RAM. | ||
| 110 | * Interrupts are off during resume, just like they are for boot. | ||
| 111 | * However, boot has (system_state != SYSTEM_RUNNING) | ||
| 112 | * to quiet __might_sleep() in kmalloc() and resume does not. | ||
| 113 | */ | ||
| 114 | #include <acpi/actypes.h> | ||
| 115 | static inline void *acpi_os_allocate(acpi_size size) { | ||
| 116 | return kmalloc(size, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL); | ||
| 117 | } | ||
| 118 | static inline void *acpi_os_allocate_zeroed(acpi_size size) { | ||
| 119 | return kzalloc(size, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL); | ||
| 120 | } | ||
| 121 | |||
| 122 | static inline void *acpi_os_acquire_object(acpi_cache_t * cache) { | ||
| 123 | return kmem_cache_zalloc(cache, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL); | ||
| 124 | } | ||
| 125 | |||
| 126 | #define ACPI_ALLOCATE(a) acpi_os_allocate(a) | ||
| 127 | #define ACPI_ALLOCATE_ZEROED(a) acpi_os_allocate_zeroed(a) | ||
| 128 | #define ACPI_FREE(a) kfree(a) | ||
| 106 | 129 | ||
| 107 | #endif /* __ACLINUX_H__ */ | 130 | #endif /* __ACLINUX_H__ */ |
diff --git a/include/asm-alpha/barrier.h b/include/asm-alpha/barrier.h index 681ff581afa5..384dc08d6f53 100644 --- a/include/asm-alpha/barrier.h +++ b/include/asm-alpha/barrier.h | |||
| @@ -30,7 +30,4 @@ __asm__ __volatile__("mb": : :"memory") | |||
| 30 | #define set_mb(var, value) \ | 30 | #define set_mb(var, value) \ |
| 31 | do { var = value; mb(); } while (0) | 31 | do { var = value; mb(); } while (0) |
| 32 | 32 | ||
| 33 | #define set_wmb(var, value) \ | ||
| 34 | do { var = value; wmb(); } while (0) | ||
| 35 | |||
| 36 | #endif /* __BARRIER_H */ | 33 | #endif /* __BARRIER_H */ |
diff --git a/include/asm-arm/arch-versatile/platform.h b/include/asm-arm/arch-versatile/platform.h index 72ef874567d5..2af9d7c9c63c 100644 --- a/include/asm-arm/arch-versatile/platform.h +++ b/include/asm-arm/arch-versatile/platform.h | |||
| @@ -65,6 +65,8 @@ | |||
| 65 | #define VERSATILE_SYS_OSC1_OFFSET 0x1C | 65 | #define VERSATILE_SYS_OSC1_OFFSET 0x1C |
| 66 | #endif | 66 | #endif |
| 67 | 67 | ||
| 68 | #define VERSATILE_SYS_OSCCLCD_OFFSET 0x1c | ||
| 69 | |||
| 68 | #define VERSATILE_SYS_LOCK_OFFSET 0x20 | 70 | #define VERSATILE_SYS_LOCK_OFFSET 0x20 |
| 69 | #define VERSATILE_SYS_100HZ_OFFSET 0x24 | 71 | #define VERSATILE_SYS_100HZ_OFFSET 0x24 |
| 70 | #define VERSATILE_SYS_CFGDATA1_OFFSET 0x28 | 72 | #define VERSATILE_SYS_CFGDATA1_OFFSET 0x28 |
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h index 6001febfe63b..0947cbf9b69a 100644 --- a/include/asm-arm/system.h +++ b/include/asm-arm/system.h | |||
| @@ -176,7 +176,6 @@ extern unsigned int user_debug; | |||
| 176 | #define wmb() mb() | 176 | #define wmb() mb() |
| 177 | #define read_barrier_depends() do { } while(0) | 177 | #define read_barrier_depends() do { } while(0) |
| 178 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 178 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 179 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 180 | #define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); | 179 | #define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); |
| 181 | 180 | ||
| 182 | /* | 181 | /* |
diff --git a/include/asm-arm26/system.h b/include/asm-arm26/system.h index d1f69d706198..00ae32aa1dba 100644 --- a/include/asm-arm26/system.h +++ b/include/asm-arm26/system.h | |||
| @@ -90,7 +90,6 @@ extern unsigned int user_debug; | |||
| 90 | 90 | ||
| 91 | #define read_barrier_depends() do { } while(0) | 91 | #define read_barrier_depends() do { } while(0) |
| 92 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 92 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 93 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 94 | 93 | ||
| 95 | /* | 94 | /* |
| 96 | * We assume knowledge of how | 95 | * We assume knowledge of how |
diff --git a/include/asm-cris/system.h b/include/asm-cris/system.h index b1c593b6dbff..b869f6161aaa 100644 --- a/include/asm-cris/system.h +++ b/include/asm-cris/system.h | |||
| @@ -17,7 +17,6 @@ extern struct task_struct *resume(struct task_struct *prev, struct task_struct * | |||
| 17 | #define wmb() mb() | 17 | #define wmb() mb() |
| 18 | #define read_barrier_depends() do { } while(0) | 18 | #define read_barrier_depends() do { } while(0) |
| 19 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 19 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 20 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 21 | 20 | ||
| 22 | #ifdef CONFIG_SMP | 21 | #ifdef CONFIG_SMP |
| 23 | #define smp_mb() mb() | 22 | #define smp_mb() mb() |
diff --git a/include/asm-frv/elf.h b/include/asm-frv/elf.h index 38656da00e40..7df58a3e6e4a 100644 --- a/include/asm-frv/elf.h +++ b/include/asm-frv/elf.h | |||
| @@ -64,7 +64,7 @@ typedef unsigned long elf_greg_t; | |||
| 64 | #define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t)) | 64 | #define ELF_NGREG (sizeof(struct pt_regs) / sizeof(elf_greg_t)) |
| 65 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; | 65 | typedef elf_greg_t elf_gregset_t[ELF_NGREG]; |
| 66 | 66 | ||
| 67 | typedef struct fpmedia_struct elf_fpregset_t; | 67 | typedef struct user_fpmedia_regs elf_fpregset_t; |
| 68 | 68 | ||
| 69 | /* | 69 | /* |
| 70 | * This is used to ensure we don't load something for the wrong architecture. | 70 | * This is used to ensure we don't load something for the wrong architecture. |
| @@ -116,6 +116,7 @@ do { \ | |||
| 116 | } while(0) | 116 | } while(0) |
| 117 | 117 | ||
| 118 | #define USE_ELF_CORE_DUMP | 118 | #define USE_ELF_CORE_DUMP |
| 119 | #define ELF_FDPIC_CORE_EFLAGS EF_FRV_FDPIC | ||
| 119 | #define ELF_EXEC_PAGESIZE 16384 | 120 | #define ELF_EXEC_PAGESIZE 16384 |
| 120 | 121 | ||
| 121 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical | 122 | /* This is the location that an ET_DYN program is loaded if exec'ed. Typical |
| @@ -125,9 +126,6 @@ do { \ | |||
| 125 | 126 | ||
| 126 | #define ELF_ET_DYN_BASE 0x08000000UL | 127 | #define ELF_ET_DYN_BASE 0x08000000UL |
| 127 | 128 | ||
| 128 | #define ELF_CORE_COPY_REGS(pr_reg, regs) \ | ||
| 129 | memcpy(&pr_reg[0], ®s->sp, 31 * sizeof(uint32_t)); | ||
| 130 | |||
| 131 | /* This yields a mask that user programs can use to figure out what | 129 | /* This yields a mask that user programs can use to figure out what |
| 132 | instruction set this cpu supports. */ | 130 | instruction set this cpu supports. */ |
| 133 | 131 | ||
diff --git a/include/asm-frv/gdb-stub.h b/include/asm-frv/gdb-stub.h index c58479a4be99..24f9738670bd 100644 --- a/include/asm-frv/gdb-stub.h +++ b/include/asm-frv/gdb-stub.h | |||
| @@ -89,6 +89,7 @@ extern void gdbstub_do_rx(void); | |||
| 89 | 89 | ||
| 90 | extern asmlinkage void __debug_stub_init_break(void); | 90 | extern asmlinkage void __debug_stub_init_break(void); |
| 91 | extern asmlinkage void __break_hijack_kernel_event(void); | 91 | extern asmlinkage void __break_hijack_kernel_event(void); |
| 92 | extern asmlinkage void __break_hijack_kernel_event_breaks_here(void); | ||
| 92 | extern asmlinkage void start_kernel(void); | 93 | extern asmlinkage void start_kernel(void); |
| 93 | 94 | ||
| 94 | extern asmlinkage void gdbstub_rx_handler(void); | 95 | extern asmlinkage void gdbstub_rx_handler(void); |
| @@ -114,5 +115,26 @@ extern void console_set_baud(unsigned baud); | |||
| 114 | #define gdbstub_proto(FMT,...) ({ 0; }) | 115 | #define gdbstub_proto(FMT,...) ({ 0; }) |
| 115 | #endif | 116 | #endif |
| 116 | 117 | ||
| 118 | /* | ||
| 119 | * we dedicate GR31 to keeping a pointer to the gdbstub exception frame | ||
| 120 | * - gr31 is destroyed on entry to the gdbstub if !MMU | ||
| 121 | * - gr31 is saved in scr3 on entry to the gdbstub if in !MMU | ||
| 122 | */ | ||
| 123 | register struct frv_frame0 *__debug_frame0 asm("gr31"); | ||
| 124 | |||
| 125 | #define __debug_frame (&__debug_frame0->regs) | ||
| 126 | #define __debug_user_context (&__debug_frame0->uc) | ||
| 127 | #define __debug_regs (&__debug_frame0->debug) | ||
| 128 | #define __debug_reg(X) ((unsigned long *) ((unsigned long) &__debug_frame0 + (X))) | ||
| 129 | |||
| 130 | struct frv_debug_status { | ||
| 131 | unsigned long bpsr; | ||
| 132 | unsigned long dcr; | ||
| 133 | unsigned long brr; | ||
| 134 | unsigned long nmar; | ||
| 135 | }; | ||
| 136 | |||
| 137 | extern struct frv_debug_status __debug_status; | ||
| 138 | |||
| 117 | #endif /* _LANGUAGE_ASSEMBLY */ | 139 | #endif /* _LANGUAGE_ASSEMBLY */ |
| 118 | #endif /* __ASM_GDB_STUB_H */ | 140 | #endif /* __ASM_GDB_STUB_H */ |
diff --git a/include/asm-frv/processor.h b/include/asm-frv/processor.h index 1c4dba1c5f57..3744f2e47f48 100644 --- a/include/asm-frv/processor.h +++ b/include/asm-frv/processor.h | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | */ | 21 | */ |
| 22 | #define current_text_addr() ({ __label__ _l; _l: &&_l;}) | 22 | #define current_text_addr() ({ __label__ _l; _l: &&_l;}) |
| 23 | 23 | ||
| 24 | #include <linux/compiler.h> | ||
| 24 | #include <linux/linkage.h> | 25 | #include <linux/linkage.h> |
| 25 | #include <asm/sections.h> | 26 | #include <asm/sections.h> |
| 26 | #include <asm/segment.h> | 27 | #include <asm/segment.h> |
| @@ -139,7 +140,7 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 139 | extern struct task_struct *alloc_task_struct(void); | 140 | extern struct task_struct *alloc_task_struct(void); |
| 140 | extern void free_task_struct(struct task_struct *p); | 141 | extern void free_task_struct(struct task_struct *p); |
| 141 | 142 | ||
| 142 | #define cpu_relax() do { } while (0) | 143 | #define cpu_relax() barrier() |
| 143 | 144 | ||
| 144 | /* data cache prefetch */ | 145 | /* data cache prefetch */ |
| 145 | #define ARCH_HAS_PREFETCH | 146 | #define ARCH_HAS_PREFETCH |
diff --git a/include/asm-frv/ptrace.h b/include/asm-frv/ptrace.h index b2cce0718e57..7ff525162a72 100644 --- a/include/asm-frv/ptrace.h +++ b/include/asm-frv/ptrace.h | |||
| @@ -62,18 +62,10 @@ | |||
| 62 | #ifndef __ASSEMBLY__ | 62 | #ifndef __ASSEMBLY__ |
| 63 | 63 | ||
| 64 | /* | 64 | /* |
| 65 | * dedicate GR28; to keeping the a pointer to the current exception frame | 65 | * we dedicate GR28 to keeping a pointer to the current exception frame |
| 66 | * - gr28 is destroyed on entry to the kernel from userspace | ||
| 66 | */ | 67 | */ |
| 67 | register struct pt_regs *__frame asm("gr28"); | 68 | register struct pt_regs *__frame asm("gr28"); |
| 68 | register struct pt_regs *__debug_frame asm("gr31"); | ||
| 69 | |||
| 70 | #ifndef container_of | ||
| 71 | #define container_of(ptr, type, member) ({ \ | ||
| 72 | const typeof( ((type *)0)->member ) *__mptr = (ptr); \ | ||
| 73 | (type *)( (char *)__mptr - offsetof(type,member) );}) | ||
| 74 | #endif | ||
| 75 | |||
| 76 | #define __debug_regs container_of(__debug_frame, struct pt_debug_regs, normal_regs) | ||
| 77 | 69 | ||
| 78 | #define user_mode(regs) (!((regs)->psr & PSR_S)) | 70 | #define user_mode(regs) (!((regs)->psr & PSR_S)) |
| 79 | #define instruction_pointer(regs) ((regs)->pc) | 71 | #define instruction_pointer(regs) ((regs)->pc) |
diff --git a/include/asm-frv/registers.h b/include/asm-frv/registers.h index fccfd95cff68..9666119fcf6e 100644 --- a/include/asm-frv/registers.h +++ b/include/asm-frv/registers.h | |||
| @@ -23,7 +23,13 @@ | |||
| 23 | * | 23 | * |
| 24 | * +0x2000 +---------------------- | 24 | * +0x2000 +---------------------- |
| 25 | * | union { | 25 | * | union { |
| 26 | * | struct user_context | 26 | * | struct frv_frame0 { |
| 27 | * | struct user_context { | ||
| 28 | * | struct user_int_regs | ||
| 29 | * | struct user_fpmedia_regs | ||
| 30 | * | } | ||
| 31 | * | struct frv_debug_regs | ||
| 32 | * | } | ||
| 27 | * | struct pt_regs [user exception] | 33 | * | struct pt_regs [user exception] |
| 28 | * | } | 34 | * | } |
| 29 | * +---------------------- <-- __kernel_frame0_ptr (maybe GR28) | 35 | * +---------------------- <-- __kernel_frame0_ptr (maybe GR28) |
| @@ -51,11 +57,11 @@ | |||
| 51 | #define _ASM_REGISTERS_H | 57 | #define _ASM_REGISTERS_H |
| 52 | 58 | ||
| 53 | #ifndef __ASSEMBLY__ | 59 | #ifndef __ASSEMBLY__ |
| 54 | #define __OFFSET(X) (X) | 60 | #define __OFFSET(X,N) ((X)+(N)*4) |
| 55 | #define __OFFSETC(X,N) xxxxxxxxxxxxxxxxxxxxxxxx | 61 | #define __OFFSETC(X,N) xxxxxxxxxxxxxxxxxxxxxxxx |
| 56 | #else | 62 | #else |
| 57 | #define __OFFSET(X) ((X)*4) | 63 | #define __OFFSET(X,N) ((X)+(N)*4) |
| 58 | #define __OFFSETC(X,N) ((X)*4+(N)) | 64 | #define __OFFSETC(X,N) ((X)+(N)) |
| 59 | #endif | 65 | #endif |
| 60 | 66 | ||
| 61 | /*****************************************************************************/ | 67 | /*****************************************************************************/ |
| @@ -117,30 +123,13 @@ struct pt_regs { | |||
| 117 | 123 | ||
| 118 | #endif | 124 | #endif |
| 119 | 125 | ||
| 120 | #define REG_PSR __OFFSET( 0) /* Processor Status Register */ | ||
| 121 | #define REG_ISR __OFFSET( 1) /* Integer Status Register */ | ||
| 122 | #define REG_CCR __OFFSET( 2) /* Condition Code Register */ | ||
| 123 | #define REG_CCCR __OFFSET( 3) /* Condition Code for Conditional Insns Register */ | ||
| 124 | #define REG_LR __OFFSET( 4) /* Link Register */ | ||
| 125 | #define REG_LCR __OFFSET( 5) /* Loop Count Register */ | ||
| 126 | #define REG_PC __OFFSET( 6) /* Program Counter */ | ||
| 127 | |||
| 128 | #define REG__STATUS __OFFSET( 7) /* exception status */ | ||
| 129 | #define REG__STATUS_STEP 0x00000001 /* - reenable single stepping on return */ | 126 | #define REG__STATUS_STEP 0x00000001 /* - reenable single stepping on return */ |
| 130 | #define REG__STATUS_STEPPED 0x00000002 /* - single step caused exception */ | 127 | #define REG__STATUS_STEPPED 0x00000002 /* - single step caused exception */ |
| 131 | #define REG__STATUS_BROKE 0x00000004 /* - BREAK insn caused exception */ | 128 | #define REG__STATUS_BROKE 0x00000004 /* - BREAK insn caused exception */ |
| 132 | #define REG__STATUS_SYSC_ENTRY 0x40000000 /* - T on syscall entry (ptrace.c only) */ | 129 | #define REG__STATUS_SYSC_ENTRY 0x40000000 /* - T on syscall entry (ptrace.c only) */ |
| 133 | #define REG__STATUS_SYSC_EXIT 0x80000000 /* - T on syscall exit (ptrace.c only) */ | 130 | #define REG__STATUS_SYSC_EXIT 0x80000000 /* - T on syscall exit (ptrace.c only) */ |
| 134 | 131 | ||
| 135 | #define REG_SYSCALLNO __OFFSET( 8) /* syscall number or -1 */ | 132 | #define REG_GR(R) __OFFSET(REG_GR0, (R)) |
| 136 | #define REG_ORIG_GR8 __OFFSET( 9) /* saved GR8 for signal handling */ | ||
| 137 | #define REG_GNER0 __OFFSET(10) | ||
| 138 | #define REG_GNER1 __OFFSET(11) | ||
| 139 | #define REG_IACC0 __OFFSET(12) | ||
| 140 | |||
| 141 | #define REG_TBR __OFFSET(14) /* Trap Vector Register */ | ||
| 142 | #define REG_GR(R) __OFFSET((14+(R))) | ||
| 143 | #define REG__END REG_GR(32) | ||
| 144 | 133 | ||
| 145 | #define REG_SP REG_GR(1) | 134 | #define REG_SP REG_GR(1) |
| 146 | #define REG_FP REG_GR(2) | 135 | #define REG_FP REG_GR(2) |
| @@ -149,27 +138,21 @@ struct pt_regs { | |||
| 149 | 138 | ||
| 150 | /*****************************************************************************/ | 139 | /*****************************************************************************/ |
| 151 | /* | 140 | /* |
| 152 | * extension tacked in front of the exception frame in debug mode | 141 | * debugging registers |
| 153 | */ | 142 | */ |
| 154 | #ifndef __ASSEMBLY__ | 143 | #ifndef __ASSEMBLY__ |
| 155 | 144 | ||
| 156 | struct pt_debug_regs | 145 | struct frv_debug_regs |
| 157 | { | 146 | { |
| 158 | unsigned long bpsr; | ||
| 159 | unsigned long dcr; | 147 | unsigned long dcr; |
| 160 | unsigned long brr; | 148 | unsigned long ibar[4] __attribute__((aligned(8))); |
| 161 | unsigned long nmar; | 149 | unsigned long dbar[4] __attribute__((aligned(8))); |
| 162 | struct pt_regs normal_regs; | 150 | unsigned long dbdr[4][4] __attribute__((aligned(8))); |
| 151 | unsigned long dbmr[4][4] __attribute__((aligned(8))); | ||
| 163 | } __attribute__((aligned(8))); | 152 | } __attribute__((aligned(8))); |
| 164 | 153 | ||
| 165 | #endif | 154 | #endif |
| 166 | 155 | ||
| 167 | #define REG_NMAR __OFFSET(-1) | ||
| 168 | #define REG_BRR __OFFSET(-2) | ||
| 169 | #define REG_DCR __OFFSET(-3) | ||
| 170 | #define REG_BPSR __OFFSET(-4) | ||
| 171 | #define REG__DEBUG_XTRA __OFFSET(4) | ||
| 172 | |||
| 173 | /*****************************************************************************/ | 156 | /*****************************************************************************/ |
| 174 | /* | 157 | /* |
| 175 | * userspace registers | 158 | * userspace registers |
| @@ -223,33 +206,27 @@ struct user_context | |||
| 223 | void *extension; | 206 | void *extension; |
| 224 | } __attribute__((aligned(8))); | 207 | } __attribute__((aligned(8))); |
| 225 | 208 | ||
| 209 | struct frv_frame0 { | ||
| 210 | union { | ||
| 211 | struct pt_regs regs; | ||
| 212 | struct user_context uc; | ||
| 213 | }; | ||
| 214 | |||
| 215 | struct frv_debug_regs debug; | ||
| 216 | |||
| 217 | } __attribute__((aligned(32))); | ||
| 218 | |||
| 226 | #endif | 219 | #endif |
| 227 | 220 | ||
| 228 | #define NR_USER_INT_REGS (14 + 64) | 221 | #define __INT_GR(R) __OFFSET(__INT_GR0, (R)) |
| 229 | #define NR_USER_FPMEDIA_REGS (64 + 2 + 2 + 8 + 8/4 + 1) | 222 | |
| 230 | #define NR_USER_CONTEXT (NR_USER_INT_REGS + NR_USER_FPMEDIA_REGS + 1) | 223 | #define __FPMEDIA_FR(R) __OFFSET(__FPMEDIA_FR0, (R)) |
| 231 | 224 | #define __FPMEDIA_FNER(R) __OFFSET(__FPMEDIA_FNER0, (R)) | |
| 232 | #define USER_CONTEXT_SIZE (((NR_USER_CONTEXT + 1) & ~1) * 4) | 225 | #define __FPMEDIA_MSR(R) __OFFSET(__FPMEDIA_MSR0, (R)) |
| 233 | 226 | #define __FPMEDIA_ACC(R) __OFFSET(__FPMEDIA_ACC0, (R)) | |
| 234 | #define __THREAD_FRAME __OFFSET(0) | 227 | #define __FPMEDIA_ACCG(R) __OFFSETC(__FPMEDIA_ACCG0, (R)) |
| 235 | #define __THREAD_CURR __OFFSET(1) | 228 | #define __FPMEDIA_FSR(R) __OFFSET(__FPMEDIA_FSR0, (R)) |
| 236 | #define __THREAD_SP __OFFSET(2) | 229 | |
| 237 | #define __THREAD_FP __OFFSET(3) | 230 | #define __THREAD_GR(R) __OFFSET(__THREAD_GR16, (R) - 16) |
| 238 | #define __THREAD_LR __OFFSET(4) | ||
| 239 | #define __THREAD_PC __OFFSET(5) | ||
| 240 | #define __THREAD_GR(R) __OFFSET(6 + (R) - 16) | ||
| 241 | #define __THREAD_FRAME0 __OFFSET(19) | ||
| 242 | #define __THREAD_USER __OFFSET(19) | ||
| 243 | |||
| 244 | #define __USER_INT __OFFSET(0) | ||
| 245 | #define __INT_GR(R) __OFFSET(14 + (R)) | ||
| 246 | |||
| 247 | #define __USER_FPMEDIA __OFFSET(NR_USER_INT_REGS) | ||
| 248 | #define __FPMEDIA_FR(R) __OFFSET(NR_USER_INT_REGS + (R)) | ||
| 249 | #define __FPMEDIA_FNER(R) __OFFSET(NR_USER_INT_REGS + 64 + (R)) | ||
| 250 | #define __FPMEDIA_MSR(R) __OFFSET(NR_USER_INT_REGS + 66 + (R)) | ||
| 251 | #define __FPMEDIA_ACC(R) __OFFSET(NR_USER_INT_REGS + 68 + (R)) | ||
| 252 | #define __FPMEDIA_ACCG(R) __OFFSETC(NR_USER_INT_REGS + 76, (R)) | ||
| 253 | #define __FPMEDIA_FSR(R) __OFFSET(NR_USER_INT_REGS + 78 + (R)) | ||
| 254 | 231 | ||
| 255 | #endif /* _ASM_REGISTERS_H */ | 232 | #endif /* _ASM_REGISTERS_H */ |
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h index 351863dfd06e..1166899317d7 100644 --- a/include/asm-frv/system.h +++ b/include/asm-frv/system.h | |||
| @@ -179,7 +179,6 @@ do { \ | |||
| 179 | #define rmb() asm volatile ("membar" : : :"memory") | 179 | #define rmb() asm volatile ("membar" : : :"memory") |
| 180 | #define wmb() asm volatile ("membar" : : :"memory") | 180 | #define wmb() asm volatile ("membar" : : :"memory") |
| 181 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 181 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 182 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 183 | 182 | ||
| 184 | #define smp_mb() mb() | 183 | #define smp_mb() mb() |
| 185 | #define smp_rmb() rmb() | 184 | #define smp_rmb() rmb() |
diff --git a/include/asm-frv/thread_info.h b/include/asm-frv/thread_info.h index ea426abf01d3..d66c48e6ef14 100644 --- a/include/asm-frv/thread_info.h +++ b/include/asm-frv/thread_info.h | |||
| @@ -19,6 +19,8 @@ | |||
| 19 | #include <asm/processor.h> | 19 | #include <asm/processor.h> |
| 20 | #endif | 20 | #endif |
| 21 | 21 | ||
| 22 | #define THREAD_SIZE 8192 | ||
| 23 | |||
| 22 | /* | 24 | /* |
| 23 | * low level task data that entry.S needs immediate access to | 25 | * low level task data that entry.S needs immediate access to |
| 24 | * - this struct should fit entirely inside of one cache line | 26 | * - this struct should fit entirely inside of one cache line |
| @@ -46,15 +48,7 @@ struct thread_info { | |||
| 46 | 48 | ||
| 47 | #else /* !__ASSEMBLY__ */ | 49 | #else /* !__ASSEMBLY__ */ |
| 48 | 50 | ||
| 49 | /* offsets into the thread_info struct for assembly code access */ | 51 | #include <asm/asm-offsets.h> |
| 50 | #define TI_TASK 0x00000000 | ||
| 51 | #define TI_EXEC_DOMAIN 0x00000004 | ||
| 52 | #define TI_FLAGS 0x00000008 | ||
| 53 | #define TI_STATUS 0x0000000C | ||
| 54 | #define TI_CPU 0x00000010 | ||
| 55 | #define TI_PRE_COUNT 0x00000014 | ||
| 56 | #define TI_ADDR_LIMIT 0x00000018 | ||
| 57 | #define TI_RESTART_BLOCK 0x0000001C | ||
| 58 | 52 | ||
| 59 | #endif | 53 | #endif |
| 60 | 54 | ||
| @@ -83,12 +77,6 @@ struct thread_info { | |||
| 83 | #define init_thread_info (init_thread_union.thread_info) | 77 | #define init_thread_info (init_thread_union.thread_info) |
| 84 | #define init_stack (init_thread_union.stack) | 78 | #define init_stack (init_thread_union.stack) |
| 85 | 79 | ||
| 86 | #ifdef CONFIG_SMALL_TASKS | ||
| 87 | #define THREAD_SIZE 4096 | ||
| 88 | #else | ||
| 89 | #define THREAD_SIZE 8192 | ||
| 90 | #endif | ||
| 91 | |||
| 92 | /* how to get the thread information struct from C */ | 80 | /* how to get the thread information struct from C */ |
| 93 | register struct thread_info *__current_thread_info asm("gr15"); | 81 | register struct thread_info *__current_thread_info asm("gr15"); |
| 94 | 82 | ||
| @@ -111,11 +99,7 @@ register struct thread_info *__current_thread_info asm("gr15"); | |||
| 111 | 99 | ||
| 112 | #define free_thread_info(info) kfree(info) | 100 | #define free_thread_info(info) kfree(info) |
| 113 | 101 | ||
| 114 | #else /* !__ASSEMBLY__ */ | 102 | #endif /* __ASSEMBLY__ */ |
| 115 | |||
| 116 | #define THREAD_SIZE 8192 | ||
| 117 | |||
| 118 | #endif | ||
| 119 | 103 | ||
| 120 | /* | 104 | /* |
| 121 | * thread information flags | 105 | * thread information flags |
diff --git a/include/asm-generic/Kbuild.asm b/include/asm-generic/Kbuild.asm index d8d0bcecd23f..6b16dda18115 100644 --- a/include/asm-generic/Kbuild.asm +++ b/include/asm-generic/Kbuild.asm | |||
| @@ -1,11 +1,8 @@ | |||
| 1 | unifdef-y += a.out.h auxvec.h byteorder.h errno.h fcntl.h ioctl.h \ | 1 | unifdef-y += a.out.h auxvec.h byteorder.h errno.h fcntl.h ioctl.h \ |
| 2 | ioctls.h ipcbuf.h irq.h mman.h msgbuf.h param.h poll.h \ | 2 | ioctls.h ipcbuf.h mman.h msgbuf.h param.h poll.h \ |
| 3 | posix_types.h ptrace.h resource.h sembuf.h shmbuf.h shmparam.h \ | 3 | posix_types.h ptrace.h resource.h sembuf.h shmbuf.h shmparam.h \ |
| 4 | sigcontext.h siginfo.h signal.h socket.h sockios.h stat.h \ | 4 | sigcontext.h siginfo.h signal.h socket.h sockios.h stat.h \ |
| 5 | statfs.h termbits.h termios.h timex.h types.h unistd.h user.h | 5 | statfs.h termbits.h termios.h timex.h types.h unistd.h user.h |
| 6 | 6 | ||
| 7 | # These really shouldn't be exported | ||
| 8 | unifdef-y += atomic.h io.h | ||
| 9 | |||
| 10 | # These probably shouldn't be exported | 7 | # These probably shouldn't be exported |
| 11 | unifdef-y += elf.h page.h | 8 | unifdef-y += elf.h page.h |
diff --git a/include/asm-h8300/page.h b/include/asm-h8300/page.h index f9f9d3eea8ed..d673077d2fd6 100644 --- a/include/asm-h8300/page.h +++ b/include/asm-h8300/page.h | |||
| @@ -66,7 +66,6 @@ extern unsigned long memory_end; | |||
| 66 | 66 | ||
| 67 | #define MAP_NR(addr) (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT) | 67 | #define MAP_NR(addr) (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT) |
| 68 | #define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)) | 68 | #define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)) |
| 69 | #define virt_to_page(addr) (mem_map + (((unsigned long)(addr)-PAGE_OFFSET) >> PAGE_SHIFT)) | ||
| 70 | #define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET) | 69 | #define page_to_virt(page) ((((page) - mem_map) << PAGE_SHIFT) + PAGE_OFFSET) |
| 71 | #define pfn_valid(page) (page < max_mapnr) | 70 | #define pfn_valid(page) (page < max_mapnr) |
| 72 | 71 | ||
diff --git a/include/asm-h8300/processor.h b/include/asm-h8300/processor.h index c7e2f454b83a..99b664aa2083 100644 --- a/include/asm-h8300/processor.h +++ b/include/asm-h8300/processor.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | */ | 17 | */ |
| 18 | #define current_text_addr() ({ __label__ _l; _l: &&_l;}) | 18 | #define current_text_addr() ({ __label__ _l; _l: &&_l;}) |
| 19 | 19 | ||
| 20 | #include <linux/compiler.h> | ||
| 20 | #include <asm/segment.h> | 21 | #include <asm/segment.h> |
| 21 | #include <asm/fpu.h> | 22 | #include <asm/fpu.h> |
| 22 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
| @@ -129,6 +130,6 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 129 | eip; }) | 130 | eip; }) |
| 130 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) | 131 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) |
| 131 | 132 | ||
| 132 | #define cpu_relax() do { } while (0) | 133 | #define cpu_relax() barrier() |
| 133 | 134 | ||
| 134 | #endif | 135 | #endif |
diff --git a/include/asm-h8300/system.h b/include/asm-h8300/system.h index 134e0929fce5..5084a9d42922 100644 --- a/include/asm-h8300/system.h +++ b/include/asm-h8300/system.h | |||
| @@ -84,7 +84,6 @@ asmlinkage void resume(void); | |||
| 84 | #define wmb() asm volatile ("" : : :"memory") | 84 | #define wmb() asm volatile ("" : : :"memory") |
| 85 | #define set_rmb(var, value) do { xchg(&var, value); } while (0) | 85 | #define set_rmb(var, value) do { xchg(&var, value); } while (0) |
| 86 | #define set_mb(var, value) set_rmb(var, value) | 86 | #define set_mb(var, value) set_rmb(var, value) |
| 87 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 88 | 87 | ||
| 89 | #ifdef CONFIG_SMP | 88 | #ifdef CONFIG_SMP |
| 90 | #define smp_mb() mb() | 89 | #define smp_mb() mb() |
diff --git a/include/asm-i386/atomic.h b/include/asm-i386/atomic.h index 4f061fa73794..51a166242522 100644 --- a/include/asm-i386/atomic.h +++ b/include/asm-i386/atomic.h | |||
| @@ -46,8 +46,8 @@ static __inline__ void atomic_add(int i, atomic_t *v) | |||
| 46 | { | 46 | { |
| 47 | __asm__ __volatile__( | 47 | __asm__ __volatile__( |
| 48 | LOCK_PREFIX "addl %1,%0" | 48 | LOCK_PREFIX "addl %1,%0" |
| 49 | :"=m" (v->counter) | 49 | :"+m" (v->counter) |
| 50 | :"ir" (i), "m" (v->counter)); | 50 | :"ir" (i)); |
| 51 | } | 51 | } |
| 52 | 52 | ||
| 53 | /** | 53 | /** |
| @@ -61,8 +61,8 @@ static __inline__ void atomic_sub(int i, atomic_t *v) | |||
| 61 | { | 61 | { |
| 62 | __asm__ __volatile__( | 62 | __asm__ __volatile__( |
| 63 | LOCK_PREFIX "subl %1,%0" | 63 | LOCK_PREFIX "subl %1,%0" |
| 64 | :"=m" (v->counter) | 64 | :"+m" (v->counter) |
| 65 | :"ir" (i), "m" (v->counter)); | 65 | :"ir" (i)); |
| 66 | } | 66 | } |
| 67 | 67 | ||
| 68 | /** | 68 | /** |
| @@ -80,8 +80,8 @@ static __inline__ int atomic_sub_and_test(int i, atomic_t *v) | |||
| 80 | 80 | ||
| 81 | __asm__ __volatile__( | 81 | __asm__ __volatile__( |
| 82 | LOCK_PREFIX "subl %2,%0; sete %1" | 82 | LOCK_PREFIX "subl %2,%0; sete %1" |
| 83 | :"=m" (v->counter), "=qm" (c) | 83 | :"+m" (v->counter), "=qm" (c) |
| 84 | :"ir" (i), "m" (v->counter) : "memory"); | 84 | :"ir" (i) : "memory"); |
| 85 | return c; | 85 | return c; |
| 86 | } | 86 | } |
| 87 | 87 | ||
| @@ -95,8 +95,7 @@ static __inline__ void atomic_inc(atomic_t *v) | |||
| 95 | { | 95 | { |
| 96 | __asm__ __volatile__( | 96 | __asm__ __volatile__( |
| 97 | LOCK_PREFIX "incl %0" | 97 | LOCK_PREFIX "incl %0" |
| 98 | :"=m" (v->counter) | 98 | :"+m" (v->counter)); |
| 99 | :"m" (v->counter)); | ||
| 100 | } | 99 | } |
| 101 | 100 | ||
| 102 | /** | 101 | /** |
| @@ -109,8 +108,7 @@ static __inline__ void atomic_dec(atomic_t *v) | |||
| 109 | { | 108 | { |
| 110 | __asm__ __volatile__( | 109 | __asm__ __volatile__( |
| 111 | LOCK_PREFIX "decl %0" | 110 | LOCK_PREFIX "decl %0" |
| 112 | :"=m" (v->counter) | 111 | :"+m" (v->counter)); |
| 113 | :"m" (v->counter)); | ||
| 114 | } | 112 | } |
| 115 | 113 | ||
| 116 | /** | 114 | /** |
| @@ -127,8 +125,8 @@ static __inline__ int atomic_dec_and_test(atomic_t *v) | |||
| 127 | 125 | ||
| 128 | __asm__ __volatile__( | 126 | __asm__ __volatile__( |
| 129 | LOCK_PREFIX "decl %0; sete %1" | 127 | LOCK_PREFIX "decl %0; sete %1" |
| 130 | :"=m" (v->counter), "=qm" (c) | 128 | :"+m" (v->counter), "=qm" (c) |
| 131 | :"m" (v->counter) : "memory"); | 129 | : : "memory"); |
| 132 | return c != 0; | 130 | return c != 0; |
| 133 | } | 131 | } |
| 134 | 132 | ||
| @@ -146,8 +144,8 @@ static __inline__ int atomic_inc_and_test(atomic_t *v) | |||
| 146 | 144 | ||
| 147 | __asm__ __volatile__( | 145 | __asm__ __volatile__( |
| 148 | LOCK_PREFIX "incl %0; sete %1" | 146 | LOCK_PREFIX "incl %0; sete %1" |
| 149 | :"=m" (v->counter), "=qm" (c) | 147 | :"+m" (v->counter), "=qm" (c) |
| 150 | :"m" (v->counter) : "memory"); | 148 | : : "memory"); |
| 151 | return c != 0; | 149 | return c != 0; |
| 152 | } | 150 | } |
| 153 | 151 | ||
| @@ -166,8 +164,8 @@ static __inline__ int atomic_add_negative(int i, atomic_t *v) | |||
| 166 | 164 | ||
| 167 | __asm__ __volatile__( | 165 | __asm__ __volatile__( |
| 168 | LOCK_PREFIX "addl %2,%0; sets %1" | 166 | LOCK_PREFIX "addl %2,%0; sets %1" |
| 169 | :"=m" (v->counter), "=qm" (c) | 167 | :"+m" (v->counter), "=qm" (c) |
| 170 | :"ir" (i), "m" (v->counter) : "memory"); | 168 | :"ir" (i) : "memory"); |
| 171 | return c; | 169 | return c; |
| 172 | } | 170 | } |
| 173 | 171 | ||
diff --git a/include/asm-i386/futex.h b/include/asm-i386/futex.h index 7b8ceefd010f..946d97cfea23 100644 --- a/include/asm-i386/futex.h +++ b/include/asm-i386/futex.h | |||
| @@ -20,8 +20,8 @@ | |||
| 20 | .align 8\n\ | 20 | .align 8\n\ |
| 21 | .long 1b,3b\n\ | 21 | .long 1b,3b\n\ |
| 22 | .previous" \ | 22 | .previous" \ |
| 23 | : "=r" (oldval), "=r" (ret), "=m" (*uaddr) \ | 23 | : "=r" (oldval), "=r" (ret), "+m" (*uaddr) \ |
| 24 | : "i" (-EFAULT), "m" (*uaddr), "0" (oparg), "1" (0)) | 24 | : "i" (-EFAULT), "0" (oparg), "1" (0)) |
| 25 | 25 | ||
| 26 | #define __futex_atomic_op2(insn, ret, oldval, uaddr, oparg) \ | 26 | #define __futex_atomic_op2(insn, ret, oldval, uaddr, oparg) \ |
| 27 | __asm__ __volatile ( \ | 27 | __asm__ __volatile ( \ |
| @@ -38,9 +38,9 @@ | |||
| 38 | .align 8\n\ | 38 | .align 8\n\ |
| 39 | .long 1b,4b,2b,4b\n\ | 39 | .long 1b,4b,2b,4b\n\ |
| 40 | .previous" \ | 40 | .previous" \ |
| 41 | : "=&a" (oldval), "=&r" (ret), "=m" (*uaddr), \ | 41 | : "=&a" (oldval), "=&r" (ret), "+m" (*uaddr), \ |
| 42 | "=&r" (tem) \ | 42 | "=&r" (tem) \ |
| 43 | : "r" (oparg), "i" (-EFAULT), "m" (*uaddr), "1" (0)) | 43 | : "r" (oparg), "i" (-EFAULT), "1" (0)) |
| 44 | 44 | ||
| 45 | static inline int | 45 | static inline int |
| 46 | futex_atomic_op_inuser (int encoded_op, int __user *uaddr) | 46 | futex_atomic_op_inuser (int encoded_op, int __user *uaddr) |
| @@ -123,7 +123,7 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
| 123 | " .long 1b,3b \n" | 123 | " .long 1b,3b \n" |
| 124 | " .previous \n" | 124 | " .previous \n" |
| 125 | 125 | ||
| 126 | : "=a" (oldval), "=m" (*uaddr) | 126 | : "=a" (oldval), "+m" (*uaddr) |
| 127 | : "i" (-EFAULT), "r" (newval), "0" (oldval) | 127 | : "i" (-EFAULT), "r" (newval), "0" (oldval) |
| 128 | : "memory" | 128 | : "memory" |
| 129 | ); | 129 | ); |
diff --git a/include/asm-i386/local.h b/include/asm-i386/local.h index 3b4998c51d08..12060e22f7e2 100644 --- a/include/asm-i386/local.h +++ b/include/asm-i386/local.h | |||
| @@ -17,32 +17,30 @@ static __inline__ void local_inc(local_t *v) | |||
| 17 | { | 17 | { |
| 18 | __asm__ __volatile__( | 18 | __asm__ __volatile__( |
| 19 | "incl %0" | 19 | "incl %0" |
| 20 | :"=m" (v->counter) | 20 | :"+m" (v->counter)); |
| 21 | :"m" (v->counter)); | ||
| 22 | } | 21 | } |
| 23 | 22 | ||
| 24 | static __inline__ void local_dec(local_t *v) | 23 | static __inline__ void local_dec(local_t *v) |
| 25 | { | 24 | { |
| 26 | __asm__ __volatile__( | 25 | __asm__ __volatile__( |
| 27 | "decl %0" | 26 | "decl %0" |
| 28 | :"=m" (v->counter) | 27 | :"+m" (v->counter)); |
| 29 | :"m" (v->counter)); | ||
| 30 | } | 28 | } |
| 31 | 29 | ||
| 32 | static __inline__ void local_add(long i, local_t *v) | 30 | static __inline__ void local_add(long i, local_t *v) |
| 33 | { | 31 | { |
| 34 | __asm__ __volatile__( | 32 | __asm__ __volatile__( |
| 35 | "addl %1,%0" | 33 | "addl %1,%0" |
| 36 | :"=m" (v->counter) | 34 | :"+m" (v->counter) |
| 37 | :"ir" (i), "m" (v->counter)); | 35 | :"ir" (i)); |
| 38 | } | 36 | } |
| 39 | 37 | ||
| 40 | static __inline__ void local_sub(long i, local_t *v) | 38 | static __inline__ void local_sub(long i, local_t *v) |
| 41 | { | 39 | { |
| 42 | __asm__ __volatile__( | 40 | __asm__ __volatile__( |
| 43 | "subl %1,%0" | 41 | "subl %1,%0" |
| 44 | :"=m" (v->counter) | 42 | :"+m" (v->counter) |
| 45 | :"ir" (i), "m" (v->counter)); | 43 | :"ir" (i)); |
| 46 | } | 44 | } |
| 47 | 45 | ||
| 48 | /* On x86, these are no better than the atomic variants. */ | 46 | /* On x86, these are no better than the atomic variants. */ |
diff --git a/include/asm-i386/posix_types.h b/include/asm-i386/posix_types.h index 4e47ed059ad6..133e31e7dfde 100644 --- a/include/asm-i386/posix_types.h +++ b/include/asm-i386/posix_types.h | |||
| @@ -51,12 +51,12 @@ typedef struct { | |||
| 51 | #undef __FD_SET | 51 | #undef __FD_SET |
| 52 | #define __FD_SET(fd,fdsetp) \ | 52 | #define __FD_SET(fd,fdsetp) \ |
| 53 | __asm__ __volatile__("btsl %1,%0": \ | 53 | __asm__ __volatile__("btsl %1,%0": \ |
| 54 | "=m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd))) | 54 | "+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd))) |
| 55 | 55 | ||
| 56 | #undef __FD_CLR | 56 | #undef __FD_CLR |
| 57 | #define __FD_CLR(fd,fdsetp) \ | 57 | #define __FD_CLR(fd,fdsetp) \ |
| 58 | __asm__ __volatile__("btrl %1,%0": \ | 58 | __asm__ __volatile__("btrl %1,%0": \ |
| 59 | "=m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd))) | 59 | "+m" (*(__kernel_fd_set *) (fdsetp)):"r" ((int) (fd))) |
| 60 | 60 | ||
| 61 | #undef __FD_ISSET | 61 | #undef __FD_ISSET |
| 62 | #define __FD_ISSET(fd,fdsetp) (__extension__ ({ \ | 62 | #define __FD_ISSET(fd,fdsetp) (__extension__ ({ \ |
diff --git a/include/asm-i386/rwlock.h b/include/asm-i386/rwlock.h index 94f00195d543..96b0bef2ea56 100644 --- a/include/asm-i386/rwlock.h +++ b/include/asm-i386/rwlock.h | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | "popl %%eax\n\t" \ | 37 | "popl %%eax\n\t" \ |
| 38 | "1:\n", \ | 38 | "1:\n", \ |
| 39 | "subl $1,%0\n\t", \ | 39 | "subl $1,%0\n\t", \ |
| 40 | "=m" (*(volatile int *)rw) : : "memory") | 40 | "+m" (*(volatile int *)rw) : : "memory") |
| 41 | 41 | ||
| 42 | #define __build_read_lock(rw, helper) do { \ | 42 | #define __build_read_lock(rw, helper) do { \ |
| 43 | if (__builtin_constant_p(rw)) \ | 43 | if (__builtin_constant_p(rw)) \ |
| @@ -63,7 +63,7 @@ | |||
| 63 | "popl %%eax\n\t" \ | 63 | "popl %%eax\n\t" \ |
| 64 | "1:\n", \ | 64 | "1:\n", \ |
| 65 | "subl $" RW_LOCK_BIAS_STR ",%0\n\t", \ | 65 | "subl $" RW_LOCK_BIAS_STR ",%0\n\t", \ |
| 66 | "=m" (*(volatile int *)rw) : : "memory") | 66 | "+m" (*(volatile int *)rw) : : "memory") |
| 67 | 67 | ||
| 68 | #define __build_write_lock(rw, helper) do { \ | 68 | #define __build_write_lock(rw, helper) do { \ |
| 69 | if (__builtin_constant_p(rw)) \ | 69 | if (__builtin_constant_p(rw)) \ |
diff --git a/include/asm-i386/rwsem.h b/include/asm-i386/rwsem.h index 2f07601562e7..43113f5608eb 100644 --- a/include/asm-i386/rwsem.h +++ b/include/asm-i386/rwsem.h | |||
| @@ -111,8 +111,8 @@ LOCK_PREFIX " incl (%%eax)\n\t" /* adds 0x00000001, returns the old value | |||
| 111 | " jmp 1b\n" | 111 | " jmp 1b\n" |
| 112 | LOCK_SECTION_END | 112 | LOCK_SECTION_END |
| 113 | "# ending down_read\n\t" | 113 | "# ending down_read\n\t" |
| 114 | : "=m"(sem->count) | 114 | : "+m" (sem->count) |
| 115 | : "a"(sem), "m"(sem->count) | 115 | : "a" (sem) |
| 116 | : "memory", "cc"); | 116 | : "memory", "cc"); |
| 117 | } | 117 | } |
| 118 | 118 | ||
| @@ -133,8 +133,8 @@ LOCK_PREFIX " cmpxchgl %2,%0\n\t" | |||
| 133 | " jnz 1b\n\t" | 133 | " jnz 1b\n\t" |
| 134 | "2:\n\t" | 134 | "2:\n\t" |
| 135 | "# ending __down_read_trylock\n\t" | 135 | "# ending __down_read_trylock\n\t" |
| 136 | : "+m"(sem->count), "=&a"(result), "=&r"(tmp) | 136 | : "+m" (sem->count), "=&a" (result), "=&r" (tmp) |
| 137 | : "i"(RWSEM_ACTIVE_READ_BIAS) | 137 | : "i" (RWSEM_ACTIVE_READ_BIAS) |
| 138 | : "memory", "cc"); | 138 | : "memory", "cc"); |
| 139 | return result>=0 ? 1 : 0; | 139 | return result>=0 ? 1 : 0; |
| 140 | } | 140 | } |
| @@ -161,8 +161,8 @@ LOCK_PREFIX " xadd %%edx,(%%eax)\n\t" /* subtract 0x0000ffff, returns the | |||
| 161 | " jmp 1b\n" | 161 | " jmp 1b\n" |
| 162 | LOCK_SECTION_END | 162 | LOCK_SECTION_END |
| 163 | "# ending down_write" | 163 | "# ending down_write" |
| 164 | : "=m"(sem->count), "=d"(tmp) | 164 | : "+m" (sem->count), "=d" (tmp) |
| 165 | : "a"(sem), "1"(tmp), "m"(sem->count) | 165 | : "a" (sem), "1" (tmp) |
| 166 | : "memory", "cc"); | 166 | : "memory", "cc"); |
| 167 | } | 167 | } |
| 168 | 168 | ||
| @@ -205,8 +205,8 @@ LOCK_PREFIX " xadd %%edx,(%%eax)\n\t" /* subtracts 1, returns the old valu | |||
| 205 | " jmp 1b\n" | 205 | " jmp 1b\n" |
| 206 | LOCK_SECTION_END | 206 | LOCK_SECTION_END |
| 207 | "# ending __up_read\n" | 207 | "# ending __up_read\n" |
| 208 | : "=m"(sem->count), "=d"(tmp) | 208 | : "+m" (sem->count), "=d" (tmp) |
| 209 | : "a"(sem), "1"(tmp), "m"(sem->count) | 209 | : "a" (sem), "1" (tmp) |
| 210 | : "memory", "cc"); | 210 | : "memory", "cc"); |
| 211 | } | 211 | } |
| 212 | 212 | ||
| @@ -231,8 +231,8 @@ LOCK_PREFIX " xaddl %%edx,(%%eax)\n\t" /* tries to transition 0xffff0001 -> | |||
| 231 | " jmp 1b\n" | 231 | " jmp 1b\n" |
| 232 | LOCK_SECTION_END | 232 | LOCK_SECTION_END |
| 233 | "# ending __up_write\n" | 233 | "# ending __up_write\n" |
| 234 | : "=m"(sem->count) | 234 | : "+m" (sem->count) |
| 235 | : "a"(sem), "i"(-RWSEM_ACTIVE_WRITE_BIAS), "m"(sem->count) | 235 | : "a" (sem), "i" (-RWSEM_ACTIVE_WRITE_BIAS) |
| 236 | : "memory", "cc", "edx"); | 236 | : "memory", "cc", "edx"); |
| 237 | } | 237 | } |
| 238 | 238 | ||
| @@ -256,8 +256,8 @@ LOCK_PREFIX " addl %2,(%%eax)\n\t" /* transitions 0xZZZZ0001 -> 0xYYYY0001 | |||
| 256 | " jmp 1b\n" | 256 | " jmp 1b\n" |
| 257 | LOCK_SECTION_END | 257 | LOCK_SECTION_END |
| 258 | "# ending __downgrade_write\n" | 258 | "# ending __downgrade_write\n" |
| 259 | : "=m"(sem->count) | 259 | : "+m" (sem->count) |
| 260 | : "a"(sem), "i"(-RWSEM_WAITING_BIAS), "m"(sem->count) | 260 | : "a" (sem), "i" (-RWSEM_WAITING_BIAS) |
| 261 | : "memory", "cc"); | 261 | : "memory", "cc"); |
| 262 | } | 262 | } |
| 263 | 263 | ||
| @@ -268,8 +268,8 @@ static inline void rwsem_atomic_add(int delta, struct rw_semaphore *sem) | |||
| 268 | { | 268 | { |
| 269 | __asm__ __volatile__( | 269 | __asm__ __volatile__( |
| 270 | LOCK_PREFIX "addl %1,%0" | 270 | LOCK_PREFIX "addl %1,%0" |
| 271 | : "=m"(sem->count) | 271 | : "+m" (sem->count) |
| 272 | : "ir"(delta), "m"(sem->count)); | 272 | : "ir" (delta)); |
| 273 | } | 273 | } |
| 274 | 274 | ||
| 275 | /* | 275 | /* |
| @@ -280,10 +280,9 @@ static inline int rwsem_atomic_update(int delta, struct rw_semaphore *sem) | |||
| 280 | int tmp = delta; | 280 | int tmp = delta; |
| 281 | 281 | ||
| 282 | __asm__ __volatile__( | 282 | __asm__ __volatile__( |
| 283 | LOCK_PREFIX "xadd %0,(%2)" | 283 | LOCK_PREFIX "xadd %0,%1" |
| 284 | : "+r"(tmp), "=m"(sem->count) | 284 | : "+r" (tmp), "+m" (sem->count) |
| 285 | : "r"(sem), "m"(sem->count) | 285 | : : "memory"); |
| 286 | : "memory"); | ||
| 287 | 286 | ||
| 288 | return tmp+delta; | 287 | return tmp+delta; |
| 289 | } | 288 | } |
diff --git a/include/asm-i386/semaphore.h b/include/asm-i386/semaphore.h index f7a0f310c524..d51e800acf29 100644 --- a/include/asm-i386/semaphore.h +++ b/include/asm-i386/semaphore.h | |||
| @@ -107,7 +107,7 @@ static inline void down(struct semaphore * sem) | |||
| 107 | "call __down_failed\n\t" | 107 | "call __down_failed\n\t" |
| 108 | "jmp 1b\n" | 108 | "jmp 1b\n" |
| 109 | LOCK_SECTION_END | 109 | LOCK_SECTION_END |
| 110 | :"=m" (sem->count) | 110 | :"+m" (sem->count) |
| 111 | : | 111 | : |
| 112 | :"memory","ax"); | 112 | :"memory","ax"); |
| 113 | } | 113 | } |
| @@ -132,7 +132,7 @@ static inline int down_interruptible(struct semaphore * sem) | |||
| 132 | "call __down_failed_interruptible\n\t" | 132 | "call __down_failed_interruptible\n\t" |
| 133 | "jmp 1b\n" | 133 | "jmp 1b\n" |
| 134 | LOCK_SECTION_END | 134 | LOCK_SECTION_END |
| 135 | :"=a" (result), "=m" (sem->count) | 135 | :"=a" (result), "+m" (sem->count) |
| 136 | : | 136 | : |
| 137 | :"memory"); | 137 | :"memory"); |
| 138 | return result; | 138 | return result; |
| @@ -157,7 +157,7 @@ static inline int down_trylock(struct semaphore * sem) | |||
| 157 | "call __down_failed_trylock\n\t" | 157 | "call __down_failed_trylock\n\t" |
| 158 | "jmp 1b\n" | 158 | "jmp 1b\n" |
| 159 | LOCK_SECTION_END | 159 | LOCK_SECTION_END |
| 160 | :"=a" (result), "=m" (sem->count) | 160 | :"=a" (result), "+m" (sem->count) |
| 161 | : | 161 | : |
| 162 | :"memory"); | 162 | :"memory"); |
| 163 | return result; | 163 | return result; |
| @@ -182,7 +182,7 @@ static inline void up(struct semaphore * sem) | |||
| 182 | "jmp 1b\n" | 182 | "jmp 1b\n" |
| 183 | LOCK_SECTION_END | 183 | LOCK_SECTION_END |
| 184 | ".subsection 0\n" | 184 | ".subsection 0\n" |
| 185 | :"=m" (sem->count) | 185 | :"+m" (sem->count) |
| 186 | : | 186 | : |
| 187 | :"memory","ax"); | 187 | :"memory","ax"); |
| 188 | } | 188 | } |
diff --git a/include/asm-i386/spinlock.h b/include/asm-i386/spinlock.h index 87c40f830653..d816c62a7a1d 100644 --- a/include/asm-i386/spinlock.h +++ b/include/asm-i386/spinlock.h | |||
| @@ -65,7 +65,7 @@ static inline void __raw_spin_lock(raw_spinlock_t *lock) | |||
| 65 | alternative_smp( | 65 | alternative_smp( |
| 66 | __raw_spin_lock_string, | 66 | __raw_spin_lock_string, |
| 67 | __raw_spin_lock_string_up, | 67 | __raw_spin_lock_string_up, |
| 68 | "=m" (lock->slock) : : "memory"); | 68 | "+m" (lock->slock) : : "memory"); |
| 69 | } | 69 | } |
| 70 | 70 | ||
| 71 | /* | 71 | /* |
| @@ -79,7 +79,7 @@ static inline void __raw_spin_lock_flags(raw_spinlock_t *lock, unsigned long fla | |||
| 79 | alternative_smp( | 79 | alternative_smp( |
| 80 | __raw_spin_lock_string_flags, | 80 | __raw_spin_lock_string_flags, |
| 81 | __raw_spin_lock_string_up, | 81 | __raw_spin_lock_string_up, |
| 82 | "=m" (lock->slock) : "r" (flags) : "memory"); | 82 | "+m" (lock->slock) : "r" (flags) : "memory"); |
| 83 | } | 83 | } |
| 84 | #endif | 84 | #endif |
| 85 | 85 | ||
| @@ -88,7 +88,7 @@ static inline int __raw_spin_trylock(raw_spinlock_t *lock) | |||
| 88 | char oldval; | 88 | char oldval; |
| 89 | __asm__ __volatile__( | 89 | __asm__ __volatile__( |
| 90 | "xchgb %b0,%1" | 90 | "xchgb %b0,%1" |
| 91 | :"=q" (oldval), "=m" (lock->slock) | 91 | :"=q" (oldval), "+m" (lock->slock) |
| 92 | :"0" (0) : "memory"); | 92 | :"0" (0) : "memory"); |
| 93 | return oldval > 0; | 93 | return oldval > 0; |
| 94 | } | 94 | } |
| @@ -104,7 +104,7 @@ static inline int __raw_spin_trylock(raw_spinlock_t *lock) | |||
| 104 | 104 | ||
| 105 | #define __raw_spin_unlock_string \ | 105 | #define __raw_spin_unlock_string \ |
| 106 | "movb $1,%0" \ | 106 | "movb $1,%0" \ |
| 107 | :"=m" (lock->slock) : : "memory" | 107 | :"+m" (lock->slock) : : "memory" |
| 108 | 108 | ||
| 109 | 109 | ||
| 110 | static inline void __raw_spin_unlock(raw_spinlock_t *lock) | 110 | static inline void __raw_spin_unlock(raw_spinlock_t *lock) |
| @@ -118,7 +118,7 @@ static inline void __raw_spin_unlock(raw_spinlock_t *lock) | |||
| 118 | 118 | ||
| 119 | #define __raw_spin_unlock_string \ | 119 | #define __raw_spin_unlock_string \ |
| 120 | "xchgb %b0, %1" \ | 120 | "xchgb %b0, %1" \ |
| 121 | :"=q" (oldval), "=m" (lock->slock) \ | 121 | :"=q" (oldval), "+m" (lock->slock) \ |
| 122 | :"0" (oldval) : "memory" | 122 | :"0" (oldval) : "memory" |
| 123 | 123 | ||
| 124 | static inline void __raw_spin_unlock(raw_spinlock_t *lock) | 124 | static inline void __raw_spin_unlock(raw_spinlock_t *lock) |
| @@ -199,13 +199,13 @@ static inline int __raw_write_trylock(raw_rwlock_t *lock) | |||
| 199 | 199 | ||
| 200 | static inline void __raw_read_unlock(raw_rwlock_t *rw) | 200 | static inline void __raw_read_unlock(raw_rwlock_t *rw) |
| 201 | { | 201 | { |
| 202 | asm volatile(LOCK_PREFIX "incl %0" :"=m" (rw->lock) : : "memory"); | 202 | asm volatile(LOCK_PREFIX "incl %0" :"+m" (rw->lock) : : "memory"); |
| 203 | } | 203 | } |
| 204 | 204 | ||
| 205 | static inline void __raw_write_unlock(raw_rwlock_t *rw) | 205 | static inline void __raw_write_unlock(raw_rwlock_t *rw) |
| 206 | { | 206 | { |
| 207 | asm volatile(LOCK_PREFIX "addl $" RW_LOCK_BIAS_STR ", %0" | 207 | asm volatile(LOCK_PREFIX "addl $" RW_LOCK_BIAS_STR ", %0" |
| 208 | : "=m" (rw->lock) : : "memory"); | 208 | : "+m" (rw->lock) : : "memory"); |
| 209 | } | 209 | } |
| 210 | 210 | ||
| 211 | #endif /* __ASM_SPINLOCK_H */ | 211 | #endif /* __ASM_SPINLOCK_H */ |
diff --git a/include/asm-i386/system.h b/include/asm-i386/system.h index db398d88b1d9..49928eb33f8b 100644 --- a/include/asm-i386/system.h +++ b/include/asm-i386/system.h | |||
| @@ -82,10 +82,6 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \ | |||
| 82 | #define savesegment(seg, value) \ | 82 | #define savesegment(seg, value) \ |
| 83 | asm volatile("mov %%" #seg ",%0":"=rm" (value)) | 83 | asm volatile("mov %%" #seg ",%0":"=rm" (value)) |
| 84 | 84 | ||
| 85 | /* | ||
| 86 | * Clear and set 'TS' bit respectively | ||
| 87 | */ | ||
| 88 | #define clts() __asm__ __volatile__ ("clts") | ||
| 89 | #define read_cr0() ({ \ | 85 | #define read_cr0() ({ \ |
| 90 | unsigned int __dummy; \ | 86 | unsigned int __dummy; \ |
| 91 | __asm__ __volatile__( \ | 87 | __asm__ __volatile__( \ |
| @@ -94,7 +90,7 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \ | |||
| 94 | __dummy; \ | 90 | __dummy; \ |
| 95 | }) | 91 | }) |
| 96 | #define write_cr0(x) \ | 92 | #define write_cr0(x) \ |
| 97 | __asm__ __volatile__("movl %0,%%cr0": :"r" (x)); | 93 | __asm__ __volatile__("movl %0,%%cr0": :"r" (x)) |
| 98 | 94 | ||
| 99 | #define read_cr2() ({ \ | 95 | #define read_cr2() ({ \ |
| 100 | unsigned int __dummy; \ | 96 | unsigned int __dummy; \ |
| @@ -104,7 +100,7 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \ | |||
| 104 | __dummy; \ | 100 | __dummy; \ |
| 105 | }) | 101 | }) |
| 106 | #define write_cr2(x) \ | 102 | #define write_cr2(x) \ |
| 107 | __asm__ __volatile__("movl %0,%%cr2": :"r" (x)); | 103 | __asm__ __volatile__("movl %0,%%cr2": :"r" (x)) |
| 108 | 104 | ||
| 109 | #define read_cr3() ({ \ | 105 | #define read_cr3() ({ \ |
| 110 | unsigned int __dummy; \ | 106 | unsigned int __dummy; \ |
| @@ -114,7 +110,7 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \ | |||
| 114 | __dummy; \ | 110 | __dummy; \ |
| 115 | }) | 111 | }) |
| 116 | #define write_cr3(x) \ | 112 | #define write_cr3(x) \ |
| 117 | __asm__ __volatile__("movl %0,%%cr3": :"r" (x)); | 113 | __asm__ __volatile__("movl %0,%%cr3": :"r" (x)) |
| 118 | 114 | ||
| 119 | #define read_cr4() ({ \ | 115 | #define read_cr4() ({ \ |
| 120 | unsigned int __dummy; \ | 116 | unsigned int __dummy; \ |
| @@ -123,7 +119,6 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \ | |||
| 123 | :"=r" (__dummy)); \ | 119 | :"=r" (__dummy)); \ |
| 124 | __dummy; \ | 120 | __dummy; \ |
| 125 | }) | 121 | }) |
| 126 | |||
| 127 | #define read_cr4_safe() ({ \ | 122 | #define read_cr4_safe() ({ \ |
| 128 | unsigned int __dummy; \ | 123 | unsigned int __dummy; \ |
| 129 | /* This could fault if %cr4 does not exist */ \ | 124 | /* This could fault if %cr4 does not exist */ \ |
| @@ -135,15 +130,19 @@ __asm__ __volatile__ ("movw %%dx,%1\n\t" \ | |||
| 135 | : "=r" (__dummy): "0" (0)); \ | 130 | : "=r" (__dummy): "0" (0)); \ |
| 136 | __dummy; \ | 131 | __dummy; \ |
| 137 | }) | 132 | }) |
| 138 | |||
| 139 | #define write_cr4(x) \ | 133 | #define write_cr4(x) \ |
| 140 | __asm__ __volatile__("movl %0,%%cr4": :"r" (x)); | 134 | __asm__ __volatile__("movl %0,%%cr4": :"r" (x)) |
| 135 | |||
| 136 | /* | ||
| 137 | * Clear and set 'TS' bit respectively | ||
| 138 | */ | ||
| 139 | #define clts() __asm__ __volatile__ ("clts") | ||
| 141 | #define stts() write_cr0(8 | read_cr0()) | 140 | #define stts() write_cr0(8 | read_cr0()) |
| 142 | 141 | ||
| 143 | #endif /* __KERNEL__ */ | 142 | #endif /* __KERNEL__ */ |
| 144 | 143 | ||
| 145 | #define wbinvd() \ | 144 | #define wbinvd() \ |
| 146 | __asm__ __volatile__ ("wbinvd": : :"memory"); | 145 | __asm__ __volatile__ ("wbinvd": : :"memory") |
| 147 | 146 | ||
| 148 | static inline unsigned long get_limit(unsigned long segment) | 147 | static inline unsigned long get_limit(unsigned long segment) |
| 149 | { | 148 | { |
| @@ -454,8 +453,6 @@ static inline unsigned long long __cmpxchg64(volatile void *ptr, unsigned long l | |||
| 454 | #define set_mb(var, value) do { var = value; barrier(); } while (0) | 453 | #define set_mb(var, value) do { var = value; barrier(); } while (0) |
| 455 | #endif | 454 | #endif |
| 456 | 455 | ||
| 457 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 458 | |||
| 459 | #include <linux/irqflags.h> | 456 | #include <linux/irqflags.h> |
| 460 | 457 | ||
| 461 | /* | 458 | /* |
diff --git a/include/asm-i386/thread_info.h b/include/asm-i386/thread_info.h index 2833fa2c0dd0..54d6d7aea938 100644 --- a/include/asm-i386/thread_info.h +++ b/include/asm-i386/thread_info.h | |||
| @@ -140,6 +140,8 @@ static inline struct thread_info *current_thread_info(void) | |||
| 140 | #define TIF_SECCOMP 8 /* secure computing */ | 140 | #define TIF_SECCOMP 8 /* secure computing */ |
| 141 | #define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal() */ | 141 | #define TIF_RESTORE_SIGMASK 9 /* restore signal mask in do_signal() */ |
| 142 | #define TIF_MEMDIE 16 | 142 | #define TIF_MEMDIE 16 |
| 143 | #define TIF_DEBUG 17 /* uses debug registers */ | ||
| 144 | #define TIF_IO_BITMAP 18 /* uses I/O bitmap */ | ||
| 143 | 145 | ||
| 144 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) | 146 | #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) |
| 145 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) | 147 | #define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME) |
| @@ -151,6 +153,8 @@ static inline struct thread_info *current_thread_info(void) | |||
| 151 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) | 153 | #define _TIF_SYSCALL_AUDIT (1<<TIF_SYSCALL_AUDIT) |
| 152 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) | 154 | #define _TIF_SECCOMP (1<<TIF_SECCOMP) |
| 153 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) | 155 | #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) |
| 156 | #define _TIF_DEBUG (1<<TIF_DEBUG) | ||
| 157 | #define _TIF_IO_BITMAP (1<<TIF_IO_BITMAP) | ||
| 154 | 158 | ||
| 155 | /* work to do on interrupt/exception return */ | 159 | /* work to do on interrupt/exception return */ |
| 156 | #define _TIF_WORK_MASK \ | 160 | #define _TIF_WORK_MASK \ |
| @@ -159,6 +163,9 @@ static inline struct thread_info *current_thread_info(void) | |||
| 159 | /* work to do on any return to u-space */ | 163 | /* work to do on any return to u-space */ |
| 160 | #define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP) | 164 | #define _TIF_ALLWORK_MASK (0x0000FFFF & ~_TIF_SECCOMP) |
| 161 | 165 | ||
| 166 | /* flags to check in __switch_to() */ | ||
| 167 | #define _TIF_WORK_CTXSW (_TIF_DEBUG|_TIF_IO_BITMAP) | ||
| 168 | |||
| 162 | /* | 169 | /* |
| 163 | * Thread-synchronous status. | 170 | * Thread-synchronous status. |
| 164 | * | 171 | * |
diff --git a/include/asm-ia64/io.h b/include/asm-ia64/io.h index 781ee2c7e8c3..43bfff6c6b87 100644 --- a/include/asm-ia64/io.h +++ b/include/asm-ia64/io.h | |||
| @@ -90,7 +90,7 @@ phys_to_virt (unsigned long address) | |||
| 90 | #define ARCH_HAS_VALID_PHYS_ADDR_RANGE | 90 | #define ARCH_HAS_VALID_PHYS_ADDR_RANGE |
| 91 | extern u64 kern_mem_attribute (unsigned long phys_addr, unsigned long size); | 91 | extern u64 kern_mem_attribute (unsigned long phys_addr, unsigned long size); |
| 92 | extern int valid_phys_addr_range (unsigned long addr, size_t count); /* efi.c */ | 92 | extern int valid_phys_addr_range (unsigned long addr, size_t count); /* efi.c */ |
| 93 | extern int valid_mmap_phys_addr_range (unsigned long addr, size_t count); | 93 | extern int valid_mmap_phys_addr_range (unsigned long pfn, size_t count); |
| 94 | 94 | ||
| 95 | /* | 95 | /* |
| 96 | * The following two macros are deprecated and scheduled for removal. | 96 | * The following two macros are deprecated and scheduled for removal. |
diff --git a/include/asm-ia64/system.h b/include/asm-ia64/system.h index 65db43ce4de6..fc9677bc87ee 100644 --- a/include/asm-ia64/system.h +++ b/include/asm-ia64/system.h | |||
| @@ -98,12 +98,11 @@ extern struct ia64_boot_param { | |||
| 98 | #endif | 98 | #endif |
| 99 | 99 | ||
| 100 | /* | 100 | /* |
| 101 | * XXX check on these---I suspect what Linus really wants here is | 101 | * XXX check on this ---I suspect what Linus really wants here is |
| 102 | * acquire vs release semantics but we can't discuss this stuff with | 102 | * acquire vs release semantics but we can't discuss this stuff with |
| 103 | * Linus just yet. Grrr... | 103 | * Linus just yet. Grrr... |
| 104 | */ | 104 | */ |
| 105 | #define set_mb(var, value) do { (var) = (value); mb(); } while (0) | 105 | #define set_mb(var, value) do { (var) = (value); mb(); } while (0) |
| 106 | #define set_wmb(var, value) do { (var) = (value); mb(); } while (0) | ||
| 107 | 106 | ||
| 108 | #define safe_halt() ia64_pal_halt_light() /* PAL_HALT_LIGHT */ | 107 | #define safe_halt() ia64_pal_halt_light() /* PAL_HALT_LIGHT */ |
| 109 | 108 | ||
diff --git a/include/asm-m32r/system.h b/include/asm-m32r/system.h index 311cebf44eff..9e618afec6ed 100644 --- a/include/asm-m32r/system.h +++ b/include/asm-m32r/system.h | |||
| @@ -336,7 +336,6 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) | |||
| 336 | #endif | 336 | #endif |
| 337 | 337 | ||
| 338 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | 338 | #define set_mb(var, value) do { xchg(&var, value); } while (0) |
| 339 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 340 | 339 | ||
| 341 | #define arch_align_stack(x) (x) | 340 | #define arch_align_stack(x) (x) |
| 342 | 341 | ||
diff --git a/include/asm-m68k/oplib.h b/include/asm-m68k/oplib.h index c3594f473ef7..06caa2d08451 100644 --- a/include/asm-m68k/oplib.h +++ b/include/asm-m68k/oplib.h | |||
| @@ -244,11 +244,6 @@ extern void prom_getstring(int node, char *prop, char *buf, int bufsize); | |||
| 244 | /* Does the passed node have the given "name"? YES=1 NO=0 */ | 244 | /* Does the passed node have the given "name"? YES=1 NO=0 */ |
| 245 | extern int prom_nodematch(int thisnode, char *name); | 245 | extern int prom_nodematch(int thisnode, char *name); |
| 246 | 246 | ||
| 247 | /* Puts in buffer a prom name in the form name@x,y or name (x for which_io | ||
| 248 | * and y for first regs phys address | ||
| 249 | */ | ||
| 250 | extern int prom_getname(int node, char *buf, int buflen); | ||
| 251 | |||
| 252 | /* Search all siblings starting at the passed node for "name" matching | 247 | /* Search all siblings starting at the passed node for "name" matching |
| 253 | * the given string. Returns the node on success, zero on failure. | 248 | * the given string. Returns the node on success, zero on failure. |
| 254 | */ | 249 | */ |
diff --git a/include/asm-m68k/system.h b/include/asm-m68k/system.h index d6dd8052cd6f..131a0cb0f491 100644 --- a/include/asm-m68k/system.h +++ b/include/asm-m68k/system.h | |||
| @@ -80,7 +80,6 @@ static inline int irqs_disabled(void) | |||
| 80 | #define wmb() barrier() | 80 | #define wmb() barrier() |
| 81 | #define read_barrier_depends() do { } while(0) | 81 | #define read_barrier_depends() do { } while(0) |
| 82 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | 82 | #define set_mb(var, value) do { xchg(&var, value); } while (0) |
| 83 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 84 | 83 | ||
| 85 | #define smp_mb() barrier() | 84 | #define smp_mb() barrier() |
| 86 | #define smp_rmb() barrier() | 85 | #define smp_rmb() barrier() |
diff --git a/include/asm-m68knommu/processor.h b/include/asm-m68knommu/processor.h index 0ee158e09abb..9d3a1bf41231 100644 --- a/include/asm-m68knommu/processor.h +++ b/include/asm-m68knommu/processor.h | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | */ | 13 | */ |
| 14 | #define current_text_addr() ({ __label__ _l; _l: &&_l;}) | 14 | #define current_text_addr() ({ __label__ _l; _l: &&_l;}) |
| 15 | 15 | ||
| 16 | #include <linux/compiler.h> | ||
| 16 | #include <linux/threads.h> | 17 | #include <linux/threads.h> |
| 17 | #include <asm/types.h> | 18 | #include <asm/types.h> |
| 18 | #include <asm/segment.h> | 19 | #include <asm/segment.h> |
| @@ -137,6 +138,6 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 137 | eip; }) | 138 | eip; }) |
| 138 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) | 139 | #define KSTK_ESP(tsk) ((tsk) == current ? rdusp() : (tsk)->thread.usp) |
| 139 | 140 | ||
| 140 | #define cpu_relax() do { } while (0) | 141 | #define cpu_relax() barrier() |
| 141 | 142 | ||
| 142 | #endif | 143 | #endif |
diff --git a/include/asm-m68knommu/system.h b/include/asm-m68knommu/system.h index 2bbe2db00a22..2a814498672d 100644 --- a/include/asm-m68knommu/system.h +++ b/include/asm-m68knommu/system.h | |||
| @@ -106,7 +106,6 @@ asmlinkage void resume(void); | |||
| 106 | #define wmb() asm volatile ("" : : :"memory") | 106 | #define wmb() asm volatile ("" : : :"memory") |
| 107 | #define set_rmb(var, value) do { xchg(&var, value); } while (0) | 107 | #define set_rmb(var, value) do { xchg(&var, value); } while (0) |
| 108 | #define set_mb(var, value) set_rmb(var, value) | 108 | #define set_mb(var, value) set_rmb(var, value) |
| 109 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 110 | 109 | ||
| 111 | #ifdef CONFIG_SMP | 110 | #ifdef CONFIG_SMP |
| 112 | #define smp_mb() mb() | 111 | #define smp_mb() mb() |
diff --git a/include/asm-m68knommu/uaccess.h b/include/asm-m68knommu/uaccess.h index 05be9515a2d2..62b29b10bc6d 100644 --- a/include/asm-m68knommu/uaccess.h +++ b/include/asm-m68knommu/uaccess.h | |||
| @@ -93,7 +93,7 @@ extern int __put_user_bad(void); | |||
| 93 | #define get_user(x, ptr) \ | 93 | #define get_user(x, ptr) \ |
| 94 | ({ \ | 94 | ({ \ |
| 95 | int __gu_err = 0; \ | 95 | int __gu_err = 0; \ |
| 96 | typeof(*(ptr)) __gu_val = 0; \ | 96 | typeof(x) __gu_val = 0; \ |
| 97 | switch (sizeof(*(ptr))) { \ | 97 | switch (sizeof(*(ptr))) { \ |
| 98 | case 1: \ | 98 | case 1: \ |
| 99 | __get_user_asm(__gu_err, __gu_val, ptr, b, "=d"); \ | 99 | __get_user_asm(__gu_err, __gu_val, ptr, b, "=d"); \ |
| @@ -105,23 +105,23 @@ extern int __put_user_bad(void); | |||
| 105 | __get_user_asm(__gu_err, __gu_val, ptr, l, "=r"); \ | 105 | __get_user_asm(__gu_err, __gu_val, ptr, l, "=r"); \ |
| 106 | break; \ | 106 | break; \ |
| 107 | case 8: \ | 107 | case 8: \ |
| 108 | memcpy(&__gu_val, ptr, sizeof (*(ptr))); \ | 108 | memcpy((void *) &__gu_val, ptr, sizeof (*(ptr))); \ |
| 109 | break; \ | 109 | break; \ |
| 110 | default: \ | 110 | default: \ |
| 111 | __gu_val = 0; \ | 111 | __gu_val = 0; \ |
| 112 | __gu_err = __get_user_bad(); \ | 112 | __gu_err = __get_user_bad(); \ |
| 113 | break; \ | 113 | break; \ |
| 114 | } \ | 114 | } \ |
| 115 | (x) = __gu_val; \ | 115 | (x) = (typeof(*(ptr))) __gu_val; \ |
| 116 | __gu_err; \ | 116 | __gu_err; \ |
| 117 | }) | 117 | }) |
| 118 | #define __get_user(x, ptr) get_user(x, ptr) | 118 | #define __get_user(x, ptr) get_user(x, ptr) |
| 119 | 119 | ||
| 120 | extern int __get_user_bad(void); | 120 | extern int __get_user_bad(void); |
| 121 | 121 | ||
| 122 | #define __get_user_asm(err,x,ptr,bwl,reg) \ | 122 | #define __get_user_asm(err,x,ptr,bwl,reg) \ |
| 123 | __asm__ ("move" #bwl " %1,%0" \ | 123 | __asm__ ("move" #bwl " %1,%0" \ |
| 124 | : "=d" (x) \ | 124 | : "=d" (x) \ |
| 125 | : "m" (*__ptr(ptr))) | 125 | : "m" (*__ptr(ptr))) |
| 126 | 126 | ||
| 127 | #define copy_from_user(to, from, n) (memcpy(to, from, n), 0) | 127 | #define copy_from_user(to, from, n) (memcpy(to, from, n), 0) |
diff --git a/include/asm-mips/apm.h b/include/asm-mips/apm.h index e8c69208f63a..4b99ffc11529 100644 --- a/include/asm-mips/apm.h +++ b/include/asm-mips/apm.h | |||
| @@ -13,7 +13,6 @@ | |||
| 13 | #ifndef MIPS_ASM_SA1100_APM_H | 13 | #ifndef MIPS_ASM_SA1100_APM_H |
| 14 | #define MIPS_ASM_SA1100_APM_H | 14 | #define MIPS_ASM_SA1100_APM_H |
| 15 | 15 | ||
| 16 | #include <linux/config.h> | ||
| 17 | #include <linux/apm_bios.h> | 16 | #include <linux/apm_bios.h> |
| 18 | 17 | ||
| 19 | /* | 18 | /* |
diff --git a/include/asm-mips/atomic.h b/include/asm-mips/atomic.h index 13d44e14025a..e64abc0d8221 100644 --- a/include/asm-mips/atomic.h +++ b/include/asm-mips/atomic.h | |||
| @@ -22,8 +22,8 @@ | |||
| 22 | #ifndef _ASM_ATOMIC_H | 22 | #ifndef _ASM_ATOMIC_H |
| 23 | #define _ASM_ATOMIC_H | 23 | #define _ASM_ATOMIC_H |
| 24 | 24 | ||
| 25 | #include <linux/irqflags.h> | ||
| 25 | #include <asm/cpu-features.h> | 26 | #include <asm/cpu-features.h> |
| 26 | #include <asm/interrupt.h> | ||
| 27 | #include <asm/war.h> | 27 | #include <asm/war.h> |
| 28 | 28 | ||
| 29 | typedef struct { volatile int counter; } atomic_t; | 29 | typedef struct { volatile int counter; } atomic_t; |
diff --git a/include/asm-mips/bitops.h b/include/asm-mips/bitops.h index 098cec263681..1bb89c5a10ee 100644 --- a/include/asm-mips/bitops.h +++ b/include/asm-mips/bitops.h | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | 31 | ||
| 32 | #ifdef __KERNEL__ | 32 | #ifdef __KERNEL__ |
| 33 | 33 | ||
| 34 | #include <asm/interrupt.h> | 34 | #include <linux/irqflags.h> |
| 35 | #include <asm/sgidefs.h> | 35 | #include <asm/sgidefs.h> |
| 36 | #include <asm/war.h> | 36 | #include <asm/war.h> |
| 37 | 37 | ||
diff --git a/include/asm-mips/cpu-features.h b/include/asm-mips/cpu-features.h index 44285a9d5520..eadca266f159 100644 --- a/include/asm-mips/cpu-features.h +++ b/include/asm-mips/cpu-features.h | |||
| @@ -143,12 +143,8 @@ | |||
| 143 | #define cpu_has_dsp (cpu_data[0].ases & MIPS_ASE_DSP) | 143 | #define cpu_has_dsp (cpu_data[0].ases & MIPS_ASE_DSP) |
| 144 | #endif | 144 | #endif |
| 145 | 145 | ||
| 146 | #ifdef CONFIG_MIPS_MT | ||
| 147 | #ifndef cpu_has_mipsmt | 146 | #ifndef cpu_has_mipsmt |
| 148 | # define cpu_has_mipsmt (cpu_data[0].ases & MIPS_ASE_MIPSMT) | 147 | #define cpu_has_mipsmt (cpu_data[0].ases & MIPS_ASE_MIPSMT) |
| 149 | #endif | ||
| 150 | #else | ||
| 151 | # define cpu_has_mipsmt 0 | ||
| 152 | #endif | 148 | #endif |
| 153 | 149 | ||
| 154 | #ifdef CONFIG_32BIT | 150 | #ifdef CONFIG_32BIT |
| @@ -199,8 +195,8 @@ | |||
| 199 | # define cpu_has_veic 0 | 195 | # define cpu_has_veic 0 |
| 200 | #endif | 196 | #endif |
| 201 | 197 | ||
| 202 | #ifndef cpu_has_subset_pcaches | 198 | #ifndef cpu_has_inclusive_pcaches |
| 203 | #define cpu_has_subset_pcaches (cpu_data[0].options & MIPS_CPU_SUBSET_CACHES) | 199 | #define cpu_has_inclusive_pcaches (cpu_data[0].options & MIPS_CPU_INCLUSIVE_CACHES) |
| 204 | #endif | 200 | #endif |
| 205 | 201 | ||
| 206 | #ifndef cpu_dcache_line_size | 202 | #ifndef cpu_dcache_line_size |
diff --git a/include/asm-mips/cpu.h b/include/asm-mips/cpu.h index dff2a0a52f8f..d38fdbf845b2 100644 --- a/include/asm-mips/cpu.h +++ b/include/asm-mips/cpu.h | |||
| @@ -242,7 +242,7 @@ | |||
| 242 | #define MIPS_CPU_EJTAG 0x00008000 /* EJTAG exception */ | 242 | #define MIPS_CPU_EJTAG 0x00008000 /* EJTAG exception */ |
| 243 | #define MIPS_CPU_NOFPUEX 0x00010000 /* no FPU exception */ | 243 | #define MIPS_CPU_NOFPUEX 0x00010000 /* no FPU exception */ |
| 244 | #define MIPS_CPU_LLSC 0x00020000 /* CPU has ll/sc instructions */ | 244 | #define MIPS_CPU_LLSC 0x00020000 /* CPU has ll/sc instructions */ |
| 245 | #define MIPS_CPU_SUBSET_CACHES 0x00040000 /* P-cache subset enforced */ | 245 | #define MIPS_CPU_INCLUSIVE_CACHES 0x00040000 /* P-cache subset enforced */ |
| 246 | #define MIPS_CPU_PREFETCH 0x00080000 /* CPU has usable prefetch */ | 246 | #define MIPS_CPU_PREFETCH 0x00080000 /* CPU has usable prefetch */ |
| 247 | #define MIPS_CPU_VINT 0x00100000 /* CPU supports MIPSR2 vectored interrupts */ | 247 | #define MIPS_CPU_VINT 0x00100000 /* CPU supports MIPSR2 vectored interrupts */ |
| 248 | #define MIPS_CPU_VEIC 0x00200000 /* CPU supports MIPSR2 external interrupt controller mode */ | 248 | #define MIPS_CPU_VEIC 0x00200000 /* CPU supports MIPSR2 external interrupt controller mode */ |
diff --git a/include/asm-mips/inst.h b/include/asm-mips/inst.h index 1ed8d0f62577..6489f00731ca 100644 --- a/include/asm-mips/inst.h +++ b/include/asm-mips/inst.h | |||
| @@ -74,7 +74,7 @@ enum spec3_op { | |||
| 74 | ins_op, dinsm_op, dinsu_op, dins_op, | 74 | ins_op, dinsm_op, dinsu_op, dins_op, |
| 75 | bshfl_op = 0x20, | 75 | bshfl_op = 0x20, |
| 76 | dbshfl_op = 0x24, | 76 | dbshfl_op = 0x24, |
| 77 | rdhwr_op = 0x3f | 77 | rdhwr_op = 0x3b |
| 78 | }; | 78 | }; |
| 79 | 79 | ||
| 80 | /* | 80 | /* |
diff --git a/include/asm-mips/interrupt.h b/include/asm-mips/irqflags.h index a99d6867510f..43ca09a3a3d0 100644 --- a/include/asm-mips/interrupt.h +++ b/include/asm-mips/irqflags.h | |||
| @@ -8,13 +8,15 @@ | |||
| 8 | * Copyright (C) 1999 Silicon Graphics | 8 | * Copyright (C) 1999 Silicon Graphics |
| 9 | * Copyright (C) 2000 MIPS Technologies, Inc. | 9 | * Copyright (C) 2000 MIPS Technologies, Inc. |
| 10 | */ | 10 | */ |
| 11 | #ifndef _ASM_INTERRUPT_H | 11 | #ifndef _ASM_IRQFLAGS_H |
| 12 | #define _ASM_INTERRUPT_H | 12 | #define _ASM_IRQFLAGS_H |
| 13 | |||
| 14 | #ifndef __ASSEMBLY__ | ||
| 13 | 15 | ||
| 14 | #include <asm/hazards.h> | 16 | #include <asm/hazards.h> |
| 15 | 17 | ||
| 16 | __asm__ ( | 18 | __asm__ ( |
| 17 | " .macro local_irq_enable \n" | 19 | " .macro raw_local_irq_enable \n" |
| 18 | " .set push \n" | 20 | " .set push \n" |
| 19 | " .set reorder \n" | 21 | " .set reorder \n" |
| 20 | " .set noat \n" | 22 | " .set noat \n" |
| @@ -35,10 +37,10 @@ __asm__ ( | |||
| 35 | " .set pop \n" | 37 | " .set pop \n" |
| 36 | " .endm"); | 38 | " .endm"); |
| 37 | 39 | ||
| 38 | static inline void local_irq_enable(void) | 40 | static inline void raw_local_irq_enable(void) |
| 39 | { | 41 | { |
| 40 | __asm__ __volatile__( | 42 | __asm__ __volatile__( |
| 41 | "local_irq_enable" | 43 | "raw_local_irq_enable" |
| 42 | : /* no outputs */ | 44 | : /* no outputs */ |
| 43 | : /* no inputs */ | 45 | : /* no inputs */ |
| 44 | : "memory"); | 46 | : "memory"); |
| @@ -63,7 +65,7 @@ static inline void local_irq_enable(void) | |||
| 63 | * Workaround: mask EXL bit of the result or place a nop before mfc0. | 65 | * Workaround: mask EXL bit of the result or place a nop before mfc0. |
| 64 | */ | 66 | */ |
| 65 | __asm__ ( | 67 | __asm__ ( |
| 66 | " .macro local_irq_disable\n" | 68 | " .macro raw_local_irq_disable\n" |
| 67 | " .set push \n" | 69 | " .set push \n" |
| 68 | " .set noat \n" | 70 | " .set noat \n" |
| 69 | #ifdef CONFIG_MIPS_MT_SMTC | 71 | #ifdef CONFIG_MIPS_MT_SMTC |
| @@ -84,17 +86,17 @@ __asm__ ( | |||
| 84 | " .set pop \n" | 86 | " .set pop \n" |
| 85 | " .endm \n"); | 87 | " .endm \n"); |
| 86 | 88 | ||
| 87 | static inline void local_irq_disable(void) | 89 | static inline void raw_local_irq_disable(void) |
| 88 | { | 90 | { |
| 89 | __asm__ __volatile__( | 91 | __asm__ __volatile__( |
| 90 | "local_irq_disable" | 92 | "raw_local_irq_disable" |
| 91 | : /* no outputs */ | 93 | : /* no outputs */ |
| 92 | : /* no inputs */ | 94 | : /* no inputs */ |
| 93 | : "memory"); | 95 | : "memory"); |
| 94 | } | 96 | } |
| 95 | 97 | ||
| 96 | __asm__ ( | 98 | __asm__ ( |
| 97 | " .macro local_save_flags flags \n" | 99 | " .macro raw_local_save_flags flags \n" |
| 98 | " .set push \n" | 100 | " .set push \n" |
| 99 | " .set reorder \n" | 101 | " .set reorder \n" |
| 100 | #ifdef CONFIG_MIPS_MT_SMTC | 102 | #ifdef CONFIG_MIPS_MT_SMTC |
| @@ -105,13 +107,13 @@ __asm__ ( | |||
| 105 | " .set pop \n" | 107 | " .set pop \n" |
| 106 | " .endm \n"); | 108 | " .endm \n"); |
| 107 | 109 | ||
| 108 | #define local_save_flags(x) \ | 110 | #define raw_local_save_flags(x) \ |
| 109 | __asm__ __volatile__( \ | 111 | __asm__ __volatile__( \ |
| 110 | "local_save_flags %0" \ | 112 | "raw_local_save_flags %0" \ |
| 111 | : "=r" (x)) | 113 | : "=r" (x)) |
| 112 | 114 | ||
| 113 | __asm__ ( | 115 | __asm__ ( |
| 114 | " .macro local_irq_save result \n" | 116 | " .macro raw_local_irq_save result \n" |
| 115 | " .set push \n" | 117 | " .set push \n" |
| 116 | " .set reorder \n" | 118 | " .set reorder \n" |
| 117 | " .set noat \n" | 119 | " .set noat \n" |
| @@ -135,15 +137,15 @@ __asm__ ( | |||
| 135 | " .set pop \n" | 137 | " .set pop \n" |
| 136 | " .endm \n"); | 138 | " .endm \n"); |
| 137 | 139 | ||
| 138 | #define local_irq_save(x) \ | 140 | #define raw_local_irq_save(x) \ |
| 139 | __asm__ __volatile__( \ | 141 | __asm__ __volatile__( \ |
| 140 | "local_irq_save\t%0" \ | 142 | "raw_local_irq_save\t%0" \ |
| 141 | : "=r" (x) \ | 143 | : "=r" (x) \ |
| 142 | : /* no inputs */ \ | 144 | : /* no inputs */ \ |
| 143 | : "memory") | 145 | : "memory") |
| 144 | 146 | ||
| 145 | __asm__ ( | 147 | __asm__ ( |
| 146 | " .macro local_irq_restore flags \n" | 148 | " .macro raw_local_irq_restore flags \n" |
| 147 | " .set push \n" | 149 | " .set push \n" |
| 148 | " .set noreorder \n" | 150 | " .set noreorder \n" |
| 149 | " .set noat \n" | 151 | " .set noat \n" |
| @@ -182,40 +184,42 @@ __asm__ ( | |||
| 182 | " .set pop \n" | 184 | " .set pop \n" |
| 183 | " .endm \n"); | 185 | " .endm \n"); |
| 184 | 186 | ||
| 185 | #define local_irq_restore(flags) \ | 187 | #define raw_local_irq_restore(flags) \ |
| 186 | do { \ | 188 | do { \ |
| 187 | unsigned long __tmp1; \ | 189 | unsigned long __tmp1; \ |
| 188 | \ | 190 | \ |
| 189 | __asm__ __volatile__( \ | 191 | __asm__ __volatile__( \ |
| 190 | "local_irq_restore\t%0" \ | 192 | "raw_local_irq_restore\t%0" \ |
| 191 | : "=r" (__tmp1) \ | 193 | : "=r" (__tmp1) \ |
| 192 | : "0" (flags) \ | 194 | : "0" (flags) \ |
| 193 | : "memory"); \ | 195 | : "memory"); \ |
| 194 | } while(0) | 196 | } while(0) |
| 195 | 197 | ||
| 196 | static inline int irqs_disabled(void) | 198 | static inline int raw_irqs_disabled_flags(unsigned long flags) |
| 197 | { | 199 | { |
| 198 | #ifdef CONFIG_MIPS_MT_SMTC | 200 | #ifdef CONFIG_MIPS_MT_SMTC |
| 199 | /* | 201 | /* |
| 200 | * SMTC model uses TCStatus.IXMT to disable interrupts for a thread/CPU | 202 | * SMTC model uses TCStatus.IXMT to disable interrupts for a thread/CPU |
| 201 | */ | 203 | */ |
| 202 | unsigned long __result; | 204 | return flags & 0x400; |
| 203 | |||
| 204 | __asm__ __volatile__( | ||
| 205 | " .set noreorder \n" | ||
| 206 | " mfc0 %0, $2, 1 \n" | ||
| 207 | " andi %0, 0x400 \n" | ||
| 208 | " slt %0, $0, %0 \n" | ||
| 209 | " .set reorder \n" | ||
| 210 | : "=r" (__result)); | ||
| 211 | |||
| 212 | return __result; | ||
| 213 | #else | 205 | #else |
| 214 | unsigned long flags; | ||
| 215 | local_save_flags(flags); | ||
| 216 | |||
| 217 | return !(flags & 1); | 206 | return !(flags & 1); |
| 218 | #endif | 207 | #endif |
| 219 | } | 208 | } |
| 220 | 209 | ||
| 221 | #endif /* _ASM_INTERRUPT_H */ | 210 | #endif |
| 211 | |||
| 212 | /* | ||
| 213 | * Do the CPU's IRQ-state tracing from assembly code. | ||
| 214 | */ | ||
| 215 | #ifdef CONFIG_TRACE_IRQFLAGS | ||
| 216 | # define TRACE_IRQS_ON \ | ||
| 217 | jal trace_hardirqs_on | ||
| 218 | # define TRACE_IRQS_OFF \ | ||
| 219 | jal trace_hardirqs_off | ||
| 220 | #else | ||
| 221 | # define TRACE_IRQS_ON | ||
| 222 | # define TRACE_IRQS_OFF | ||
| 223 | #endif | ||
| 224 | |||
| 225 | #endif /* _ASM_IRQFLAGS_H */ | ||
diff --git a/include/asm-mips/mach-cobalt/cpu-feature-overrides.h b/include/asm-mips/mach-cobalt/cpu-feature-overrides.h index e0e08fc5d7f7..c6dfa59d1986 100644 --- a/include/asm-mips/mach-cobalt/cpu-feature-overrides.h +++ b/include/asm-mips/mach-cobalt/cpu-feature-overrides.h | |||
| @@ -27,7 +27,7 @@ | |||
| 27 | #define cpu_has_mcheck 0 | 27 | #define cpu_has_mcheck 0 |
| 28 | #define cpu_has_ejtag 0 | 28 | #define cpu_has_ejtag 0 |
| 29 | 29 | ||
| 30 | #define cpu_has_subset_pcaches 0 | 30 | #define cpu_has_inclusive_pcaches 0 |
| 31 | #define cpu_dcache_line_size() 32 | 31 | #define cpu_dcache_line_size() 32 |
| 32 | #define cpu_icache_line_size() 32 | 32 | #define cpu_icache_line_size() 32 |
| 33 | #define cpu_scache_line_size() 0 | 33 | #define cpu_scache_line_size() 0 |
diff --git a/include/asm-mips/mach-dec/mc146818rtc.h b/include/asm-mips/mach-dec/mc146818rtc.h index 6d37a5675803..6724e99e43e1 100644 --- a/include/asm-mips/mach-dec/mc146818rtc.h +++ b/include/asm-mips/mach-dec/mc146818rtc.h | |||
| @@ -19,6 +19,8 @@ | |||
| 19 | 19 | ||
| 20 | extern volatile u8 *dec_rtc_base; | 20 | extern volatile u8 *dec_rtc_base; |
| 21 | 21 | ||
| 22 | #define ARCH_RTC_LOCATION | ||
| 23 | |||
| 22 | #define RTC_PORT(x) CPHYSADDR((long)dec_rtc_base) | 24 | #define RTC_PORT(x) CPHYSADDR((long)dec_rtc_base) |
| 23 | #define RTC_IO_EXTENT dec_kn_slot_size | 25 | #define RTC_IO_EXTENT dec_kn_slot_size |
| 24 | #define RTC_IOMAPPED 0 | 26 | #define RTC_IOMAPPED 0 |
diff --git a/include/asm-mips/mach-excite/cpu-feature-overrides.h b/include/asm-mips/mach-excite/cpu-feature-overrides.h index abb76b2fd865..0d31854222f9 100644 --- a/include/asm-mips/mach-excite/cpu-feature-overrides.h +++ b/include/asm-mips/mach-excite/cpu-feature-overrides.h | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | #define cpu_has_nofpuex 0 | 31 | #define cpu_has_nofpuex 0 |
| 32 | #define cpu_has_64bits 1 | 32 | #define cpu_has_64bits 1 |
| 33 | 33 | ||
| 34 | #define cpu_has_subset_pcaches 0 | 34 | #define cpu_has_inclusive_pcaches 0 |
| 35 | 35 | ||
| 36 | #define cpu_dcache_line_size() 32 | 36 | #define cpu_dcache_line_size() 32 |
| 37 | #define cpu_icache_line_size() 32 | 37 | #define cpu_icache_line_size() 32 |
diff --git a/include/asm-mips/mach-excite/excite.h b/include/asm-mips/mach-excite/excite.h index c52610de2b3a..130bd4b8edce 100644 --- a/include/asm-mips/mach-excite/excite.h +++ b/include/asm-mips/mach-excite/excite.h | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | #ifndef __EXCITE_H__ | 1 | #ifndef __EXCITE_H__ |
| 2 | #define __EXCITE_H__ | 2 | #define __EXCITE_H__ |
| 3 | 3 | ||
| 4 | #include <linux/config.h> | ||
| 5 | #include <linux/init.h> | 4 | #include <linux/init.h> |
| 6 | #include <asm/addrspace.h> | 5 | #include <asm/addrspace.h> |
| 7 | #include <asm/types.h> | 6 | #include <asm/types.h> |
diff --git a/include/asm-mips/mach-ip27/cpu-feature-overrides.h b/include/asm-mips/mach-ip27/cpu-feature-overrides.h index 19c2d135985b..a071974b67bb 100644 --- a/include/asm-mips/mach-ip27/cpu-feature-overrides.h +++ b/include/asm-mips/mach-ip27/cpu-feature-overrides.h | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | #define cpu_has_4kex 1 | 34 | #define cpu_has_4kex 1 |
| 35 | #define cpu_has_4k_cache 1 | 35 | #define cpu_has_4k_cache 1 |
| 36 | 36 | ||
| 37 | #define cpu_has_subset_pcaches 1 | 37 | #define cpu_has_inclusive_pcaches 1 |
| 38 | 38 | ||
| 39 | #define cpu_dcache_line_size() 32 | 39 | #define cpu_dcache_line_size() 32 |
| 40 | #define cpu_icache_line_size() 64 | 40 | #define cpu_icache_line_size() 64 |
diff --git a/include/asm-mips/mach-ja/cpu-feature-overrides.h b/include/asm-mips/mach-ja/cpu-feature-overrides.h index 90ff087083b9..84b6dead0e8a 100644 --- a/include/asm-mips/mach-ja/cpu-feature-overrides.h +++ b/include/asm-mips/mach-ja/cpu-feature-overrides.h | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | #define cpu_has_nofpuex 0 | 31 | #define cpu_has_nofpuex 0 |
| 32 | #define cpu_has_64bits 1 | 32 | #define cpu_has_64bits 1 |
| 33 | 33 | ||
| 34 | #define cpu_has_subset_pcaches 0 | 34 | #define cpu_has_inclusive_pcaches 0 |
| 35 | 35 | ||
| 36 | #define cpu_dcache_line_size() 32 | 36 | #define cpu_dcache_line_size() 32 |
| 37 | #define cpu_icache_line_size() 32 | 37 | #define cpu_icache_line_size() 32 |
diff --git a/include/asm-mips/mach-mips/cpu-feature-overrides.h b/include/asm-mips/mach-mips/cpu-feature-overrides.h index e960679f54ba..7f3e3f9bd23a 100644 --- a/include/asm-mips/mach-mips/cpu-feature-overrides.h +++ b/include/asm-mips/mach-mips/cpu-feature-overrides.h | |||
| @@ -39,7 +39,7 @@ | |||
| 39 | #define cpu_has_nofpuex 0 | 39 | #define cpu_has_nofpuex 0 |
| 40 | /* #define cpu_has_64bits ? */ | 40 | /* #define cpu_has_64bits ? */ |
| 41 | /* #define cpu_has_64bit_zero_reg ? */ | 41 | /* #define cpu_has_64bit_zero_reg ? */ |
| 42 | /* #define cpu_has_subset_pcaches ? */ | 42 | /* #define cpu_has_inclusive_pcaches ? */ |
| 43 | #define cpu_icache_snoops_remote_store 1 | 43 | #define cpu_icache_snoops_remote_store 1 |
| 44 | #endif | 44 | #endif |
| 45 | 45 | ||
| @@ -65,7 +65,7 @@ | |||
| 65 | #define cpu_has_nofpuex 0 | 65 | #define cpu_has_nofpuex 0 |
| 66 | /* #define cpu_has_64bits ? */ | 66 | /* #define cpu_has_64bits ? */ |
| 67 | /* #define cpu_has_64bit_zero_reg ? */ | 67 | /* #define cpu_has_64bit_zero_reg ? */ |
| 68 | /* #define cpu_has_subset_pcaches ? */ | 68 | /* #define cpu_has_inclusive_pcaches ? */ |
| 69 | #define cpu_icache_snoops_remote_store 1 | 69 | #define cpu_icache_snoops_remote_store 1 |
| 70 | #endif | 70 | #endif |
| 71 | 71 | ||
diff --git a/include/asm-mips/mach-ocelot3/cpu-feature-overrides.h b/include/asm-mips/mach-ocelot3/cpu-feature-overrides.h index 782b986241dd..57a12ded0613 100644 --- a/include/asm-mips/mach-ocelot3/cpu-feature-overrides.h +++ b/include/asm-mips/mach-ocelot3/cpu-feature-overrides.h | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | #define cpu_has_nofpuex 0 | 34 | #define cpu_has_nofpuex 0 |
| 35 | #define cpu_has_64bits 1 | 35 | #define cpu_has_64bits 1 |
| 36 | 36 | ||
| 37 | #define cpu_has_subset_pcaches 0 | 37 | #define cpu_has_inclusive_pcaches 0 |
| 38 | 38 | ||
| 39 | #define cpu_dcache_line_size() 32 | 39 | #define cpu_dcache_line_size() 32 |
| 40 | #define cpu_icache_line_size() 32 | 40 | #define cpu_icache_line_size() 32 |
diff --git a/include/asm-mips/mach-sibyte/cpu-feature-overrides.h b/include/asm-mips/mach-sibyte/cpu-feature-overrides.h index 193a666cd131..a25968f277a2 100644 --- a/include/asm-mips/mach-sibyte/cpu-feature-overrides.h +++ b/include/asm-mips/mach-sibyte/cpu-feature-overrides.h | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | #define cpu_has_nofpuex 0 | 31 | #define cpu_has_nofpuex 0 |
| 32 | #define cpu_has_64bits 1 | 32 | #define cpu_has_64bits 1 |
| 33 | 33 | ||
| 34 | #define cpu_has_subset_pcaches 0 | 34 | #define cpu_has_inclusive_pcaches 0 |
| 35 | 35 | ||
| 36 | #define cpu_dcache_line_size() 32 | 36 | #define cpu_dcache_line_size() 32 |
| 37 | #define cpu_icache_line_size() 32 | 37 | #define cpu_icache_line_size() 32 |
diff --git a/include/asm-mips/mach-sim/cpu-feature-overrides.h b/include/asm-mips/mach-sim/cpu-feature-overrides.h index d736bdadb6df..779b02205737 100644 --- a/include/asm-mips/mach-sim/cpu-feature-overrides.h +++ b/include/asm-mips/mach-sim/cpu-feature-overrides.h | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | #define cpu_has_nofpuex 0 | 34 | #define cpu_has_nofpuex 0 |
| 35 | /* #define cpu_has_64bits ? */ | 35 | /* #define cpu_has_64bits ? */ |
| 36 | /* #define cpu_has_64bit_zero_reg ? */ | 36 | /* #define cpu_has_64bit_zero_reg ? */ |
| 37 | /* #define cpu_has_subset_pcaches ? */ | 37 | /* #define cpu_has_inclusive_pcaches ? */ |
| 38 | #endif | 38 | #endif |
| 39 | 39 | ||
| 40 | #ifdef CONFIG_CPU_MIPS64 | 40 | #ifdef CONFIG_CPU_MIPS64 |
| @@ -59,7 +59,7 @@ | |||
| 59 | #define cpu_has_nofpuex 0 | 59 | #define cpu_has_nofpuex 0 |
| 60 | /* #define cpu_has_64bits ? */ | 60 | /* #define cpu_has_64bits ? */ |
| 61 | /* #define cpu_has_64bit_zero_reg ? */ | 61 | /* #define cpu_has_64bit_zero_reg ? */ |
| 62 | /* #define cpu_has_subset_pcaches ? */ | 62 | /* #define cpu_has_inclusive_pcaches ? */ |
| 63 | #endif | 63 | #endif |
| 64 | 64 | ||
| 65 | #endif /* __ASM_MACH_MIPS_CPU_FEATURE_OVERRIDES_H */ | 65 | #endif /* __ASM_MACH_MIPS_CPU_FEATURE_OVERRIDES_H */ |
diff --git a/include/asm-mips/mach-yosemite/cpu-feature-overrides.h b/include/asm-mips/mach-yosemite/cpu-feature-overrides.h index 3073542c93c7..42cebb7ce7a6 100644 --- a/include/asm-mips/mach-yosemite/cpu-feature-overrides.h +++ b/include/asm-mips/mach-yosemite/cpu-feature-overrides.h | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | #define cpu_has_nofpuex 0 | 31 | #define cpu_has_nofpuex 0 |
| 32 | #define cpu_has_64bits 1 | 32 | #define cpu_has_64bits 1 |
| 33 | 33 | ||
| 34 | #define cpu_has_subset_pcaches 0 | 34 | #define cpu_has_inclusive_pcaches 0 |
| 35 | 35 | ||
| 36 | #define cpu_dcache_line_size() 32 | 36 | #define cpu_dcache_line_size() 32 |
| 37 | #define cpu_icache_line_size() 32 | 37 | #define cpu_icache_line_size() 32 |
diff --git a/include/asm-mips/mipsregs.h b/include/asm-mips/mipsregs.h index 9192d76c133d..1f318d707998 100644 --- a/include/asm-mips/mipsregs.h +++ b/include/asm-mips/mipsregs.h | |||
| @@ -470,6 +470,8 @@ | |||
| 470 | 470 | ||
| 471 | /* Bits specific to the VR41xx. */ | 471 | /* Bits specific to the VR41xx. */ |
| 472 | #define VR41_CONF_CS (_ULCAST_(1) << 12) | 472 | #define VR41_CONF_CS (_ULCAST_(1) << 12) |
| 473 | #define VR41_CONF_P4K (_ULCAST_(1) << 13) | ||
| 474 | #define VR41_CONF_BP (_ULCAST_(1) << 16) | ||
| 473 | #define VR41_CONF_M16 (_ULCAST_(1) << 20) | 475 | #define VR41_CONF_M16 (_ULCAST_(1) << 20) |
| 474 | #define VR41_CONF_AD (_ULCAST_(1) << 23) | 476 | #define VR41_CONF_AD (_ULCAST_(1) << 23) |
| 475 | 477 | ||
| @@ -1416,7 +1418,7 @@ change_c0_##name(unsigned int change, unsigned int new) \ | |||
| 1416 | 1418 | ||
| 1417 | #else /* SMTC versions that manage MT scheduling */ | 1419 | #else /* SMTC versions that manage MT scheduling */ |
| 1418 | 1420 | ||
| 1419 | #include <asm/interrupt.h> | 1421 | #include <linux/irqflags.h> |
| 1420 | 1422 | ||
| 1421 | /* | 1423 | /* |
| 1422 | * This is a duplicate of dmt() in mipsmtregs.h to avoid problems with | 1424 | * This is a duplicate of dmt() in mipsmtregs.h to avoid problems with |
diff --git a/include/asm-mips/page.h b/include/asm-mips/page.h index 6b97744f00cd..6ed1151a05a3 100644 --- a/include/asm-mips/page.h +++ b/include/asm-mips/page.h | |||
| @@ -138,16 +138,14 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
| 138 | 138 | ||
| 139 | #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) | 139 | #define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT) |
| 140 | 140 | ||
| 141 | #ifndef CONFIG_SPARSEMEM | ||
| 142 | #ifndef CONFIG_NEED_MULTIPLE_NODES | ||
| 143 | #define pfn_valid(pfn) ((pfn) < max_mapnr) | ||
| 144 | #endif | ||
| 145 | #endif | ||
| 146 | |||
| 147 | #ifdef CONFIG_FLATMEM | 141 | #ifdef CONFIG_FLATMEM |
| 148 | 142 | ||
| 149 | #define pfn_valid(pfn) ((pfn) < max_mapnr) | 143 | #define pfn_valid(pfn) ((pfn) < max_mapnr) |
| 150 | 144 | ||
| 145 | #elif defined(CONFIG_SPARSEMEM) | ||
| 146 | |||
| 147 | /* pfn_valid is defined in linux/mmzone.h */ | ||
| 148 | |||
| 151 | #elif defined(CONFIG_NEED_MULTIPLE_NODES) | 149 | #elif defined(CONFIG_NEED_MULTIPLE_NODES) |
| 152 | 150 | ||
| 153 | #define pfn_valid(pfn) \ | 151 | #define pfn_valid(pfn) \ |
| @@ -159,8 +157,6 @@ typedef struct { unsigned long pgprot; } pgprot_t; | |||
| 159 | : 0); \ | 157 | : 0); \ |
| 160 | }) | 158 | }) |
| 161 | 159 | ||
| 162 | #else | ||
| 163 | #error Provide a definition of pfn_valid | ||
| 164 | #endif | 160 | #endif |
| 165 | 161 | ||
| 166 | #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) | 162 | #define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT) |
diff --git a/include/asm-mips/system.h b/include/asm-mips/system.h index 130333d7c4ee..dcb4701d5728 100644 --- a/include/asm-mips/system.h +++ b/include/asm-mips/system.h | |||
| @@ -13,13 +13,13 @@ | |||
| 13 | #define _ASM_SYSTEM_H | 13 | #define _ASM_SYSTEM_H |
| 14 | 14 | ||
| 15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
| 16 | #include <linux/irqflags.h> | ||
| 16 | 17 | ||
| 17 | #include <asm/addrspace.h> | 18 | #include <asm/addrspace.h> |
| 18 | #include <asm/cpu-features.h> | 19 | #include <asm/cpu-features.h> |
| 19 | #include <asm/dsp.h> | 20 | #include <asm/dsp.h> |
| 20 | #include <asm/ptrace.h> | 21 | #include <asm/ptrace.h> |
| 21 | #include <asm/war.h> | 22 | #include <asm/war.h> |
| 22 | #include <asm/interrupt.h> | ||
| 23 | 23 | ||
| 24 | /* | 24 | /* |
| 25 | * read_barrier_depends - Flush all pending reads that subsequents reads | 25 | * read_barrier_depends - Flush all pending reads that subsequents reads |
| @@ -143,9 +143,6 @@ | |||
| 143 | #define set_mb(var, value) \ | 143 | #define set_mb(var, value) \ |
| 144 | do { var = value; mb(); } while (0) | 144 | do { var = value; mb(); } while (0) |
| 145 | 145 | ||
| 146 | #define set_wmb(var, value) \ | ||
| 147 | do { var = value; wmb(); } while (0) | ||
| 148 | |||
| 149 | /* | 146 | /* |
| 150 | * switch_to(n) should switch tasks to task nr n, first | 147 | * switch_to(n) should switch tasks to task nr n, first |
| 151 | * checking that n isn't the current task, in which case it does nothing. | 148 | * checking that n isn't the current task, in which case it does nothing. |
diff --git a/include/asm-mips/time.h b/include/asm-mips/time.h index d897c8bb554d..2d543735668b 100644 --- a/include/asm-mips/time.h +++ b/include/asm-mips/time.h | |||
| @@ -83,11 +83,11 @@ extern asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs); | |||
| 83 | /* | 83 | /* |
| 84 | * board specific routines required by time_init(). | 84 | * board specific routines required by time_init(). |
| 85 | * board_time_init is defaulted to NULL and can remain so. | 85 | * board_time_init is defaulted to NULL and can remain so. |
| 86 | * board_timer_setup must be setup properly in machine setup routine. | 86 | * plat_timer_setup must be setup properly in machine setup routine. |
| 87 | */ | 87 | */ |
| 88 | struct irqaction; | 88 | struct irqaction; |
| 89 | extern void (*board_time_init)(void); | 89 | extern void (*board_time_init)(void); |
| 90 | extern void (*board_timer_setup)(struct irqaction *irq); | 90 | extern void plat_timer_setup(struct irqaction *irq); |
| 91 | 91 | ||
| 92 | /* | 92 | /* |
| 93 | * mips_hpt_frequency - must be set if you intend to use an R4k-compatible | 93 | * mips_hpt_frequency - must be set if you intend to use an R4k-compatible |
diff --git a/include/asm-mips/unistd.h b/include/asm-mips/unistd.h index 809f9f55bacb..610ccb8a50b3 100644 --- a/include/asm-mips/unistd.h +++ b/include/asm-mips/unistd.h | |||
| @@ -327,16 +327,18 @@ | |||
| 327 | #define __NR_splice (__NR_Linux + 304) | 327 | #define __NR_splice (__NR_Linux + 304) |
| 328 | #define __NR_sync_file_range (__NR_Linux + 305) | 328 | #define __NR_sync_file_range (__NR_Linux + 305) |
| 329 | #define __NR_tee (__NR_Linux + 306) | 329 | #define __NR_tee (__NR_Linux + 306) |
| 330 | #define __NR_vmsplice (__NR_Linux + 307) | ||
| 331 | #define __NR_move_pages (__NR_Linux + 308) | ||
| 330 | 332 | ||
| 331 | /* | 333 | /* |
| 332 | * Offset of the last Linux o32 flavoured syscall | 334 | * Offset of the last Linux o32 flavoured syscall |
| 333 | */ | 335 | */ |
| 334 | #define __NR_Linux_syscalls 306 | 336 | #define __NR_Linux_syscalls 308 |
| 335 | 337 | ||
| 336 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ | 338 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI32 */ |
| 337 | 339 | ||
| 338 | #define __NR_O32_Linux 4000 | 340 | #define __NR_O32_Linux 4000 |
| 339 | #define __NR_O32_Linux_syscalls 306 | 341 | #define __NR_O32_Linux_syscalls 308 |
| 340 | 342 | ||
| 341 | #if _MIPS_SIM == _MIPS_SIM_ABI64 | 343 | #if _MIPS_SIM == _MIPS_SIM_ABI64 |
| 342 | 344 | ||
| @@ -610,16 +612,18 @@ | |||
| 610 | #define __NR_splice (__NR_Linux + 263) | 612 | #define __NR_splice (__NR_Linux + 263) |
| 611 | #define __NR_sync_file_range (__NR_Linux + 264) | 613 | #define __NR_sync_file_range (__NR_Linux + 264) |
| 612 | #define __NR_tee (__NR_Linux + 265) | 614 | #define __NR_tee (__NR_Linux + 265) |
| 615 | #define __NR_vmsplice (__NR_Linux + 266) | ||
| 616 | #define __NR_move_pages (__NR_Linux + 267) | ||
| 613 | 617 | ||
| 614 | /* | 618 | /* |
| 615 | * Offset of the last Linux 64-bit flavoured syscall | 619 | * Offset of the last Linux 64-bit flavoured syscall |
| 616 | */ | 620 | */ |
| 617 | #define __NR_Linux_syscalls 265 | 621 | #define __NR_Linux_syscalls 267 |
| 618 | 622 | ||
| 619 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ | 623 | #endif /* _MIPS_SIM == _MIPS_SIM_ABI64 */ |
| 620 | 624 | ||
| 621 | #define __NR_64_Linux 5000 | 625 | #define __NR_64_Linux 5000 |
| 622 | #define __NR_64_Linux_syscalls 265 | 626 | #define __NR_64_Linux_syscalls 267 |
| 623 | 627 | ||
| 624 | #if _MIPS_SIM == _MIPS_SIM_NABI32 | 628 | #if _MIPS_SIM == _MIPS_SIM_NABI32 |
| 625 | 629 | ||
| @@ -897,16 +901,18 @@ | |||
| 897 | #define __NR_splice (__NR_Linux + 267) | 901 | #define __NR_splice (__NR_Linux + 267) |
| 898 | #define __NR_sync_file_range (__NR_Linux + 268) | 902 | #define __NR_sync_file_range (__NR_Linux + 268) |
| 899 | #define __NR_tee (__NR_Linux + 269) | 903 | #define __NR_tee (__NR_Linux + 269) |
| 904 | #define __NR_vmsplice (__NR_Linux + 270) | ||
| 905 | #define __NR_move_pages (__NR_Linux + 271) | ||
| 900 | 906 | ||
| 901 | /* | 907 | /* |
| 902 | * Offset of the last N32 flavoured syscall | 908 | * Offset of the last N32 flavoured syscall |
| 903 | */ | 909 | */ |
| 904 | #define __NR_Linux_syscalls 269 | 910 | #define __NR_Linux_syscalls 271 |
| 905 | 911 | ||
| 906 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ | 912 | #endif /* _MIPS_SIM == _MIPS_SIM_NABI32 */ |
| 907 | 913 | ||
| 908 | #define __NR_N32_Linux 6000 | 914 | #define __NR_N32_Linux 6000 |
| 909 | #define __NR_N32_Linux_syscalls 269 | 915 | #define __NR_N32_Linux_syscalls 271 |
| 910 | 916 | ||
| 911 | #ifdef __KERNEL__ | 917 | #ifdef __KERNEL__ |
| 912 | 918 | ||
diff --git a/include/asm-mips/vr41xx/capcella.h b/include/asm-mips/vr41xx/capcella.h index d10ffda50de7..e0ee05a3dfcc 100644 --- a/include/asm-mips/vr41xx/capcella.h +++ b/include/asm-mips/vr41xx/capcella.h | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #ifndef __ZAO_CAPCELLA_H | 20 | #ifndef __ZAO_CAPCELLA_H |
| 21 | #define __ZAO_CAPCELLA_H | 21 | #define __ZAO_CAPCELLA_H |
| 22 | 22 | ||
| 23 | #include <asm/vr41xx/vr41xx.h> | 23 | #include <asm/vr41xx/irq.h> |
| 24 | 24 | ||
| 25 | /* | 25 | /* |
| 26 | * General-Purpose I/O Pin Number | 26 | * General-Purpose I/O Pin Number |
diff --git a/include/asm-mips/vr41xx/cmbvr4133.h b/include/asm-mips/vr41xx/cmbvr4133.h index 42af389019ea..9490ade58b46 100644 --- a/include/asm-mips/vr41xx/cmbvr4133.h +++ b/include/asm-mips/vr41xx/cmbvr4133.h | |||
| @@ -15,8 +15,7 @@ | |||
| 15 | #ifndef __NEC_CMBVR4133_H | 15 | #ifndef __NEC_CMBVR4133_H |
| 16 | #define __NEC_CMBVR4133_H | 16 | #define __NEC_CMBVR4133_H |
| 17 | 17 | ||
| 18 | #include <asm/addrspace.h> | 18 | #include <asm/vr41xx/irq.h> |
| 19 | #include <asm/vr41xx/vr41xx.h> | ||
| 20 | 19 | ||
| 21 | /* | 20 | /* |
| 22 | * General-Purpose I/O Pin Number | 21 | * General-Purpose I/O Pin Number |
| @@ -55,7 +54,4 @@ | |||
| 55 | #define IDE_SECONDARY_IRQ I8259_IRQ(15) | 54 | #define IDE_SECONDARY_IRQ I8259_IRQ(15) |
| 56 | #define I8259_IRQ_LAST IDE_SECONDARY_IRQ | 55 | #define I8259_IRQ_LAST IDE_SECONDARY_IRQ |
| 57 | 56 | ||
| 58 | #define RTC_PORT(x) (0xaf000100 + (x)) | ||
| 59 | #define RTC_IO_EXTENT 0x140 | ||
| 60 | |||
| 61 | #endif /* __NEC_CMBVR4133_H */ | 57 | #endif /* __NEC_CMBVR4133_H */ |
diff --git a/include/asm-mips/vr41xx/e55.h b/include/asm-mips/vr41xx/e55.h deleted file mode 100644 index 558f2269bf37..000000000000 --- a/include/asm-mips/vr41xx/e55.h +++ /dev/null | |||
| @@ -1,43 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * e55.h, Include file for CASIO CASSIOPEIA E-10/15/55/65. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2002-2004 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 19 | */ | ||
| 20 | #ifndef __CASIO_E55_H | ||
| 21 | #define __CASIO_E55_H | ||
| 22 | |||
| 23 | #include <asm/addrspace.h> | ||
| 24 | #include <asm/vr41xx/vr41xx.h> | ||
| 25 | |||
| 26 | /* | ||
| 27 | * Board specific address mapping | ||
| 28 | */ | ||
| 29 | #define VR41XX_ISA_MEM_BASE 0x10000000 | ||
| 30 | #define VR41XX_ISA_MEM_SIZE 0x04000000 | ||
| 31 | |||
| 32 | /* VR41XX_ISA_IO_BASE includes offset from real base. */ | ||
| 33 | #define VR41XX_ISA_IO_BASE 0x1400c000 | ||
| 34 | #define VR41XX_ISA_IO_SIZE 0x03ff4000 | ||
| 35 | |||
| 36 | #define ISA_BUS_IO_BASE 0 | ||
| 37 | #define ISA_BUS_IO_SIZE VR41XX_ISA_IO_SIZE | ||
| 38 | |||
| 39 | #define IO_PORT_BASE KSEG1ADDR(VR41XX_ISA_IO_BASE) | ||
| 40 | #define IO_PORT_RESOURCE_START ISA_BUS_IO_BASE | ||
| 41 | #define IO_PORT_RESOURCE_END (ISA_BUS_IO_BASE + ISA_BUS_IO_SIZE - 1) | ||
| 42 | |||
| 43 | #endif /* __CASIO_E55_H */ | ||
diff --git a/include/asm-mips/vr41xx/irq.h b/include/asm-mips/vr41xx/irq.h new file mode 100644 index 000000000000..d315dfbc08f2 --- /dev/null +++ b/include/asm-mips/vr41xx/irq.h | |||
| @@ -0,0 +1,101 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-mips/vr41xx/irq.h | ||
| 3 | * | ||
| 4 | * Interrupt numbers for NEC VR4100 series. | ||
| 5 | * | ||
| 6 | * Copyright (C) 1999 Michael Klar | ||
| 7 | * Copyright (C) 2001, 2002 Paul Mundt | ||
| 8 | * Copyright (C) 2002 MontaVista Software, Inc. | ||
| 9 | * Copyright (C) 2002 TimeSys Corp. | ||
| 10 | * Copyright (C) 2003-2006 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> | ||
| 11 | * | ||
| 12 | * This program is free software; you can redistribute it and/or modify it | ||
| 13 | * under the terms of the GNU General Public License as published by the | ||
| 14 | * Free Software Foundation; either version 2 of the License, or (at your | ||
| 15 | * option) any later version. | ||
| 16 | */ | ||
| 17 | #ifndef __NEC_VR41XX_IRQ_H | ||
| 18 | #define __NEC_VR41XX_IRQ_H | ||
| 19 | |||
| 20 | /* | ||
| 21 | * CPU core Interrupt Numbers | ||
| 22 | */ | ||
| 23 | #define MIPS_CPU_IRQ_BASE 0 | ||
| 24 | #define MIPS_CPU_IRQ(x) (MIPS_CPU_IRQ_BASE + (x)) | ||
| 25 | #define MIPS_SOFTINT0_IRQ MIPS_CPU_IRQ(0) | ||
| 26 | #define MIPS_SOFTINT1_IRQ MIPS_CPU_IRQ(1) | ||
| 27 | #define INT0_IRQ MIPS_CPU_IRQ(2) | ||
| 28 | #define INT1_IRQ MIPS_CPU_IRQ(3) | ||
| 29 | #define INT2_IRQ MIPS_CPU_IRQ(4) | ||
| 30 | #define INT3_IRQ MIPS_CPU_IRQ(5) | ||
| 31 | #define INT4_IRQ MIPS_CPU_IRQ(6) | ||
| 32 | #define TIMER_IRQ MIPS_CPU_IRQ(7) | ||
| 33 | |||
| 34 | /* | ||
| 35 | * SYINT1 Interrupt Numbers | ||
| 36 | */ | ||
| 37 | #define SYSINT1_IRQ_BASE 8 | ||
| 38 | #define SYSINT1_IRQ(x) (SYSINT1_IRQ_BASE + (x)) | ||
| 39 | #define BATTRY_IRQ SYSINT1_IRQ(0) | ||
| 40 | #define POWER_IRQ SYSINT1_IRQ(1) | ||
| 41 | #define RTCLONG1_IRQ SYSINT1_IRQ(2) | ||
| 42 | #define ELAPSEDTIME_IRQ SYSINT1_IRQ(3) | ||
| 43 | /* RFU */ | ||
| 44 | #define PIU_IRQ SYSINT1_IRQ(5) | ||
| 45 | #define AIU_IRQ SYSINT1_IRQ(6) | ||
| 46 | #define KIU_IRQ SYSINT1_IRQ(7) | ||
| 47 | #define GIUINT_IRQ SYSINT1_IRQ(8) | ||
| 48 | #define SIU_IRQ SYSINT1_IRQ(9) | ||
| 49 | #define BUSERR_IRQ SYSINT1_IRQ(10) | ||
| 50 | #define SOFTINT_IRQ SYSINT1_IRQ(11) | ||
| 51 | #define CLKRUN_IRQ SYSINT1_IRQ(12) | ||
| 52 | #define DOZEPIU_IRQ SYSINT1_IRQ(13) | ||
| 53 | #define SYSINT1_IRQ_LAST DOZEPIU_IRQ | ||
| 54 | |||
| 55 | /* | ||
| 56 | * SYSINT2 Interrupt Numbers | ||
| 57 | */ | ||
| 58 | #define SYSINT2_IRQ_BASE 24 | ||
| 59 | #define SYSINT2_IRQ(x) (SYSINT2_IRQ_BASE + (x)) | ||
| 60 | #define RTCLONG2_IRQ SYSINT2_IRQ(0) | ||
| 61 | #define LED_IRQ SYSINT2_IRQ(1) | ||
| 62 | #define HSP_IRQ SYSINT2_IRQ(2) | ||
| 63 | #define TCLOCK_IRQ SYSINT2_IRQ(3) | ||
| 64 | #define FIR_IRQ SYSINT2_IRQ(4) | ||
| 65 | #define CEU_IRQ SYSINT2_IRQ(4) /* same number as FIR_IRQ */ | ||
| 66 | #define DSIU_IRQ SYSINT2_IRQ(5) | ||
| 67 | #define PCI_IRQ SYSINT2_IRQ(6) | ||
| 68 | #define SCU_IRQ SYSINT2_IRQ(7) | ||
| 69 | #define CSI_IRQ SYSINT2_IRQ(8) | ||
| 70 | #define BCU_IRQ SYSINT2_IRQ(9) | ||
| 71 | #define ETHERNET_IRQ SYSINT2_IRQ(10) | ||
| 72 | #define SYSINT2_IRQ_LAST ETHERNET_IRQ | ||
| 73 | |||
| 74 | /* | ||
| 75 | * GIU Interrupt Numbers | ||
| 76 | */ | ||
| 77 | #define GIU_IRQ_BASE 40 | ||
| 78 | #define GIU_IRQ(x) (GIU_IRQ_BASE + (x)) /* IRQ 40-71 */ | ||
| 79 | #define GIU_IRQ_LAST GIU_IRQ(31) | ||
| 80 | |||
| 81 | /* | ||
| 82 | * VRC4173 Interrupt Numbers | ||
| 83 | */ | ||
| 84 | #define VRC4173_IRQ_BASE 72 | ||
| 85 | #define VRC4173_IRQ(x) (VRC4173_IRQ_BASE + (x)) | ||
| 86 | #define VRC4173_USB_IRQ VRC4173_IRQ(0) | ||
| 87 | #define VRC4173_PCMCIA2_IRQ VRC4173_IRQ(1) | ||
| 88 | #define VRC4173_PCMCIA1_IRQ VRC4173_IRQ(2) | ||
| 89 | #define VRC4173_PS2CH2_IRQ VRC4173_IRQ(3) | ||
| 90 | #define VRC4173_PS2CH1_IRQ VRC4173_IRQ(4) | ||
| 91 | #define VRC4173_PIU_IRQ VRC4173_IRQ(5) | ||
| 92 | #define VRC4173_AIU_IRQ VRC4173_IRQ(6) | ||
| 93 | #define VRC4173_KIU_IRQ VRC4173_IRQ(7) | ||
| 94 | #define VRC4173_GIU_IRQ VRC4173_IRQ(8) | ||
| 95 | #define VRC4173_AC97_IRQ VRC4173_IRQ(9) | ||
| 96 | #define VRC4173_AC97INT1_IRQ VRC4173_IRQ(10) | ||
| 97 | /* RFU */ | ||
| 98 | #define VRC4173_DOZEPIU_IRQ VRC4173_IRQ(13) | ||
| 99 | #define VRC4173_IRQ_LAST VRC4173_DOZEPIU_IRQ | ||
| 100 | |||
| 101 | #endif /* __NEC_VR41XX_IRQ_H */ | ||
diff --git a/include/asm-mips/vr41xx/mpc30x.h b/include/asm-mips/vr41xx/mpc30x.h index a6cbe4da6667..1d67df843dc3 100644 --- a/include/asm-mips/vr41xx/mpc30x.h +++ b/include/asm-mips/vr41xx/mpc30x.h | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #ifndef __VICTOR_MPC30X_H | 20 | #ifndef __VICTOR_MPC30X_H |
| 21 | #define __VICTOR_MPC30X_H | 21 | #define __VICTOR_MPC30X_H |
| 22 | 22 | ||
| 23 | #include <asm/vr41xx/vr41xx.h> | 23 | #include <asm/vr41xx/irq.h> |
| 24 | 24 | ||
| 25 | /* | 25 | /* |
| 26 | * General-Purpose I/O Pin Number | 26 | * General-Purpose I/O Pin Number |
diff --git a/include/asm-mips/vr41xx/tb0219.h b/include/asm-mips/vr41xx/tb0219.h index b318b9612a83..dc981b4be0a4 100644 --- a/include/asm-mips/vr41xx/tb0219.h +++ b/include/asm-mips/vr41xx/tb0219.h | |||
| @@ -23,7 +23,7 @@ | |||
| 23 | #ifndef __TANBAC_TB0219_H | 23 | #ifndef __TANBAC_TB0219_H |
| 24 | #define __TANBAC_TB0219_H | 24 | #define __TANBAC_TB0219_H |
| 25 | 25 | ||
| 26 | #include <asm/vr41xx/vr41xx.h> | 26 | #include <asm/vr41xx/irq.h> |
| 27 | 27 | ||
| 28 | /* | 28 | /* |
| 29 | * General-Purpose I/O Pin Number | 29 | * General-Purpose I/O Pin Number |
diff --git a/include/asm-mips/vr41xx/tb0226.h b/include/asm-mips/vr41xx/tb0226.h index 2513f450e2d6..de527dcfa5f3 100644 --- a/include/asm-mips/vr41xx/tb0226.h +++ b/include/asm-mips/vr41xx/tb0226.h | |||
| @@ -20,7 +20,7 @@ | |||
| 20 | #ifndef __TANBAC_TB0226_H | 20 | #ifndef __TANBAC_TB0226_H |
| 21 | #define __TANBAC_TB0226_H | 21 | #define __TANBAC_TB0226_H |
| 22 | 22 | ||
| 23 | #include <asm/vr41xx/vr41xx.h> | 23 | #include <asm/vr41xx/irq.h> |
| 24 | 24 | ||
| 25 | /* | 25 | /* |
| 26 | * General-Purpose I/O Pin Number | 26 | * General-Purpose I/O Pin Number |
diff --git a/include/asm-mips/vr41xx/tb0287.h b/include/asm-mips/vr41xx/tb0287.h index dd9832313afe..61bead68abf0 100644 --- a/include/asm-mips/vr41xx/tb0287.h +++ b/include/asm-mips/vr41xx/tb0287.h | |||
| @@ -22,7 +22,7 @@ | |||
| 22 | #ifndef __TANBAC_TB0287_H | 22 | #ifndef __TANBAC_TB0287_H |
| 23 | #define __TANBAC_TB0287_H | 23 | #define __TANBAC_TB0287_H |
| 24 | 24 | ||
| 25 | #include <asm/vr41xx/vr41xx.h> | 25 | #include <asm/vr41xx/irq.h> |
| 26 | 26 | ||
| 27 | /* | 27 | /* |
| 28 | * General-Purpose I/O Pin Number | 28 | * General-Purpose I/O Pin Number |
diff --git a/include/asm-mips/vr41xx/vr41xx.h b/include/asm-mips/vr41xx/vr41xx.h index 70828d5fae9c..dd3eb3dc5886 100644 --- a/include/asm-mips/vr41xx/vr41xx.h +++ b/include/asm-mips/vr41xx/vr41xx.h | |||
| @@ -74,59 +74,6 @@ extern void vr41xx_mask_clock(vr41xx_clock_t clock); | |||
| 74 | /* | 74 | /* |
| 75 | * Interrupt Control Unit | 75 | * Interrupt Control Unit |
| 76 | */ | 76 | */ |
| 77 | /* CPU core Interrupt Numbers */ | ||
| 78 | #define MIPS_CPU_IRQ_BASE 0 | ||
| 79 | #define MIPS_CPU_IRQ(x) (MIPS_CPU_IRQ_BASE + (x)) | ||
| 80 | #define MIPS_SOFTINT0_IRQ MIPS_CPU_IRQ(0) | ||
| 81 | #define MIPS_SOFTINT1_IRQ MIPS_CPU_IRQ(1) | ||
| 82 | #define INT0_IRQ MIPS_CPU_IRQ(2) | ||
| 83 | #define INT1_IRQ MIPS_CPU_IRQ(3) | ||
| 84 | #define INT2_IRQ MIPS_CPU_IRQ(4) | ||
| 85 | #define INT3_IRQ MIPS_CPU_IRQ(5) | ||
| 86 | #define INT4_IRQ MIPS_CPU_IRQ(6) | ||
| 87 | #define TIMER_IRQ MIPS_CPU_IRQ(7) | ||
| 88 | |||
| 89 | /* SYINT1 Interrupt Numbers */ | ||
| 90 | #define SYSINT1_IRQ_BASE 8 | ||
| 91 | #define SYSINT1_IRQ(x) (SYSINT1_IRQ_BASE + (x)) | ||
| 92 | #define BATTRY_IRQ SYSINT1_IRQ(0) | ||
| 93 | #define POWER_IRQ SYSINT1_IRQ(1) | ||
| 94 | #define RTCLONG1_IRQ SYSINT1_IRQ(2) | ||
| 95 | #define ELAPSEDTIME_IRQ SYSINT1_IRQ(3) | ||
| 96 | /* RFU */ | ||
| 97 | #define PIU_IRQ SYSINT1_IRQ(5) | ||
| 98 | #define AIU_IRQ SYSINT1_IRQ(6) | ||
| 99 | #define KIU_IRQ SYSINT1_IRQ(7) | ||
| 100 | #define GIUINT_IRQ SYSINT1_IRQ(8) | ||
| 101 | #define SIU_IRQ SYSINT1_IRQ(9) | ||
| 102 | #define BUSERR_IRQ SYSINT1_IRQ(10) | ||
| 103 | #define SOFTINT_IRQ SYSINT1_IRQ(11) | ||
| 104 | #define CLKRUN_IRQ SYSINT1_IRQ(12) | ||
| 105 | #define DOZEPIU_IRQ SYSINT1_IRQ(13) | ||
| 106 | #define SYSINT1_IRQ_LAST DOZEPIU_IRQ | ||
| 107 | |||
| 108 | /* SYSINT2 Interrupt Numbers */ | ||
| 109 | #define SYSINT2_IRQ_BASE 24 | ||
| 110 | #define SYSINT2_IRQ(x) (SYSINT2_IRQ_BASE + (x)) | ||
| 111 | #define RTCLONG2_IRQ SYSINT2_IRQ(0) | ||
| 112 | #define LED_IRQ SYSINT2_IRQ(1) | ||
| 113 | #define HSP_IRQ SYSINT2_IRQ(2) | ||
| 114 | #define TCLOCK_IRQ SYSINT2_IRQ(3) | ||
| 115 | #define FIR_IRQ SYSINT2_IRQ(4) | ||
| 116 | #define CEU_IRQ SYSINT2_IRQ(4) /* same number as FIR_IRQ */ | ||
| 117 | #define DSIU_IRQ SYSINT2_IRQ(5) | ||
| 118 | #define PCI_IRQ SYSINT2_IRQ(6) | ||
| 119 | #define SCU_IRQ SYSINT2_IRQ(7) | ||
| 120 | #define CSI_IRQ SYSINT2_IRQ(8) | ||
| 121 | #define BCU_IRQ SYSINT2_IRQ(9) | ||
| 122 | #define ETHERNET_IRQ SYSINT2_IRQ(10) | ||
| 123 | #define SYSINT2_IRQ_LAST ETHERNET_IRQ | ||
| 124 | |||
| 125 | /* GIU Interrupt Numbers */ | ||
| 126 | #define GIU_IRQ_BASE 40 | ||
| 127 | #define GIU_IRQ(x) (GIU_IRQ_BASE + (x)) /* IRQ 40-71 */ | ||
| 128 | #define GIU_IRQ_LAST GIU_IRQ(31) | ||
| 129 | |||
| 130 | extern int vr41xx_set_intassign(unsigned int irq, unsigned char intassign); | 77 | extern int vr41xx_set_intassign(unsigned int irq, unsigned char intassign); |
| 131 | extern int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int, struct pt_regs *)); | 78 | extern int cascade_irq(unsigned int irq, int (*get_irq)(unsigned int, struct pt_regs *)); |
| 132 | 79 | ||
diff --git a/include/asm-mips/vr41xx/vrc4173.h b/include/asm-mips/vr41xx/vrc4173.h deleted file mode 100644 index 96fdcd54cec7..000000000000 --- a/include/asm-mips/vr41xx/vrc4173.h +++ /dev/null | |||
| @@ -1,221 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * vrc4173.h, Include file for NEC VRC4173. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2000 Michael R. McDonald | ||
| 5 | * Copyright (C) 2001-2003 Montavista Software Inc. | ||
| 6 | * Author: Yoichi Yuasa <yyuasa@mvista.com, or source@mvista.com> | ||
| 7 | * Copyright (C) 2004 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> | ||
| 8 | * Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org) | ||
| 9 | * | ||
| 10 | * This program is free software; you can redistribute it and/or modify | ||
| 11 | * it under the terms of the GNU General Public License as published by | ||
| 12 | * the Free Software Foundation; either version 2 of the License, or | ||
| 13 | * (at your option) any later version. | ||
| 14 | * | ||
| 15 | * This program is distributed in the hope that it will be useful, | ||
| 16 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | * GNU General Public License for more details. | ||
| 19 | * | ||
| 20 | * You should have received a copy of the GNU General Public License | ||
| 21 | * along with this program; if not, write to the Free Software | ||
| 22 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 23 | */ | ||
| 24 | #ifndef __NEC_VRC4173_H | ||
| 25 | #define __NEC_VRC4173_H | ||
| 26 | |||
| 27 | #include <asm/io.h> | ||
| 28 | |||
| 29 | /* | ||
| 30 | * Interrupt Number | ||
| 31 | */ | ||
| 32 | #define VRC4173_IRQ_BASE 72 | ||
| 33 | #define VRC4173_IRQ(x) (VRC4173_IRQ_BASE + (x)) | ||
| 34 | #define VRC4173_USB_IRQ VRC4173_IRQ(0) | ||
| 35 | #define VRC4173_PCMCIA2_IRQ VRC4173_IRQ(1) | ||
| 36 | #define VRC4173_PCMCIA1_IRQ VRC4173_IRQ(2) | ||
| 37 | #define VRC4173_PS2CH2_IRQ VRC4173_IRQ(3) | ||
| 38 | #define VRC4173_PS2CH1_IRQ VRC4173_IRQ(4) | ||
| 39 | #define VRC4173_PIU_IRQ VRC4173_IRQ(5) | ||
| 40 | #define VRC4173_AIU_IRQ VRC4173_IRQ(6) | ||
| 41 | #define VRC4173_KIU_IRQ VRC4173_IRQ(7) | ||
| 42 | #define VRC4173_GIU_IRQ VRC4173_IRQ(8) | ||
| 43 | #define VRC4173_AC97_IRQ VRC4173_IRQ(9) | ||
| 44 | #define VRC4173_AC97INT1_IRQ VRC4173_IRQ(10) | ||
| 45 | /* RFU */ | ||
| 46 | #define VRC4173_DOZEPIU_IRQ VRC4173_IRQ(13) | ||
| 47 | #define VRC4173_IRQ_LAST VRC4173_DOZEPIU_IRQ | ||
| 48 | |||
| 49 | /* | ||
| 50 | * PCI I/O accesses | ||
| 51 | */ | ||
| 52 | #ifdef CONFIG_VRC4173 | ||
| 53 | |||
| 54 | extern unsigned long vrc4173_io_offset; | ||
| 55 | |||
| 56 | #define set_vrc4173_io_offset(offset) do { vrc4173_io_offset = (offset); } while (0) | ||
| 57 | |||
| 58 | #define vrc4173_outb(val,port) outb((val), vrc4173_io_offset+(port)) | ||
| 59 | #define vrc4173_outw(val,port) outw((val), vrc4173_io_offset+(port)) | ||
| 60 | #define vrc4173_outl(val,port) outl((val), vrc4173_io_offset+(port)) | ||
| 61 | #define vrc4173_outb_p(val,port) outb_p((val), vrc4173_io_offset+(port)) | ||
| 62 | #define vrc4173_outw_p(val,port) outw_p((val), vrc4173_io_offset+(port)) | ||
| 63 | #define vrc4173_outl_p(val,port) outl_p((val), vrc4173_io_offset+(port)) | ||
| 64 | |||
| 65 | #define vrc4173_inb(port) inb(vrc4173_io_offset+(port)) | ||
| 66 | #define vrc4173_inw(port) inw(vrc4173_io_offset+(port)) | ||
| 67 | #define vrc4173_inl(port) inl(vrc4173_io_offset+(port)) | ||
| 68 | #define vrc4173_inb_p(port) inb_p(vrc4173_io_offset+(port)) | ||
| 69 | #define vrc4173_inw_p(port) inw_p(vrc4173_io_offset+(port)) | ||
| 70 | #define vrc4173_inl_p(port) inl_p(vrc4173_io_offset+(port)) | ||
| 71 | |||
| 72 | #define vrc4173_outsb(port,addr,count) outsb(vrc4173_io_offset+(port),(addr),(count)) | ||
| 73 | #define vrc4173_outsw(port,addr,count) outsw(vrc4173_io_offset+(port),(addr),(count)) | ||
| 74 | #define vrc4173_outsl(port,addr,count) outsl(vrc4173_io_offset+(port),(addr),(count)) | ||
| 75 | |||
| 76 | #define vrc4173_insb(port,addr,count) insb(vrc4173_io_offset+(port),(addr),(count)) | ||
| 77 | #define vrc4173_insw(port,addr,count) insw(vrc4173_io_offset+(port),(addr),(count)) | ||
| 78 | #define vrc4173_insl(port,addr,count) insl(vrc4173_io_offset+(port),(addr),(count)) | ||
| 79 | |||
| 80 | #else | ||
| 81 | |||
| 82 | #define set_vrc4173_io_offset(offset) do {} while (0) | ||
| 83 | |||
| 84 | #define vrc4173_outb(val,port) do {} while (0) | ||
| 85 | #define vrc4173_outw(val,port) do {} while (0) | ||
| 86 | #define vrc4173_outl(val,port) do {} while (0) | ||
| 87 | #define vrc4173_outb_p(val,port) do {} while (0) | ||
| 88 | #define vrc4173_outw_p(val,port) do {} while (0) | ||
| 89 | #define vrc4173_outl_p(val,port) do {} while (0) | ||
| 90 | |||
| 91 | #define vrc4173_inb(port) 0 | ||
| 92 | #define vrc4173_inw(port) 0 | ||
| 93 | #define vrc4173_inl(port) 0 | ||
| 94 | #define vrc4173_inb_p(port) 0 | ||
| 95 | #define vrc4173_inw_p(port) 0 | ||
| 96 | #define vrc4173_inl_p(port) 0 | ||
| 97 | |||
| 98 | #define vrc4173_outsb(port,addr,count) do {} while (0) | ||
| 99 | #define vrc4173_outsw(port,addr,count) do {} while (0) | ||
| 100 | #define vrc4173_outsl(port,addr,count) do {} while (0) | ||
| 101 | |||
| 102 | #define vrc4173_insb(port,addr,count) do {} while (0) | ||
| 103 | #define vrc4173_insw(port,addr,count) do {} while (0) | ||
| 104 | #define vrc4173_insl(port,addr,count) do {} while (0) | ||
| 105 | |||
| 106 | #endif | ||
| 107 | |||
| 108 | /* | ||
| 109 | * Clock Mask Unit | ||
| 110 | */ | ||
| 111 | typedef enum vrc4173_clock { | ||
| 112 | VRC4173_PIU_CLOCK, | ||
| 113 | VRC4173_KIU_CLOCK, | ||
| 114 | VRC4173_AIU_CLOCK, | ||
| 115 | VRC4173_PS2_CH1_CLOCK, | ||
| 116 | VRC4173_PS2_CH2_CLOCK, | ||
| 117 | VRC4173_USBU_PCI_CLOCK, | ||
| 118 | VRC4173_CARDU1_PCI_CLOCK, | ||
| 119 | VRC4173_CARDU2_PCI_CLOCK, | ||
| 120 | VRC4173_AC97U_PCI_CLOCK, | ||
| 121 | VRC4173_USBU_48MHz_CLOCK, | ||
| 122 | VRC4173_EXT_48MHz_CLOCK, | ||
| 123 | VRC4173_48MHz_CLOCK, | ||
| 124 | } vrc4173_clock_t; | ||
| 125 | |||
| 126 | #ifdef CONFIG_VRC4173 | ||
| 127 | |||
| 128 | extern void vrc4173_supply_clock(vrc4173_clock_t clock); | ||
| 129 | extern void vrc4173_mask_clock(vrc4173_clock_t clock); | ||
| 130 | |||
| 131 | #else | ||
| 132 | |||
| 133 | static inline void vrc4173_supply_clock(vrc4173_clock_t clock) {} | ||
| 134 | static inline void vrc4173_mask_clock(vrc4173_clock_t clock) {} | ||
| 135 | |||
| 136 | #endif | ||
| 137 | |||
| 138 | /* | ||
| 139 | * Interupt Control Unit | ||
| 140 | */ | ||
| 141 | |||
| 142 | #define VRC4173_PIUINT_COMMAND 0x0040 | ||
| 143 | #define VRC4173_PIUINT_DATA 0x0020 | ||
| 144 | #define VRC4173_PIUINT_PAGE1 0x0010 | ||
| 145 | #define VRC4173_PIUINT_PAGE0 0x0008 | ||
| 146 | #define VRC4173_PIUINT_DATALOST 0x0004 | ||
| 147 | #define VRC4173_PIUINT_STATUSCHANGE 0x0001 | ||
| 148 | |||
| 149 | #ifdef CONFIG_VRC4173 | ||
| 150 | |||
| 151 | extern void vrc4173_enable_piuint(uint16_t mask); | ||
| 152 | extern void vrc4173_disable_piuint(uint16_t mask); | ||
| 153 | |||
| 154 | #else | ||
| 155 | |||
| 156 | static inline void vrc4173_enable_piuint(uint16_t mask) {} | ||
| 157 | static inline void vrc4173_disable_piuint(uint16_t mask) {} | ||
| 158 | |||
| 159 | #endif | ||
| 160 | |||
| 161 | #define VRC4173_AIUINT_INPUT_DMAEND 0x0800 | ||
| 162 | #define VRC4173_AIUINT_INPUT_DMAHALT 0x0400 | ||
| 163 | #define VRC4173_AIUINT_INPUT_DATALOST 0x0200 | ||
| 164 | #define VRC4173_AIUINT_INPUT_DATA 0x0100 | ||
| 165 | #define VRC4173_AIUINT_OUTPUT_DMAEND 0x0008 | ||
| 166 | #define VRC4173_AIUINT_OUTPUT_DMAHALT 0x0004 | ||
| 167 | #define VRC4173_AIUINT_OUTPUT_NODATA 0x0002 | ||
| 168 | |||
| 169 | #ifdef CONFIG_VRC4173 | ||
| 170 | |||
| 171 | extern void vrc4173_enable_aiuint(uint16_t mask); | ||
| 172 | extern void vrc4173_disable_aiuint(uint16_t mask); | ||
| 173 | |||
| 174 | #else | ||
| 175 | |||
| 176 | static inline void vrc4173_enable_aiuint(uint16_t mask) {} | ||
| 177 | static inline void vrc4173_disable_aiuint(uint16_t mask) {} | ||
| 178 | |||
| 179 | #endif | ||
| 180 | |||
| 181 | #define VRC4173_KIUINT_DATALOST 0x0004 | ||
| 182 | #define VRC4173_KIUINT_DATAREADY 0x0002 | ||
| 183 | #define VRC4173_KIUINT_SCAN 0x0001 | ||
| 184 | |||
| 185 | #ifdef CONFIG_VRC4173 | ||
| 186 | |||
| 187 | extern void vrc4173_enable_kiuint(uint16_t mask); | ||
| 188 | extern void vrc4173_disable_kiuint(uint16_t mask); | ||
| 189 | |||
| 190 | #else | ||
| 191 | |||
| 192 | static inline void vrc4173_enable_kiuint(uint16_t mask) {} | ||
| 193 | static inline void vrc4173_disable_kiuint(uint16_t mask) {} | ||
| 194 | |||
| 195 | #endif | ||
| 196 | |||
| 197 | /* | ||
| 198 | * General-Purpose I/O Unit | ||
| 199 | */ | ||
| 200 | typedef enum vrc4173_function { | ||
| 201 | PS2_CHANNEL1, | ||
| 202 | PS2_CHANNEL2, | ||
| 203 | TOUCHPANEL, | ||
| 204 | KEYBOARD_8SCANLINES, | ||
| 205 | KEYBOARD_10SCANLINES, | ||
| 206 | KEYBOARD_12SCANLINES, | ||
| 207 | GPIO_0_15PINS, | ||
| 208 | GPIO_16_20PINS, | ||
| 209 | } vrc4173_function_t; | ||
| 210 | |||
| 211 | #ifdef CONFIG_VRC4173 | ||
| 212 | |||
| 213 | extern void vrc4173_select_function(vrc4173_function_t function); | ||
| 214 | |||
| 215 | #else | ||
| 216 | |||
| 217 | static inline void vrc4173_select_function(vrc4173_function_t function) {} | ||
| 218 | |||
| 219 | #endif | ||
| 220 | |||
| 221 | #endif /* __NEC_VRC4173_H */ | ||
diff --git a/include/asm-mips/vr41xx/workpad.h b/include/asm-mips/vr41xx/workpad.h deleted file mode 100644 index 6bfa9c009a9b..000000000000 --- a/include/asm-mips/vr41xx/workpad.h +++ /dev/null | |||
| @@ -1,43 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * workpad.h, Include file for IBM WorkPad z50. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2002-2004 Yoichi Yuasa <yoichi_yuasa@tripeaks.co.jp> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 19 | */ | ||
| 20 | #ifndef __IBM_WORKPAD_H | ||
| 21 | #define __IBM_WORKPAD_H | ||
| 22 | |||
| 23 | #include <asm/addrspace.h> | ||
| 24 | #include <asm/vr41xx/vr41xx.h> | ||
| 25 | |||
| 26 | /* | ||
| 27 | * Board specific address mapping | ||
| 28 | */ | ||
| 29 | #define VR41XX_ISA_MEM_BASE 0x10000000 | ||
| 30 | #define VR41XX_ISA_MEM_SIZE 0x04000000 | ||
| 31 | |||
| 32 | /* VR41XX_ISA_IO_BASE includes offset from real base. */ | ||
| 33 | #define VR41XX_ISA_IO_BASE 0x15000000 | ||
| 34 | #define VR41XX_ISA_IO_SIZE 0x03000000 | ||
| 35 | |||
| 36 | #define ISA_BUS_IO_BASE 0 | ||
| 37 | #define ISA_BUS_IO_SIZE VR41XX_ISA_IO_SIZE | ||
| 38 | |||
| 39 | #define IO_PORT_BASE KSEG1ADDR(VR41XX_ISA_IO_BASE) | ||
| 40 | #define IO_PORT_RESOURCE_START ISA_BUS_IO_BASE | ||
| 41 | #define IO_PORT_RESOURCE_END (ISA_BUS_IO_BASE + ISA_BUS_IO_SIZE - 1) | ||
| 42 | |||
| 43 | #endif /* __IBM_WORKPAD_H */ | ||
diff --git a/include/asm-parisc/system.h b/include/asm-parisc/system.h index 5fe2d2329ab5..74f037a39e6f 100644 --- a/include/asm-parisc/system.h +++ b/include/asm-parisc/system.h | |||
| @@ -143,8 +143,6 @@ static inline void set_eiem(unsigned long val) | |||
| 143 | #define read_barrier_depends() do { } while(0) | 143 | #define read_barrier_depends() do { } while(0) |
| 144 | 144 | ||
| 145 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 145 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 146 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 147 | |||
| 148 | 146 | ||
| 149 | #ifndef CONFIG_PA20 | 147 | #ifndef CONFIG_PA20 |
| 150 | /* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, | 148 | /* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, |
diff --git a/include/asm-powerpc/atomic.h b/include/asm-powerpc/atomic.h index bb3c0ab7e667..53283e2540b3 100644 --- a/include/asm-powerpc/atomic.h +++ b/include/asm-powerpc/atomic.h | |||
| @@ -27,8 +27,8 @@ static __inline__ void atomic_add(int a, atomic_t *v) | |||
| 27 | PPC405_ERR77(0,%3) | 27 | PPC405_ERR77(0,%3) |
| 28 | " stwcx. %0,0,%3 \n\ | 28 | " stwcx. %0,0,%3 \n\ |
| 29 | bne- 1b" | 29 | bne- 1b" |
| 30 | : "=&r" (t), "=m" (v->counter) | 30 | : "=&r" (t), "+m" (v->counter) |
| 31 | : "r" (a), "r" (&v->counter), "m" (v->counter) | 31 | : "r" (a), "r" (&v->counter) |
| 32 | : "cc"); | 32 | : "cc"); |
| 33 | } | 33 | } |
| 34 | 34 | ||
| @@ -63,8 +63,8 @@ static __inline__ void atomic_sub(int a, atomic_t *v) | |||
| 63 | PPC405_ERR77(0,%3) | 63 | PPC405_ERR77(0,%3) |
| 64 | " stwcx. %0,0,%3 \n\ | 64 | " stwcx. %0,0,%3 \n\ |
| 65 | bne- 1b" | 65 | bne- 1b" |
| 66 | : "=&r" (t), "=m" (v->counter) | 66 | : "=&r" (t), "+m" (v->counter) |
| 67 | : "r" (a), "r" (&v->counter), "m" (v->counter) | 67 | : "r" (a), "r" (&v->counter) |
| 68 | : "cc"); | 68 | : "cc"); |
| 69 | } | 69 | } |
| 70 | 70 | ||
| @@ -97,8 +97,8 @@ static __inline__ void atomic_inc(atomic_t *v) | |||
| 97 | PPC405_ERR77(0,%2) | 97 | PPC405_ERR77(0,%2) |
| 98 | " stwcx. %0,0,%2 \n\ | 98 | " stwcx. %0,0,%2 \n\ |
| 99 | bne- 1b" | 99 | bne- 1b" |
| 100 | : "=&r" (t), "=m" (v->counter) | 100 | : "=&r" (t), "+m" (v->counter) |
| 101 | : "r" (&v->counter), "m" (v->counter) | 101 | : "r" (&v->counter) |
| 102 | : "cc"); | 102 | : "cc"); |
| 103 | } | 103 | } |
| 104 | 104 | ||
| @@ -141,8 +141,8 @@ static __inline__ void atomic_dec(atomic_t *v) | |||
| 141 | PPC405_ERR77(0,%2)\ | 141 | PPC405_ERR77(0,%2)\ |
| 142 | " stwcx. %0,0,%2\n\ | 142 | " stwcx. %0,0,%2\n\ |
| 143 | bne- 1b" | 143 | bne- 1b" |
| 144 | : "=&r" (t), "=m" (v->counter) | 144 | : "=&r" (t), "+m" (v->counter) |
| 145 | : "r" (&v->counter), "m" (v->counter) | 145 | : "r" (&v->counter) |
| 146 | : "cc"); | 146 | : "cc"); |
| 147 | } | 147 | } |
| 148 | 148 | ||
| @@ -253,8 +253,8 @@ static __inline__ void atomic64_add(long a, atomic64_t *v) | |||
| 253 | add %0,%2,%0\n\ | 253 | add %0,%2,%0\n\ |
| 254 | stdcx. %0,0,%3 \n\ | 254 | stdcx. %0,0,%3 \n\ |
| 255 | bne- 1b" | 255 | bne- 1b" |
| 256 | : "=&r" (t), "=m" (v->counter) | 256 | : "=&r" (t), "+m" (v->counter) |
| 257 | : "r" (a), "r" (&v->counter), "m" (v->counter) | 257 | : "r" (a), "r" (&v->counter) |
| 258 | : "cc"); | 258 | : "cc"); |
| 259 | } | 259 | } |
| 260 | 260 | ||
| @@ -287,8 +287,8 @@ static __inline__ void atomic64_sub(long a, atomic64_t *v) | |||
| 287 | subf %0,%2,%0\n\ | 287 | subf %0,%2,%0\n\ |
| 288 | stdcx. %0,0,%3 \n\ | 288 | stdcx. %0,0,%3 \n\ |
| 289 | bne- 1b" | 289 | bne- 1b" |
| 290 | : "=&r" (t), "=m" (v->counter) | 290 | : "=&r" (t), "+m" (v->counter) |
| 291 | : "r" (a), "r" (&v->counter), "m" (v->counter) | 291 | : "r" (a), "r" (&v->counter) |
| 292 | : "cc"); | 292 | : "cc"); |
| 293 | } | 293 | } |
| 294 | 294 | ||
| @@ -319,8 +319,8 @@ static __inline__ void atomic64_inc(atomic64_t *v) | |||
| 319 | addic %0,%0,1\n\ | 319 | addic %0,%0,1\n\ |
| 320 | stdcx. %0,0,%2 \n\ | 320 | stdcx. %0,0,%2 \n\ |
| 321 | bne- 1b" | 321 | bne- 1b" |
| 322 | : "=&r" (t), "=m" (v->counter) | 322 | : "=&r" (t), "+m" (v->counter) |
| 323 | : "r" (&v->counter), "m" (v->counter) | 323 | : "r" (&v->counter) |
| 324 | : "cc"); | 324 | : "cc"); |
| 325 | } | 325 | } |
| 326 | 326 | ||
| @@ -361,8 +361,8 @@ static __inline__ void atomic64_dec(atomic64_t *v) | |||
| 361 | addic %0,%0,-1\n\ | 361 | addic %0,%0,-1\n\ |
| 362 | stdcx. %0,0,%2\n\ | 362 | stdcx. %0,0,%2\n\ |
| 363 | bne- 1b" | 363 | bne- 1b" |
| 364 | : "=&r" (t), "=m" (v->counter) | 364 | : "=&r" (t), "+m" (v->counter) |
| 365 | : "r" (&v->counter), "m" (v->counter) | 365 | : "r" (&v->counter) |
| 366 | : "cc"); | 366 | : "cc"); |
| 367 | } | 367 | } |
| 368 | 368 | ||
diff --git a/include/asm-powerpc/backlight.h b/include/asm-powerpc/backlight.h index a5e9e656e332..58d4b6f8d827 100644 --- a/include/asm-powerpc/backlight.h +++ b/include/asm-powerpc/backlight.h | |||
| @@ -16,13 +16,19 @@ | |||
| 16 | extern struct backlight_device *pmac_backlight; | 16 | extern struct backlight_device *pmac_backlight; |
| 17 | extern struct mutex pmac_backlight_mutex; | 17 | extern struct mutex pmac_backlight_mutex; |
| 18 | 18 | ||
| 19 | extern void pmac_backlight_calc_curve(struct fb_info*); | ||
| 20 | extern int pmac_backlight_curve_lookup(struct fb_info *info, int value); | 19 | extern int pmac_backlight_curve_lookup(struct fb_info *info, int value); |
| 21 | 20 | ||
| 22 | extern int pmac_has_backlight_type(const char *type); | 21 | extern int pmac_has_backlight_type(const char *type); |
| 23 | 22 | ||
| 24 | extern void pmac_backlight_key_up(void); | 23 | extern void pmac_backlight_key(int direction); |
| 25 | extern void pmac_backlight_key_down(void); | 24 | static inline void pmac_backlight_key_up(void) |
| 25 | { | ||
| 26 | pmac_backlight_key(0); | ||
| 27 | } | ||
| 28 | static inline void pmac_backlight_key_down(void) | ||
| 29 | { | ||
| 30 | pmac_backlight_key(1); | ||
| 31 | } | ||
| 26 | 32 | ||
| 27 | extern int pmac_backlight_set_legacy_brightness(int brightness); | 33 | extern int pmac_backlight_set_legacy_brightness(int brightness); |
| 28 | extern int pmac_backlight_get_legacy_brightness(void); | 34 | extern int pmac_backlight_get_legacy_brightness(void); |
diff --git a/include/asm-powerpc/bitops.h b/include/asm-powerpc/bitops.h index 76e2f08c3c83..c341063d0804 100644 --- a/include/asm-powerpc/bitops.h +++ b/include/asm-powerpc/bitops.h | |||
| @@ -65,8 +65,8 @@ static __inline__ void set_bit(int nr, volatile unsigned long *addr) | |||
| 65 | PPC405_ERR77(0,%3) | 65 | PPC405_ERR77(0,%3) |
| 66 | PPC_STLCX "%0,0,%3\n" | 66 | PPC_STLCX "%0,0,%3\n" |
| 67 | "bne- 1b" | 67 | "bne- 1b" |
| 68 | : "=&r"(old), "=m"(*p) | 68 | : "=&r" (old), "+m" (*p) |
| 69 | : "r"(mask), "r"(p), "m"(*p) | 69 | : "r" (mask), "r" (p) |
| 70 | : "cc" ); | 70 | : "cc" ); |
| 71 | } | 71 | } |
| 72 | 72 | ||
| @@ -82,8 +82,8 @@ static __inline__ void clear_bit(int nr, volatile unsigned long *addr) | |||
| 82 | PPC405_ERR77(0,%3) | 82 | PPC405_ERR77(0,%3) |
| 83 | PPC_STLCX "%0,0,%3\n" | 83 | PPC_STLCX "%0,0,%3\n" |
| 84 | "bne- 1b" | 84 | "bne- 1b" |
| 85 | : "=&r"(old), "=m"(*p) | 85 | : "=&r" (old), "+m" (*p) |
| 86 | : "r"(mask), "r"(p), "m"(*p) | 86 | : "r" (mask), "r" (p) |
| 87 | : "cc" ); | 87 | : "cc" ); |
| 88 | } | 88 | } |
| 89 | 89 | ||
| @@ -99,8 +99,8 @@ static __inline__ void change_bit(int nr, volatile unsigned long *addr) | |||
| 99 | PPC405_ERR77(0,%3) | 99 | PPC405_ERR77(0,%3) |
| 100 | PPC_STLCX "%0,0,%3\n" | 100 | PPC_STLCX "%0,0,%3\n" |
| 101 | "bne- 1b" | 101 | "bne- 1b" |
| 102 | : "=&r"(old), "=m"(*p) | 102 | : "=&r" (old), "+m" (*p) |
| 103 | : "r"(mask), "r"(p), "m"(*p) | 103 | : "r" (mask), "r" (p) |
| 104 | : "cc" ); | 104 | : "cc" ); |
| 105 | } | 105 | } |
| 106 | 106 | ||
| @@ -179,8 +179,8 @@ static __inline__ void set_bits(unsigned long mask, unsigned long *addr) | |||
| 179 | "or %0,%0,%2\n" | 179 | "or %0,%0,%2\n" |
| 180 | PPC_STLCX "%0,0,%3\n" | 180 | PPC_STLCX "%0,0,%3\n" |
| 181 | "bne- 1b" | 181 | "bne- 1b" |
| 182 | : "=&r" (old), "=m" (*addr) | 182 | : "=&r" (old), "+m" (*addr) |
| 183 | : "r" (mask), "r" (addr), "m" (*addr) | 183 | : "r" (mask), "r" (addr) |
| 184 | : "cc"); | 184 | : "cc"); |
| 185 | } | 185 | } |
| 186 | 186 | ||
diff --git a/include/asm-powerpc/irq.h b/include/asm-powerpc/irq.h index e05754752028..d903a62959da 100644 --- a/include/asm-powerpc/irq.h +++ b/include/asm-powerpc/irq.h | |||
| @@ -83,25 +83,24 @@ struct irq_host_ops { | |||
| 83 | int (*match)(struct irq_host *h, struct device_node *node); | 83 | int (*match)(struct irq_host *h, struct device_node *node); |
| 84 | 84 | ||
| 85 | /* Create or update a mapping between a virtual irq number and a hw | 85 | /* Create or update a mapping between a virtual irq number and a hw |
| 86 | * irq number. This can be called several times for the same mapping | 86 | * irq number. This is called only once for a given mapping. |
| 87 | * but with different flags, though unmap shall always be called | ||
| 88 | * before the virq->hw mapping is changed. | ||
| 89 | */ | 87 | */ |
| 90 | int (*map)(struct irq_host *h, unsigned int virq, | 88 | int (*map)(struct irq_host *h, unsigned int virq, irq_hw_number_t hw); |
| 91 | irq_hw_number_t hw, unsigned int flags); | ||
| 92 | 89 | ||
| 93 | /* Dispose of such a mapping */ | 90 | /* Dispose of such a mapping */ |
| 94 | void (*unmap)(struct irq_host *h, unsigned int virq); | 91 | void (*unmap)(struct irq_host *h, unsigned int virq); |
| 95 | 92 | ||
| 96 | /* Translate device-tree interrupt specifier from raw format coming | 93 | /* Translate device-tree interrupt specifier from raw format coming |
| 97 | * from the firmware to a irq_hw_number_t (interrupt line number) and | 94 | * from the firmware to a irq_hw_number_t (interrupt line number) and |
| 98 | * trigger flags that can be passed to irq_create_mapping(). | 95 | * type (sense) that can be passed to set_irq_type(). In the absence |
| 99 | * If no translation is provided, raw format is assumed to be one cell | 96 | * of this callback, irq_create_of_mapping() and irq_of_parse_and_map() |
| 100 | * for interrupt line and default sense. | 97 | * will return the hw number in the first cell and IRQ_TYPE_NONE for |
| 98 | * the type (which amount to keeping whatever default value the | ||
| 99 | * interrupt controller has for that line) | ||
| 101 | */ | 100 | */ |
| 102 | int (*xlate)(struct irq_host *h, struct device_node *ctrler, | 101 | int (*xlate)(struct irq_host *h, struct device_node *ctrler, |
| 103 | u32 *intspec, unsigned int intsize, | 102 | u32 *intspec, unsigned int intsize, |
| 104 | irq_hw_number_t *out_hwirq, unsigned int *out_flags); | 103 | irq_hw_number_t *out_hwirq, unsigned int *out_type); |
| 105 | }; | 104 | }; |
| 106 | 105 | ||
| 107 | struct irq_host { | 106 | struct irq_host { |
| @@ -193,25 +192,14 @@ extern void irq_set_virq_count(unsigned int count); | |||
| 193 | * irq_create_mapping - Map a hardware interrupt into linux virq space | 192 | * irq_create_mapping - Map a hardware interrupt into linux virq space |
| 194 | * @host: host owning this hardware interrupt or NULL for default host | 193 | * @host: host owning this hardware interrupt or NULL for default host |
| 195 | * @hwirq: hardware irq number in that host space | 194 | * @hwirq: hardware irq number in that host space |
| 196 | * @flags: flags passed to the controller. contains the trigger type among | ||
| 197 | * others. Use IRQ_TYPE_* defined in include/linux/irq.h | ||
| 198 | * | 195 | * |
| 199 | * Only one mapping per hardware interrupt is permitted. Returns a linux | 196 | * Only one mapping per hardware interrupt is permitted. Returns a linux |
| 200 | * virq number. The flags can be used to provide sense information to the | 197 | * virq number. |
| 201 | * controller (typically extracted from the device-tree). If no information | 198 | * If the sense/trigger is to be specified, set_irq_type() should be called |
| 202 | * is passed, the controller defaults will apply (for example, xics can only | 199 | * on the number returned from that call. |
| 203 | * do edge so flags are irrelevant for some pseries specific irqs). | ||
| 204 | * | ||
| 205 | * The device-tree generally contains the trigger info in an encoding that is | ||
| 206 | * specific to a given type of controller. In that case, you can directly use | ||
| 207 | * host->ops->trigger_xlate() to translate that. | ||
| 208 | * | ||
| 209 | * It is recommended that new PICs that don't have existing OF bindings chose | ||
| 210 | * to use a representation of triggers identical to linux. | ||
| 211 | */ | 200 | */ |
| 212 | extern unsigned int irq_create_mapping(struct irq_host *host, | 201 | extern unsigned int irq_create_mapping(struct irq_host *host, |
| 213 | irq_hw_number_t hwirq, | 202 | irq_hw_number_t hwirq); |
| 214 | unsigned int flags); | ||
| 215 | 203 | ||
| 216 | 204 | ||
| 217 | /*** | 205 | /*** |
| @@ -295,7 +283,7 @@ extern void irq_free_virt(unsigned int virq, unsigned int count); | |||
| 295 | * | 283 | * |
| 296 | * This function is identical to irq_create_mapping except that it takes | 284 | * This function is identical to irq_create_mapping except that it takes |
| 297 | * as input informations straight from the device-tree (typically the results | 285 | * as input informations straight from the device-tree (typically the results |
| 298 | * of the of_irq_map_*() functions | 286 | * of the of_irq_map_*() functions. |
| 299 | */ | 287 | */ |
| 300 | extern unsigned int irq_create_of_mapping(struct device_node *controller, | 288 | extern unsigned int irq_create_of_mapping(struct device_node *controller, |
| 301 | u32 *intspec, unsigned int intsize); | 289 | u32 *intspec, unsigned int intsize); |
diff --git a/include/asm-powerpc/system.h b/include/asm-powerpc/system.h index d075725bf444..7307aa775671 100644 --- a/include/asm-powerpc/system.h +++ b/include/asm-powerpc/system.h | |||
| @@ -39,7 +39,6 @@ | |||
| 39 | #define read_barrier_depends() do { } while(0) | 39 | #define read_barrier_depends() do { } while(0) |
| 40 | 40 | ||
| 41 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 41 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 42 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 43 | 42 | ||
| 44 | #ifdef __KERNEL__ | 43 | #ifdef __KERNEL__ |
| 45 | #ifdef CONFIG_SMP | 44 | #ifdef CONFIG_SMP |
| @@ -220,8 +219,8 @@ __xchg_u32(volatile void *p, unsigned long val) | |||
| 220 | " stwcx. %3,0,%2 \n\ | 219 | " stwcx. %3,0,%2 \n\ |
| 221 | bne- 1b" | 220 | bne- 1b" |
| 222 | ISYNC_ON_SMP | 221 | ISYNC_ON_SMP |
| 223 | : "=&r" (prev), "=m" (*(volatile unsigned int *)p) | 222 | : "=&r" (prev), "+m" (*(volatile unsigned int *)p) |
| 224 | : "r" (p), "r" (val), "m" (*(volatile unsigned int *)p) | 223 | : "r" (p), "r" (val) |
| 225 | : "cc", "memory"); | 224 | : "cc", "memory"); |
| 226 | 225 | ||
| 227 | return prev; | 226 | return prev; |
| @@ -240,8 +239,8 @@ __xchg_u64(volatile void *p, unsigned long val) | |||
| 240 | " stdcx. %3,0,%2 \n\ | 239 | " stdcx. %3,0,%2 \n\ |
| 241 | bne- 1b" | 240 | bne- 1b" |
| 242 | ISYNC_ON_SMP | 241 | ISYNC_ON_SMP |
| 243 | : "=&r" (prev), "=m" (*(volatile unsigned long *)p) | 242 | : "=&r" (prev), "+m" (*(volatile unsigned long *)p) |
| 244 | : "r" (p), "r" (val), "m" (*(volatile unsigned long *)p) | 243 | : "r" (p), "r" (val) |
| 245 | : "cc", "memory"); | 244 | : "cc", "memory"); |
| 246 | 245 | ||
| 247 | return prev; | 246 | return prev; |
| @@ -299,8 +298,8 @@ __cmpxchg_u32(volatile unsigned int *p, unsigned long old, unsigned long new) | |||
| 299 | ISYNC_ON_SMP | 298 | ISYNC_ON_SMP |
| 300 | "\n\ | 299 | "\n\ |
| 301 | 2:" | 300 | 2:" |
| 302 | : "=&r" (prev), "=m" (*p) | 301 | : "=&r" (prev), "+m" (*p) |
| 303 | : "r" (p), "r" (old), "r" (new), "m" (*p) | 302 | : "r" (p), "r" (old), "r" (new) |
| 304 | : "cc", "memory"); | 303 | : "cc", "memory"); |
| 305 | 304 | ||
| 306 | return prev; | 305 | return prev; |
| @@ -322,8 +321,8 @@ __cmpxchg_u64(volatile unsigned long *p, unsigned long old, unsigned long new) | |||
| 322 | ISYNC_ON_SMP | 321 | ISYNC_ON_SMP |
| 323 | "\n\ | 322 | "\n\ |
| 324 | 2:" | 323 | 2:" |
| 325 | : "=&r" (prev), "=m" (*p) | 324 | : "=&r" (prev), "+m" (*p) |
| 326 | : "r" (p), "r" (old), "r" (new), "m" (*p) | 325 | : "r" (p), "r" (old), "r" (new) |
| 327 | : "cc", "memory"); | 326 | : "cc", "memory"); |
| 328 | 327 | ||
| 329 | return prev; | 328 | return prev; |
diff --git a/include/asm-ppc/system.h b/include/asm-ppc/system.h index fb49c0c49ea1..738943584c01 100644 --- a/include/asm-ppc/system.h +++ b/include/asm-ppc/system.h | |||
| @@ -33,7 +33,6 @@ | |||
| 33 | #define read_barrier_depends() do { } while(0) | 33 | #define read_barrier_depends() do { } while(0) |
| 34 | 34 | ||
| 35 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 35 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 36 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 37 | 36 | ||
| 38 | #ifdef CONFIG_SMP | 37 | #ifdef CONFIG_SMP |
| 39 | #define smp_mb() mb() | 38 | #define smp_mb() mb() |
diff --git a/include/asm-s390/bug.h b/include/asm-s390/bug.h index 7ddaa05b98d8..876898363944 100644 --- a/include/asm-s390/bug.h +++ b/include/asm-s390/bug.h | |||
| @@ -5,9 +5,18 @@ | |||
| 5 | 5 | ||
| 6 | #ifdef CONFIG_BUG | 6 | #ifdef CONFIG_BUG |
| 7 | 7 | ||
| 8 | static inline __attribute__((noreturn)) void __do_illegal_op(void) | ||
| 9 | { | ||
| 10 | #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) | ||
| 11 | __builtin_trap(); | ||
| 12 | #else | ||
| 13 | asm volatile(".long 0"); | ||
| 14 | #endif | ||
| 15 | } | ||
| 16 | |||
| 8 | #define BUG() do { \ | 17 | #define BUG() do { \ |
| 9 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ | 18 | printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \ |
| 10 | __builtin_trap(); \ | 19 | __do_illegal_op(); \ |
| 11 | } while (0) | 20 | } while (0) |
| 12 | 21 | ||
| 13 | #define HAVE_ARCH_BUG | 22 | #define HAVE_ARCH_BUG |
diff --git a/include/asm-s390/ccwdev.h b/include/asm-s390/ccwdev.h index 12456cb2f882..58c70acffc73 100644 --- a/include/asm-s390/ccwdev.h +++ b/include/asm-s390/ccwdev.h | |||
| @@ -63,7 +63,7 @@ ccw_device_id_match(const struct ccw_device_id *array, | |||
| 63 | return id; | 63 | return id; |
| 64 | } | 64 | } |
| 65 | 65 | ||
| 66 | return 0; | 66 | return NULL; |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | /* The struct ccw device is our replacement for the globally accessible | 69 | /* The struct ccw device is our replacement for the globally accessible |
diff --git a/include/asm-s390/cio.h b/include/asm-s390/cio.h index 2b1619306351..28fdd6e2b8ba 100644 --- a/include/asm-s390/cio.h +++ b/include/asm-s390/cio.h | |||
| @@ -276,6 +276,8 @@ extern void wait_cons_dev(void); | |||
| 276 | 276 | ||
| 277 | extern void clear_all_subchannels(void); | 277 | extern void clear_all_subchannels(void); |
| 278 | 278 | ||
| 279 | extern void cio_reset_channel_paths(void); | ||
| 280 | |||
| 279 | extern void css_schedule_reprobe(void); | 281 | extern void css_schedule_reprobe(void); |
| 280 | 282 | ||
| 281 | #endif | 283 | #endif |
diff --git a/include/asm-s390/futex.h b/include/asm-s390/futex.h index 1802775568b9..ffedf14f89f6 100644 --- a/include/asm-s390/futex.h +++ b/include/asm-s390/futex.h | |||
| @@ -98,9 +98,10 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) | |||
| 98 | 98 | ||
| 99 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) | 99 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) |
| 100 | return -EFAULT; | 100 | return -EFAULT; |
| 101 | asm volatile(" cs %1,%4,0(%5)\n" | 101 | asm volatile(" sacf 256\n" |
| 102 | " cs %1,%4,0(%5)\n" | ||
| 102 | "0: lr %0,%1\n" | 103 | "0: lr %0,%1\n" |
| 103 | "1:\n" | 104 | "1: sacf 0\n" |
| 104 | #ifndef __s390x__ | 105 | #ifndef __s390x__ |
| 105 | ".section __ex_table,\"a\"\n" | 106 | ".section __ex_table,\"a\"\n" |
| 106 | " .align 4\n" | 107 | " .align 4\n" |
diff --git a/include/asm-s390/irqflags.h b/include/asm-s390/irqflags.h index 65f4db627e7a..3b566a5b3cc7 100644 --- a/include/asm-s390/irqflags.h +++ b/include/asm-s390/irqflags.h | |||
| @@ -25,16 +25,22 @@ | |||
| 25 | __flags; \ | 25 | __flags; \ |
| 26 | }) | 26 | }) |
| 27 | 27 | ||
| 28 | #define raw_local_save_flags(x) \ | 28 | #define raw_local_save_flags(x) \ |
| 29 | __asm__ __volatile__("stosm 0(%1),0" : "=m" (x) : "a" (&x), "m" (x) ) | 29 | do { \ |
| 30 | 30 | typecheck(unsigned long, x); \ | |
| 31 | #define raw_local_irq_restore(x) \ | 31 | __asm__ __volatile__("stosm 0(%1),0" : "=m" (x) : "a" (&x), "m" (x) ); \ |
| 32 | __asm__ __volatile__("ssm 0(%0)" : : "a" (&x), "m" (x) : "memory") | 32 | } while (0) |
| 33 | |||
| 34 | #define raw_local_irq_restore(x) \ | ||
| 35 | do { \ | ||
| 36 | typecheck(unsigned long, x); \ | ||
| 37 | __asm__ __volatile__("ssm 0(%0)" : : "a" (&x), "m" (x) : "memory"); \ | ||
| 38 | } while (0) | ||
| 33 | 39 | ||
| 34 | #define raw_irqs_disabled() \ | 40 | #define raw_irqs_disabled() \ |
| 35 | ({ \ | 41 | ({ \ |
| 36 | unsigned long flags; \ | 42 | unsigned long flags; \ |
| 37 | local_save_flags(flags); \ | 43 | raw_local_save_flags(flags); \ |
| 38 | !((flags >> __FLAG_SHIFT) & 3); \ | 44 | !((flags >> __FLAG_SHIFT) & 3); \ |
| 39 | }) | 45 | }) |
| 40 | 46 | ||
diff --git a/include/asm-s390/pgalloc.h b/include/asm-s390/pgalloc.h index 3002fda89d33..a78e853e0dd5 100644 --- a/include/asm-s390/pgalloc.h +++ b/include/asm-s390/pgalloc.h | |||
| @@ -142,7 +142,7 @@ pte_alloc_one(struct mm_struct *mm, unsigned long vmaddr) | |||
| 142 | pte_t *pte = pte_alloc_one_kernel(mm, vmaddr); | 142 | pte_t *pte = pte_alloc_one_kernel(mm, vmaddr); |
| 143 | if (pte) | 143 | if (pte) |
| 144 | return virt_to_page(pte); | 144 | return virt_to_page(pte); |
| 145 | return 0; | 145 | return NULL; |
| 146 | } | 146 | } |
| 147 | 147 | ||
| 148 | static inline void pte_free_kernel(pte_t *pte) | 148 | static inline void pte_free_kernel(pte_t *pte) |
diff --git a/include/asm-s390/processor.h b/include/asm-s390/processor.h index c5cbc4bd8414..5b71d3731723 100644 --- a/include/asm-s390/processor.h +++ b/include/asm-s390/processor.h | |||
| @@ -199,15 +199,13 @@ unsigned long get_wchan(struct task_struct *p); | |||
| 199 | /* | 199 | /* |
| 200 | * Give up the time slice of the virtual PU. | 200 | * Give up the time slice of the virtual PU. |
| 201 | */ | 201 | */ |
| 202 | #ifndef __s390x__ | 202 | static inline void cpu_relax(void) |
| 203 | # define cpu_relax() asm volatile ("diag 0,0,68" : : : "memory") | 203 | { |
| 204 | #else /* __s390x__ */ | 204 | if (MACHINE_HAS_DIAG44) |
| 205 | # define cpu_relax() \ | 205 | asm volatile ("diag 0,0,68" : : : "memory"); |
| 206 | do { \ | 206 | else |
| 207 | if (MACHINE_HAS_DIAG44) \ | 207 | barrier(); |
| 208 | asm volatile ("diag 0,0,68" : : : "memory"); \ | 208 | } |
| 209 | } while (0) | ||
| 210 | #endif /* __s390x__ */ | ||
| 211 | 209 | ||
| 212 | /* | 210 | /* |
| 213 | * Set PSW to specified value. | 211 | * Set PSW to specified value. |
diff --git a/include/asm-s390/setup.h b/include/asm-s390/setup.h index da3fd4a7bb32..19e31979309a 100644 --- a/include/asm-s390/setup.h +++ b/include/asm-s390/setup.h | |||
| @@ -40,15 +40,16 @@ extern unsigned long machine_flags; | |||
| 40 | #define MACHINE_IS_VM (machine_flags & 1) | 40 | #define MACHINE_IS_VM (machine_flags & 1) |
| 41 | #define MACHINE_IS_P390 (machine_flags & 4) | 41 | #define MACHINE_IS_P390 (machine_flags & 4) |
| 42 | #define MACHINE_HAS_MVPG (machine_flags & 16) | 42 | #define MACHINE_HAS_MVPG (machine_flags & 16) |
| 43 | #define MACHINE_HAS_DIAG44 (machine_flags & 32) | ||
| 44 | #define MACHINE_HAS_IDTE (machine_flags & 128) | 43 | #define MACHINE_HAS_IDTE (machine_flags & 128) |
| 45 | 44 | ||
| 46 | #ifndef __s390x__ | 45 | #ifndef __s390x__ |
| 47 | #define MACHINE_HAS_IEEE (machine_flags & 2) | 46 | #define MACHINE_HAS_IEEE (machine_flags & 2) |
| 48 | #define MACHINE_HAS_CSP (machine_flags & 8) | 47 | #define MACHINE_HAS_CSP (machine_flags & 8) |
| 48 | #define MACHINE_HAS_DIAG44 (1) | ||
| 49 | #else /* __s390x__ */ | 49 | #else /* __s390x__ */ |
| 50 | #define MACHINE_HAS_IEEE (1) | 50 | #define MACHINE_HAS_IEEE (1) |
| 51 | #define MACHINE_HAS_CSP (1) | 51 | #define MACHINE_HAS_CSP (1) |
| 52 | #define MACHINE_HAS_DIAG44 (machine_flags & 32) | ||
| 52 | #endif /* __s390x__ */ | 53 | #endif /* __s390x__ */ |
| 53 | 54 | ||
| 54 | 55 | ||
diff --git a/include/asm-s390/system.h b/include/asm-s390/system.h index 9ab186ffde23..16040048cd1b 100644 --- a/include/asm-s390/system.h +++ b/include/asm-s390/system.h | |||
| @@ -128,8 +128,13 @@ extern void account_system_vtime(struct task_struct *); | |||
| 128 | 128 | ||
| 129 | #define nop() __asm__ __volatile__ ("nop") | 129 | #define nop() __asm__ __volatile__ ("nop") |
| 130 | 130 | ||
| 131 | #define xchg(ptr,x) \ | 131 | #define xchg(ptr,x) \ |
| 132 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(void *)(ptr),sizeof(*(ptr)))) | 132 | ({ \ |
| 133 | __typeof__(*(ptr)) __ret; \ | ||
| 134 | __ret = (__typeof__(*(ptr))) \ | ||
| 135 | __xchg((unsigned long)(x), (void *)(ptr),sizeof(*(ptr))); \ | ||
| 136 | __ret; \ | ||
| 137 | }) | ||
| 133 | 138 | ||
| 134 | static inline unsigned long __xchg(unsigned long x, void * ptr, int size) | 139 | static inline unsigned long __xchg(unsigned long x, void * ptr, int size) |
| 135 | { | 140 | { |
| @@ -299,7 +304,6 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) | |||
| 299 | 304 | ||
| 300 | 305 | ||
| 301 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 306 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 302 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 303 | 307 | ||
| 304 | #ifdef __s390x__ | 308 | #ifdef __s390x__ |
| 305 | 309 | ||
diff --git a/include/asm-s390/timex.h b/include/asm-s390/timex.h index 4848057dafe4..5d0332a4c2bd 100644 --- a/include/asm-s390/timex.h +++ b/include/asm-s390/timex.h | |||
| @@ -19,7 +19,7 @@ static inline cycles_t get_cycles(void) | |||
| 19 | { | 19 | { |
| 20 | cycles_t cycles; | 20 | cycles_t cycles; |
| 21 | 21 | ||
| 22 | __asm__("stck 0(%1)" : "=m" (cycles) : "a" (&cycles) : "cc"); | 22 | __asm__ __volatile__ ("stck 0(%1)" : "=m" (cycles) : "a" (&cycles) : "cc"); |
| 23 | return cycles >> 2; | 23 | return cycles >> 2; |
| 24 | } | 24 | } |
| 25 | 25 | ||
| @@ -27,7 +27,7 @@ static inline unsigned long long get_clock (void) | |||
| 27 | { | 27 | { |
| 28 | unsigned long long clk; | 28 | unsigned long long clk; |
| 29 | 29 | ||
| 30 | __asm__("stck 0(%1)" : "=m" (clk) : "a" (&clk) : "cc"); | 30 | __asm__ __volatile__ ("stck 0(%1)" : "=m" (clk) : "a" (&clk) : "cc"); |
| 31 | return clk; | 31 | return clk; |
| 32 | } | 32 | } |
| 33 | 33 | ||
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h index fa5bd2d8803e..eeb0f48bb99e 100644 --- a/include/asm-sh/processor.h +++ b/include/asm-sh/processor.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | #define __ASM_SH_PROCESSOR_H | 9 | #define __ASM_SH_PROCESSOR_H |
| 10 | #ifdef __KERNEL__ | 10 | #ifdef __KERNEL__ |
| 11 | 11 | ||
| 12 | #include <linux/compiler.h> | ||
| 12 | #include <asm/page.h> | 13 | #include <asm/page.h> |
| 13 | #include <asm/types.h> | 14 | #include <asm/types.h> |
| 14 | #include <asm/cache.h> | 15 | #include <asm/cache.h> |
| @@ -263,7 +264,7 @@ extern unsigned long get_wchan(struct task_struct *p); | |||
| 263 | #define KSTK_ESP(tsk) ((tsk)->thread.sp) | 264 | #define KSTK_ESP(tsk) ((tsk)->thread.sp) |
| 264 | 265 | ||
| 265 | #define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") | 266 | #define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") |
| 266 | #define cpu_relax() do { } while (0) | 267 | #define cpu_relax() barrier() |
| 267 | 268 | ||
| 268 | #endif /* __KERNEL__ */ | 269 | #endif /* __KERNEL__ */ |
| 269 | #endif /* __ASM_SH_PROCESSOR_H */ | 270 | #endif /* __ASM_SH_PROCESSOR_H */ |
diff --git a/include/asm-sh/system.h b/include/asm-sh/system.h index ce2e60664a86..ad35ad4958f4 100644 --- a/include/asm-sh/system.h +++ b/include/asm-sh/system.h | |||
| @@ -101,7 +101,6 @@ extern void __xchg_called_with_bad_pointer(void); | |||
| 101 | #endif | 101 | #endif |
| 102 | 102 | ||
| 103 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | 103 | #define set_mb(var, value) do { xchg(&var, value); } while (0) |
| 104 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 105 | 104 | ||
| 106 | /* Interrupt Control */ | 105 | /* Interrupt Control */ |
| 107 | static __inline__ void local_irq_enable(void) | 106 | static __inline__ void local_irq_enable(void) |
diff --git a/include/asm-sh64/processor.h b/include/asm-sh64/processor.h index 1bf252dad824..eb2bee4b47b9 100644 --- a/include/asm-sh64/processor.h +++ b/include/asm-sh64/processor.h | |||
| @@ -22,6 +22,7 @@ | |||
| 22 | #include <asm/cache.h> | 22 | #include <asm/cache.h> |
| 23 | #include <asm/registers.h> | 23 | #include <asm/registers.h> |
| 24 | #include <linux/threads.h> | 24 | #include <linux/threads.h> |
| 25 | #include <linux/compiler.h> | ||
| 25 | 26 | ||
| 26 | /* | 27 | /* |
| 27 | * Default implementation of macro that returns current | 28 | * Default implementation of macro that returns current |
| @@ -279,7 +280,7 @@ extern unsigned long get_wchan(struct task_struct *p); | |||
| 279 | #define KSTK_EIP(tsk) ((tsk)->thread.pc) | 280 | #define KSTK_EIP(tsk) ((tsk)->thread.pc) |
| 280 | #define KSTK_ESP(tsk) ((tsk)->thread.sp) | 281 | #define KSTK_ESP(tsk) ((tsk)->thread.sp) |
| 281 | 282 | ||
| 282 | #define cpu_relax() do { } while (0) | 283 | #define cpu_relax() barrier() |
| 283 | 284 | ||
| 284 | #endif /* __ASSEMBLY__ */ | 285 | #endif /* __ASSEMBLY__ */ |
| 285 | #endif /* __ASM_SH64_PROCESSOR_H */ | 286 | #endif /* __ASM_SH64_PROCESSOR_H */ |
diff --git a/include/asm-sh64/system.h b/include/asm-sh64/system.h index 7606f6e1f01e..87ef6f1ad5a4 100644 --- a/include/asm-sh64/system.h +++ b/include/asm-sh64/system.h | |||
| @@ -66,7 +66,6 @@ extern void __xchg_called_with_bad_pointer(void); | |||
| 66 | 66 | ||
| 67 | #define set_rmb(var, value) do { xchg(&var, value); } while (0) | 67 | #define set_rmb(var, value) do { xchg(&var, value); } while (0) |
| 68 | #define set_mb(var, value) set_rmb(var, value) | 68 | #define set_mb(var, value) set_rmb(var, value) |
| 69 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 70 | 69 | ||
| 71 | /* Interrupt Control */ | 70 | /* Interrupt Control */ |
| 72 | #ifndef HARD_CLI | 71 | #ifndef HARD_CLI |
diff --git a/include/asm-sparc/oplib.h b/include/asm-sparc/oplib.h index f283f8aaf6a9..91691e52c058 100644 --- a/include/asm-sparc/oplib.h +++ b/include/asm-sparc/oplib.h | |||
| @@ -267,11 +267,6 @@ extern void prom_getstring(int node, char *prop, char *buf, int bufsize); | |||
| 267 | /* Does the passed node have the given "name"? YES=1 NO=0 */ | 267 | /* Does the passed node have the given "name"? YES=1 NO=0 */ |
| 268 | extern int prom_nodematch(int thisnode, char *name); | 268 | extern int prom_nodematch(int thisnode, char *name); |
| 269 | 269 | ||
| 270 | /* Puts in buffer a prom name in the form name@x,y or name (x for which_io | ||
| 271 | * and y for first regs phys address | ||
| 272 | */ | ||
| 273 | extern int prom_getname(int node, char *buf, int buflen); | ||
| 274 | |||
| 275 | /* Search all siblings starting at the passed node for "name" matching | 270 | /* Search all siblings starting at the passed node for "name" matching |
| 276 | * the given string. Returns the node on success, zero on failure. | 271 | * the given string. Returns the node on success, zero on failure. |
| 277 | */ | 272 | */ |
diff --git a/include/asm-sparc/signal.h b/include/asm-sparc/signal.h index 0ae5084c427b..d03a21c97abb 100644 --- a/include/asm-sparc/signal.h +++ b/include/asm-sparc/signal.h | |||
| @@ -168,7 +168,7 @@ struct sigstack { | |||
| 168 | * statically allocated data.. which is NOT GOOD. | 168 | * statically allocated data.. which is NOT GOOD. |
| 169 | * | 169 | * |
| 170 | */ | 170 | */ |
| 171 | #define SA_STATIC_ALLOC 0x80 | 171 | #define SA_STATIC_ALLOC 0x8000 |
| 172 | #endif | 172 | #endif |
| 173 | 173 | ||
| 174 | #include <asm-generic/signal.h> | 174 | #include <asm-generic/signal.h> |
diff --git a/include/asm-sparc/system.h b/include/asm-sparc/system.h index cb7dda1e5e91..100c3eaf3c1f 100644 --- a/include/asm-sparc/system.h +++ b/include/asm-sparc/system.h | |||
| @@ -199,7 +199,6 @@ static inline unsigned long getipl(void) | |||
| 199 | #define wmb() mb() | 199 | #define wmb() mb() |
| 200 | #define read_barrier_depends() do { } while(0) | 200 | #define read_barrier_depends() do { } while(0) |
| 201 | #define set_mb(__var, __value) do { __var = __value; mb(); } while(0) | 201 | #define set_mb(__var, __value) do { __var = __value; mb(); } while(0) |
| 202 | #define set_wmb(__var, __value) set_mb(__var, __value) | ||
| 203 | #define smp_mb() __asm__ __volatile__("":::"memory") | 202 | #define smp_mb() __asm__ __volatile__("":::"memory") |
| 204 | #define smp_rmb() __asm__ __volatile__("":::"memory") | 203 | #define smp_rmb() __asm__ __volatile__("":::"memory") |
| 205 | #define smp_wmb() __asm__ __volatile__("":::"memory") | 204 | #define smp_wmb() __asm__ __volatile__("":::"memory") |
diff --git a/include/asm-sparc64/Kbuild b/include/asm-sparc64/Kbuild index c78d44bb195f..9284c3cb27ec 100644 --- a/include/asm-sparc64/Kbuild +++ b/include/asm-sparc64/Kbuild | |||
| @@ -4,7 +4,7 @@ ALTARCH := sparc | |||
| 4 | ARCHDEF := defined __sparc__ && defined __arch64__ | 4 | ARCHDEF := defined __sparc__ && defined __arch64__ |
| 5 | ALTARCHDEF := defined __sparc__ && !defined __arch64__ | 5 | ALTARCHDEF := defined __sparc__ && !defined __arch64__ |
| 6 | 6 | ||
| 7 | unifdef-y := fbio.h perfctr.h | 7 | unifdef-y += fbio.h perfctr.h |
| 8 | header-y += apb.h asi.h bbc.h bpp.h display7seg.h envctrl.h floppy.h \ | 8 | header-y += apb.h asi.h bbc.h bpp.h display7seg.h envctrl.h floppy.h \ |
| 9 | ipc.h kdebug.h mostek.h openprom.h openpromio.h parport.h \ | 9 | ipc.h kdebug.h mostek.h openprom.h openpromio.h parport.h \ |
| 10 | pconf.h psrcompat.h pstate.h reg.h uctx.h utrap.h watchdog.h | 10 | pconf.h psrcompat.h pstate.h reg.h uctx.h utrap.h watchdog.h |
diff --git a/include/asm-sparc64/openprom.h b/include/asm-sparc64/openprom.h index b4959d2b0d99..e01b80559c93 100644 --- a/include/asm-sparc64/openprom.h +++ b/include/asm-sparc64/openprom.h | |||
| @@ -175,7 +175,7 @@ struct linux_nodeops { | |||
| 175 | }; | 175 | }; |
| 176 | 176 | ||
| 177 | /* More fun PROM structures for device probing. */ | 177 | /* More fun PROM structures for device probing. */ |
| 178 | #define PROMREG_MAX 16 | 178 | #define PROMREG_MAX 24 |
| 179 | #define PROMVADDR_MAX 16 | 179 | #define PROMVADDR_MAX 16 |
| 180 | #define PROMINTR_MAX 15 | 180 | #define PROMINTR_MAX 15 |
| 181 | 181 | ||
diff --git a/include/asm-sparc64/oplib.h b/include/asm-sparc64/oplib.h index a68b0bb05958..6a0da3b1695c 100644 --- a/include/asm-sparc64/oplib.h +++ b/include/asm-sparc64/oplib.h | |||
| @@ -287,11 +287,6 @@ extern void prom_getstring(int node, const char *prop, char *buf, int bufsize); | |||
| 287 | /* Does the passed node have the given "name"? YES=1 NO=0 */ | 287 | /* Does the passed node have the given "name"? YES=1 NO=0 */ |
| 288 | extern int prom_nodematch(int thisnode, const char *name); | 288 | extern int prom_nodematch(int thisnode, const char *name); |
| 289 | 289 | ||
| 290 | /* Puts in buffer a prom name in the form name@x,y or name (x for which_io | ||
| 291 | * and y for first regs phys address | ||
| 292 | */ | ||
| 293 | extern int prom_getname(int node, char *buf, int buflen); | ||
| 294 | |||
| 295 | /* Search all siblings starting at the passed node for "name" matching | 290 | /* Search all siblings starting at the passed node for "name" matching |
| 296 | * the given string. Returns the node on success, zero on failure. | 291 | * the given string. Returns the node on success, zero on failure. |
| 297 | */ | 292 | */ |
diff --git a/include/asm-sparc64/system.h b/include/asm-sparc64/system.h index 4ca68600c670..a8b7432c9a70 100644 --- a/include/asm-sparc64/system.h +++ b/include/asm-sparc64/system.h | |||
| @@ -123,8 +123,6 @@ do { __asm__ __volatile__("ba,pt %%xcc, 1f\n\t" \ | |||
| 123 | #define read_barrier_depends() do { } while(0) | 123 | #define read_barrier_depends() do { } while(0) |
| 124 | #define set_mb(__var, __value) \ | 124 | #define set_mb(__var, __value) \ |
| 125 | do { __var = __value; membar_storeload_storestore(); } while(0) | 125 | do { __var = __value; membar_storeload_storestore(); } while(0) |
| 126 | #define set_wmb(__var, __value) \ | ||
| 127 | do { __var = __value; wmb(); } while(0) | ||
| 128 | 126 | ||
| 129 | #ifdef CONFIG_SMP | 127 | #ifdef CONFIG_SMP |
| 130 | #define smp_mb() mb() | 128 | #define smp_mb() mb() |
diff --git a/include/asm-v850/processor.h b/include/asm-v850/processor.h index 6965b66ccaed..979e3467f9af 100644 --- a/include/asm-v850/processor.h +++ b/include/asm-v850/processor.h | |||
| @@ -18,6 +18,7 @@ | |||
| 18 | #include <linux/thread_info.h> | 18 | #include <linux/thread_info.h> |
| 19 | #endif | 19 | #endif |
| 20 | 20 | ||
| 21 | #include <linux/compiler.h> | ||
| 21 | #include <asm/ptrace.h> | 22 | #include <asm/ptrace.h> |
| 22 | #include <asm/entry.h> | 23 | #include <asm/entry.h> |
| 23 | 24 | ||
| @@ -106,7 +107,7 @@ unsigned long get_wchan (struct task_struct *p); | |||
| 106 | #define KSTK_ESP(task) task_sp (task) | 107 | #define KSTK_ESP(task) task_sp (task) |
| 107 | 108 | ||
| 108 | 109 | ||
| 109 | #define cpu_relax() ((void)0) | 110 | #define cpu_relax() barrier() |
| 110 | 111 | ||
| 111 | 112 | ||
| 112 | #else /* __ASSEMBLY__ */ | 113 | #else /* __ASSEMBLY__ */ |
diff --git a/include/asm-v850/system.h b/include/asm-v850/system.h index 7091af4b7866..da39916f10b0 100644 --- a/include/asm-v850/system.h +++ b/include/asm-v850/system.h | |||
| @@ -68,7 +68,6 @@ static inline int irqs_disabled (void) | |||
| 68 | #define read_barrier_depends() ((void)0) | 68 | #define read_barrier_depends() ((void)0) |
| 69 | #define set_rmb(var, value) do { xchg (&var, value); } while (0) | 69 | #define set_rmb(var, value) do { xchg (&var, value); } while (0) |
| 70 | #define set_mb(var, value) set_rmb (var, value) | 70 | #define set_mb(var, value) set_rmb (var, value) |
| 71 | #define set_wmb(var, value) do { var = value; wmb (); } while (0) | ||
| 72 | 71 | ||
| 73 | #define smp_mb() mb () | 72 | #define smp_mb() mb () |
| 74 | #define smp_rmb() rmb () | 73 | #define smp_rmb() rmb () |
diff --git a/include/asm-x86_64/calgary.h b/include/asm-x86_64/calgary.h index 6e1654f30986..fbfb50136edb 100644 --- a/include/asm-x86_64/calgary.h +++ b/include/asm-x86_64/calgary.h | |||
| @@ -1,8 +1,10 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Derived from include/asm-powerpc/iommu.h | 2 | * Derived from include/asm-powerpc/iommu.h |
| 3 | * | 3 | * |
| 4 | * Copyright (C) 2006 Jon Mason <jdmason@us.ibm.com>, IBM Corporation | 4 | * Copyright (C) IBM Corporation, 2006 |
| 5 | * Copyright (C) 2006 Muli Ben-Yehuda <muli@il.ibm.com>, IBM Corporation | 5 | * |
| 6 | * Author: Jon Mason <jdmason@us.ibm.com> | ||
| 7 | * Author: Muli Ben-Yehuda <muli@il.ibm.com> | ||
| 6 | * | 8 | * |
| 7 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
| 8 | * it under the terms of the GNU General Public License as published by | 10 | * it under the terms of the GNU General Public License as published by |
diff --git a/include/asm-x86_64/system.h b/include/asm-x86_64/system.h index f67f2873a922..6bf170bceae1 100644 --- a/include/asm-x86_64/system.h +++ b/include/asm-x86_64/system.h | |||
| @@ -240,7 +240,6 @@ static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, | |||
| 240 | #endif | 240 | #endif |
| 241 | #define read_barrier_depends() do {} while(0) | 241 | #define read_barrier_depends() do {} while(0) |
| 242 | #define set_mb(var, value) do { (void) xchg(&var, value); } while (0) | 242 | #define set_mb(var, value) do { (void) xchg(&var, value); } while (0) |
| 243 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 244 | 243 | ||
| 245 | #define warn_if_not_ulong(x) do { unsigned long foo; (void) (&(x) == &foo); } while (0) | 244 | #define warn_if_not_ulong(x) do { unsigned long foo; (void) (&(x) == &foo); } while (0) |
| 246 | 245 | ||
diff --git a/include/asm-x86_64/tce.h b/include/asm-x86_64/tce.h index ee51d31528d6..53e9a68b3336 100644 --- a/include/asm-x86_64/tce.h +++ b/include/asm-x86_64/tce.h | |||
| @@ -1,9 +1,11 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (C) 2006 Muli Ben-Yehuda <muli@il.ibm.com>, IBM Corporation | ||
| 3 | * Copyright (C) 2006 Jon Mason <jdmason@us.ibm.com>, IBM Corporation | ||
| 4 | * | ||
| 5 | * This file is derived from asm-powerpc/tce.h. | 2 | * This file is derived from asm-powerpc/tce.h. |
| 6 | * | 3 | * |
| 4 | * Copyright (C) IBM Corporation, 2006 | ||
| 5 | * | ||
| 6 | * Author: Muli Ben-Yehuda <muli@il.ibm.com> | ||
| 7 | * Author: Jon Mason <jdmason@us.ibm.com> | ||
| 8 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
| 8 | * it under the terms of the GNU General Public License as published by | 10 | * it under the terms of the GNU General Public License as published by |
| 9 | * the Free Software Foundation; either version 2 of the License, or | 11 | * the Free Software Foundation; either version 2 of the License, or |
diff --git a/include/asm-xtensa/processor.h b/include/asm-xtensa/processor.h index d1d72ad36f08..8b96e77c9d82 100644 --- a/include/asm-xtensa/processor.h +++ b/include/asm-xtensa/processor.h | |||
| @@ -20,6 +20,7 @@ | |||
| 20 | #include <xtensa/config/tie.h> | 20 | #include <xtensa/config/tie.h> |
| 21 | #include <xtensa/config/system.h> | 21 | #include <xtensa/config/system.h> |
| 22 | 22 | ||
| 23 | #include <linux/compiler.h> | ||
| 23 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
| 24 | #include <asm/types.h> | 25 | #include <asm/types.h> |
| 25 | #include <asm/coprocessor.h> | 26 | #include <asm/coprocessor.h> |
| @@ -191,7 +192,7 @@ extern unsigned long get_wchan(struct task_struct *p); | |||
| 191 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->pc) | 192 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->pc) |
| 192 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->areg[1]) | 193 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->areg[1]) |
| 193 | 194 | ||
| 194 | #define cpu_relax() do { } while (0) | 195 | #define cpu_relax() barrier() |
| 195 | 196 | ||
| 196 | /* Special register access. */ | 197 | /* Special register access. */ |
| 197 | 198 | ||
diff --git a/include/asm-xtensa/system.h b/include/asm-xtensa/system.h index f986170bd2a1..932bda92a21c 100644 --- a/include/asm-xtensa/system.h +++ b/include/asm-xtensa/system.h | |||
| @@ -99,7 +99,6 @@ static inline void disable_coprocessor(int i) | |||
| 99 | #endif | 99 | #endif |
| 100 | 100 | ||
| 101 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 101 | #define set_mb(var, value) do { var = value; mb(); } while (0) |
| 102 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
| 103 | 102 | ||
| 104 | #if !defined (__ASSEMBLY__) | 103 | #if !defined (__ASSEMBLY__) |
| 105 | 104 | ||
diff --git a/include/linux/blktrace_api.h b/include/linux/blktrace_api.h index a7e8cef73d15..7520cc1ff9e2 100644 --- a/include/linux/blktrace_api.h +++ b/include/linux/blktrace_api.h | |||
| @@ -11,7 +11,7 @@ enum blktrace_cat { | |||
| 11 | BLK_TC_READ = 1 << 0, /* reads */ | 11 | BLK_TC_READ = 1 << 0, /* reads */ |
| 12 | BLK_TC_WRITE = 1 << 1, /* writes */ | 12 | BLK_TC_WRITE = 1 << 1, /* writes */ |
| 13 | BLK_TC_BARRIER = 1 << 2, /* barrier */ | 13 | BLK_TC_BARRIER = 1 << 2, /* barrier */ |
| 14 | BLK_TC_SYNC = 1 << 3, /* barrier */ | 14 | BLK_TC_SYNC = 1 << 3, /* sync IO */ |
| 15 | BLK_TC_QUEUE = 1 << 4, /* queueing/merging */ | 15 | BLK_TC_QUEUE = 1 << 4, /* queueing/merging */ |
| 16 | BLK_TC_REQUEUE = 1 << 5, /* requeueing */ | 16 | BLK_TC_REQUEUE = 1 << 5, /* requeueing */ |
| 17 | BLK_TC_ISSUE = 1 << 6, /* issue */ | 17 | BLK_TC_ISSUE = 1 << 6, /* issue */ |
| @@ -19,6 +19,7 @@ enum blktrace_cat { | |||
| 19 | BLK_TC_FS = 1 << 8, /* fs requests */ | 19 | BLK_TC_FS = 1 << 8, /* fs requests */ |
| 20 | BLK_TC_PC = 1 << 9, /* pc requests */ | 20 | BLK_TC_PC = 1 << 9, /* pc requests */ |
| 21 | BLK_TC_NOTIFY = 1 << 10, /* special message */ | 21 | BLK_TC_NOTIFY = 1 << 10, /* special message */ |
| 22 | BLK_TC_AHEAD = 1 << 11, /* readahead */ | ||
| 22 | 23 | ||
| 23 | BLK_TC_END = 1 << 15, /* only 16-bits, reminder */ | 24 | BLK_TC_END = 1 << 15, /* only 16-bits, reminder */ |
| 24 | }; | 25 | }; |
| @@ -147,7 +148,7 @@ static inline void blk_add_trace_rq(struct request_queue *q, struct request *rq, | |||
| 147 | u32 what) | 148 | u32 what) |
| 148 | { | 149 | { |
| 149 | struct blk_trace *bt = q->blk_trace; | 150 | struct blk_trace *bt = q->blk_trace; |
| 150 | int rw = rq->flags & 0x07; | 151 | int rw = rq->flags & 0x03; |
| 151 | 152 | ||
| 152 | if (likely(!bt)) | 153 | if (likely(!bt)) |
| 153 | return; | 154 | return; |
diff --git a/include/linux/bootmem.h b/include/linux/bootmem.h index 22866fa2d960..1021f508d82c 100644 --- a/include/linux/bootmem.h +++ b/include/linux/bootmem.h | |||
| @@ -91,7 +91,7 @@ static inline void *alloc_remap(int nid, unsigned long size) | |||
| 91 | } | 91 | } |
| 92 | #endif | 92 | #endif |
| 93 | 93 | ||
| 94 | extern unsigned long nr_kernel_pages; | 94 | extern unsigned long __meminitdata nr_kernel_pages; |
| 95 | extern unsigned long nr_all_pages; | 95 | extern unsigned long nr_all_pages; |
| 96 | 96 | ||
| 97 | extern void *__init alloc_large_system_hash(const char *tablename, | 97 | extern void *__init alloc_large_system_hash(const char *tablename, |
diff --git a/include/linux/completion.h b/include/linux/completion.h index 251c41e3ddd5..268c5a4a2bd4 100644 --- a/include/linux/completion.h +++ b/include/linux/completion.h | |||
| @@ -18,6 +18,9 @@ struct completion { | |||
| 18 | #define COMPLETION_INITIALIZER(work) \ | 18 | #define COMPLETION_INITIALIZER(work) \ |
| 19 | { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) } | 19 | { 0, __WAIT_QUEUE_HEAD_INITIALIZER((work).wait) } |
| 20 | 20 | ||
| 21 | #define COMPLETION_INITIALIZER_ONSTACK(work) \ | ||
| 22 | ({ init_completion(&work); work; }) | ||
| 23 | |||
| 21 | #define DECLARE_COMPLETION(work) \ | 24 | #define DECLARE_COMPLETION(work) \ |
| 22 | struct completion work = COMPLETION_INITIALIZER(work) | 25 | struct completion work = COMPLETION_INITIALIZER(work) |
| 23 | 26 | ||
| @@ -28,7 +31,7 @@ struct completion { | |||
| 28 | */ | 31 | */ |
| 29 | #ifdef CONFIG_LOCKDEP | 32 | #ifdef CONFIG_LOCKDEP |
| 30 | # define DECLARE_COMPLETION_ONSTACK(work) \ | 33 | # define DECLARE_COMPLETION_ONSTACK(work) \ |
| 31 | struct completion work = ({ init_completion(&work); work; }) | 34 | struct completion work = COMPLETION_INITIALIZER_ONSTACK(work) |
| 32 | #else | 35 | #else |
| 33 | # define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work) | 36 | # define DECLARE_COMPLETION_ONSTACK(work) DECLARE_COMPLETION(work) |
| 34 | #endif | 37 | #endif |
diff --git a/include/linux/console_struct.h b/include/linux/console_struct.h index f8e5587a0f92..25423f79bf9f 100644 --- a/include/linux/console_struct.h +++ b/include/linux/console_struct.h | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | * to achieve effects such as fast scrolling by changing the origin. | 9 | * to achieve effects such as fast scrolling by changing the origin. |
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/wait.h> | ||
| 12 | #include <linux/vt.h> | 13 | #include <linux/vt.h> |
| 13 | 14 | ||
| 14 | struct vt_struct; | 15 | struct vt_struct; |
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index 44a11f1ccaf2..8fb344a9abd8 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h | |||
| @@ -48,7 +48,6 @@ static inline void unregister_cpu_notifier(struct notifier_block *nb) | |||
| 48 | { | 48 | { |
| 49 | } | 49 | } |
| 50 | #endif | 50 | #endif |
| 51 | extern int current_in_cpu_hotplug(void); | ||
| 52 | 51 | ||
| 53 | int cpu_up(unsigned int cpu); | 52 | int cpu_up(unsigned int cpu); |
| 54 | 53 | ||
| @@ -61,10 +60,6 @@ static inline int register_cpu_notifier(struct notifier_block *nb) | |||
| 61 | static inline void unregister_cpu_notifier(struct notifier_block *nb) | 60 | static inline void unregister_cpu_notifier(struct notifier_block *nb) |
| 62 | { | 61 | { |
| 63 | } | 62 | } |
| 64 | static inline int current_in_cpu_hotplug(void) | ||
| 65 | { | ||
| 66 | return 0; | ||
| 67 | } | ||
| 68 | 63 | ||
| 69 | #endif /* CONFIG_SMP */ | 64 | #endif /* CONFIG_SMP */ |
| 70 | extern struct sysdev_class cpu_sysdev_class; | 65 | extern struct sysdev_class cpu_sysdev_class; |
| @@ -73,7 +68,6 @@ extern struct sysdev_class cpu_sysdev_class; | |||
| 73 | /* Stop CPUs going up and down. */ | 68 | /* Stop CPUs going up and down. */ |
| 74 | extern void lock_cpu_hotplug(void); | 69 | extern void lock_cpu_hotplug(void); |
| 75 | extern void unlock_cpu_hotplug(void); | 70 | extern void unlock_cpu_hotplug(void); |
| 76 | extern int lock_cpu_hotplug_interruptible(void); | ||
| 77 | #define hotcpu_notifier(fn, pri) { \ | 71 | #define hotcpu_notifier(fn, pri) { \ |
| 78 | static struct notifier_block fn##_nb = \ | 72 | static struct notifier_block fn##_nb = \ |
| 79 | { .notifier_call = fn, .priority = pri }; \ | 73 | { .notifier_call = fn, .priority = pri }; \ |
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index 35e137636b0b..4ea39fee99c7 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
| @@ -172,9 +172,6 @@ extern int __cpufreq_driver_target(struct cpufreq_policy *policy, | |||
| 172 | unsigned int relation); | 172 | unsigned int relation); |
| 173 | 173 | ||
| 174 | 174 | ||
| 175 | /* pass an event to the cpufreq governor */ | ||
| 176 | int cpufreq_governor(unsigned int cpu, unsigned int event); | ||
| 177 | |||
| 178 | int cpufreq_register_governor(struct cpufreq_governor *governor); | 175 | int cpufreq_register_governor(struct cpufreq_governor *governor); |
| 179 | void cpufreq_unregister_governor(struct cpufreq_governor *governor); | 176 | void cpufreq_unregister_governor(struct cpufreq_governor *governor); |
| 180 | 177 | ||
diff --git a/include/linux/delayacct.h b/include/linux/delayacct.h new file mode 100644 index 000000000000..7e8b6011b8f3 --- /dev/null +++ b/include/linux/delayacct.h | |||
| @@ -0,0 +1,119 @@ | |||
| 1 | /* delayacct.h - per-task delay accounting | ||
| 2 | * | ||
| 3 | * Copyright (C) Shailabh Nagar, IBM Corp. 2006 | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify | ||
| 6 | * it under the terms of the GNU General Public License as published by | ||
| 7 | * the Free Software Foundation; either version 2 of the License, or | ||
| 8 | * (at your option) any later version. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See | ||
| 13 | * the GNU General Public License for more details. | ||
| 14 | * | ||
| 15 | */ | ||
| 16 | |||
| 17 | #ifndef _LINUX_DELAYACCT_H | ||
| 18 | #define _LINUX_DELAYACCT_H | ||
| 19 | |||
| 20 | #include <linux/sched.h> | ||
| 21 | #include <linux/taskstats_kern.h> | ||
| 22 | |||
| 23 | /* | ||
| 24 | * Per-task flags relevant to delay accounting | ||
| 25 | * maintained privately to avoid exhausting similar flags in sched.h:PF_* | ||
| 26 | * Used to set current->delays->flags | ||
| 27 | */ | ||
| 28 | #define DELAYACCT_PF_SWAPIN 0x00000001 /* I am doing a swapin */ | ||
| 29 | |||
| 30 | #ifdef CONFIG_TASK_DELAY_ACCT | ||
| 31 | |||
| 32 | extern int delayacct_on; /* Delay accounting turned on/off */ | ||
| 33 | extern kmem_cache_t *delayacct_cache; | ||
| 34 | extern void delayacct_init(void); | ||
| 35 | extern void __delayacct_tsk_init(struct task_struct *); | ||
| 36 | extern void __delayacct_tsk_exit(struct task_struct *); | ||
| 37 | extern void __delayacct_blkio_start(void); | ||
| 38 | extern void __delayacct_blkio_end(void); | ||
| 39 | extern int __delayacct_add_tsk(struct taskstats *, struct task_struct *); | ||
| 40 | extern __u64 __delayacct_blkio_ticks(struct task_struct *); | ||
| 41 | |||
| 42 | static inline void delayacct_set_flag(int flag) | ||
| 43 | { | ||
| 44 | if (current->delays) | ||
| 45 | current->delays->flags |= flag; | ||
| 46 | } | ||
| 47 | |||
| 48 | static inline void delayacct_clear_flag(int flag) | ||
| 49 | { | ||
| 50 | if (current->delays) | ||
| 51 | current->delays->flags &= ~flag; | ||
| 52 | } | ||
| 53 | |||
| 54 | static inline void delayacct_tsk_init(struct task_struct *tsk) | ||
| 55 | { | ||
| 56 | /* reinitialize in case parent's non-null pointer was dup'ed*/ | ||
| 57 | tsk->delays = NULL; | ||
| 58 | if (unlikely(delayacct_on)) | ||
| 59 | __delayacct_tsk_init(tsk); | ||
| 60 | } | ||
| 61 | |||
| 62 | static inline void delayacct_tsk_exit(struct task_struct *tsk) | ||
| 63 | { | ||
| 64 | if (tsk->delays) | ||
| 65 | __delayacct_tsk_exit(tsk); | ||
| 66 | } | ||
| 67 | |||
| 68 | static inline void delayacct_blkio_start(void) | ||
| 69 | { | ||
| 70 | if (current->delays) | ||
| 71 | __delayacct_blkio_start(); | ||
| 72 | } | ||
| 73 | |||
| 74 | static inline void delayacct_blkio_end(void) | ||
| 75 | { | ||
| 76 | if (current->delays) | ||
| 77 | __delayacct_blkio_end(); | ||
| 78 | } | ||
| 79 | |||
| 80 | static inline int delayacct_add_tsk(struct taskstats *d, | ||
| 81 | struct task_struct *tsk) | ||
| 82 | { | ||
| 83 | if (likely(!delayacct_on)) | ||
| 84 | return -EINVAL; | ||
| 85 | if (!tsk->delays) | ||
| 86 | return 0; | ||
| 87 | return __delayacct_add_tsk(d, tsk); | ||
| 88 | } | ||
| 89 | |||
| 90 | static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk) | ||
| 91 | { | ||
| 92 | if (tsk->delays) | ||
| 93 | return __delayacct_blkio_ticks(tsk); | ||
| 94 | return 0; | ||
| 95 | } | ||
| 96 | |||
| 97 | #else | ||
| 98 | static inline void delayacct_set_flag(int flag) | ||
| 99 | {} | ||
| 100 | static inline void delayacct_clear_flag(int flag) | ||
| 101 | {} | ||
| 102 | static inline void delayacct_init(void) | ||
| 103 | {} | ||
| 104 | static inline void delayacct_tsk_init(struct task_struct *tsk) | ||
| 105 | {} | ||
| 106 | static inline void delayacct_tsk_exit(struct task_struct *tsk) | ||
| 107 | {} | ||
| 108 | static inline void delayacct_blkio_start(void) | ||
| 109 | {} | ||
| 110 | static inline void delayacct_blkio_end(void) | ||
| 111 | {} | ||
| 112 | static inline int delayacct_add_tsk(struct taskstats *d, | ||
| 113 | struct task_struct *tsk) | ||
| 114 | { return 0; } | ||
| 115 | static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk) | ||
| 116 | { return 0; } | ||
| 117 | #endif /* CONFIG_TASK_DELAY_ACCT */ | ||
| 118 | |||
| 119 | #endif | ||
diff --git a/include/linux/elfcore.h b/include/linux/elfcore.h index 0cf0bea010fe..9631dddae348 100644 --- a/include/linux/elfcore.h +++ b/include/linux/elfcore.h | |||
| @@ -60,6 +60,16 @@ struct elf_prstatus | |||
| 60 | long pr_instr; /* Current instruction */ | 60 | long pr_instr; /* Current instruction */ |
| 61 | #endif | 61 | #endif |
| 62 | elf_gregset_t pr_reg; /* GP registers */ | 62 | elf_gregset_t pr_reg; /* GP registers */ |
| 63 | #ifdef CONFIG_BINFMT_ELF_FDPIC | ||
| 64 | /* When using FDPIC, the loadmap addresses need to be communicated | ||
| 65 | * to GDB in order for GDB to do the necessary relocations. The | ||
| 66 | * fields (below) used to communicate this information are placed | ||
| 67 | * immediately after ``pr_reg'', so that the loadmap addresses may | ||
| 68 | * be viewed as part of the register set if so desired. | ||
| 69 | */ | ||
| 70 | unsigned long pr_exec_fdpic_loadmap; | ||
| 71 | unsigned long pr_interp_fdpic_loadmap; | ||
| 72 | #endif | ||
| 63 | int pr_fpvalid; /* True if math co-processor being used. */ | 73 | int pr_fpvalid; /* True if math co-processor being used. */ |
| 64 | }; | 74 | }; |
| 65 | 75 | ||
diff --git a/include/linux/fb.h b/include/linux/fb.h index ffefeeeeca93..405f44e44e5d 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
| @@ -377,7 +377,6 @@ struct fb_cursor { | |||
| 377 | 377 | ||
| 378 | #include <linux/fs.h> | 378 | #include <linux/fs.h> |
| 379 | #include <linux/init.h> | 379 | #include <linux/init.h> |
| 380 | #include <linux/tty.h> | ||
| 381 | #include <linux/device.h> | 380 | #include <linux/device.h> |
| 382 | #include <linux/workqueue.h> | 381 | #include <linux/workqueue.h> |
| 383 | #include <linux/notifier.h> | 382 | #include <linux/notifier.h> |
diff --git a/include/linux/fs.h b/include/linux/fs.h index 43aef9b230fd..25610205c90d 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -27,6 +27,10 @@ | |||
| 27 | #define BLOCK_SIZE_BITS 10 | 27 | #define BLOCK_SIZE_BITS 10 |
| 28 | #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS) | 28 | #define BLOCK_SIZE (1<<BLOCK_SIZE_BITS) |
| 29 | 29 | ||
| 30 | #define SEEK_SET 0 /* seek relative to beginning of file */ | ||
| 31 | #define SEEK_CUR 1 /* seek relative to current file position */ | ||
| 32 | #define SEEK_END 2 /* seek relative to end of file */ | ||
| 33 | |||
| 30 | /* And dynamically-tunable limits and defaults: */ | 34 | /* And dynamically-tunable limits and defaults: */ |
| 31 | struct files_stat_struct { | 35 | struct files_stat_struct { |
| 32 | int nr_files; /* read only */ | 36 | int nr_files; /* read only */ |
diff --git a/include/linux/hdlc.h b/include/linux/hdlc.h index 4513f9e40937..d5ebbb29aeae 100644 --- a/include/linux/hdlc.h +++ b/include/linux/hdlc.h | |||
| @@ -224,8 +224,6 @@ static __inline__ void debug_frame(const struct sk_buff *skb) | |||
| 224 | int hdlc_open(struct net_device *dev); | 224 | int hdlc_open(struct net_device *dev); |
| 225 | /* Must be called by hardware driver when HDLC device is being closed */ | 225 | /* Must be called by hardware driver when HDLC device is being closed */ |
| 226 | void hdlc_close(struct net_device *dev); | 226 | void hdlc_close(struct net_device *dev); |
| 227 | /* Called by hardware driver when DCD line level changes */ | ||
| 228 | void hdlc_set_carrier(int on, struct net_device *dev); | ||
| 229 | 227 | ||
| 230 | /* May be used by hardware driver to gain control over HDLC device */ | 228 | /* May be used by hardware driver to gain control over HDLC device */ |
| 231 | static __inline__ void hdlc_proto_detach(hdlc_device *hdlc) | 229 | static __inline__ void hdlc_proto_detach(hdlc_device *hdlc) |
diff --git a/include/linux/i2c-id.h b/include/linux/i2c-id.h index 21338bb3441d..9418519a55d1 100644 --- a/include/linux/i2c-id.h +++ b/include/linux/i2c-id.h | |||
| @@ -115,6 +115,7 @@ | |||
| 115 | #define I2C_DRIVERID_BT866 85 /* Conexant bt866 video encoder */ | 115 | #define I2C_DRIVERID_BT866 85 /* Conexant bt866 video encoder */ |
| 116 | #define I2C_DRIVERID_KS0127 86 /* Samsung ks0127 video decoder */ | 116 | #define I2C_DRIVERID_KS0127 86 /* Samsung ks0127 video decoder */ |
| 117 | #define I2C_DRIVERID_TLV320AIC23B 87 /* TI TLV320AIC23B audio codec */ | 117 | #define I2C_DRIVERID_TLV320AIC23B 87 /* TI TLV320AIC23B audio codec */ |
| 118 | #define I2C_DRIVERID_ISL1208 88 /* Intersil ISL1208 RTC */ | ||
| 118 | 119 | ||
| 119 | #define I2C_DRIVERID_I2CDEV 900 | 120 | #define I2C_DRIVERID_I2CDEV 900 |
| 120 | #define I2C_DRIVERID_ARP 902 /* SMBus ARP Client */ | 121 | #define I2C_DRIVERID_ARP 902 /* SMBus ARP Client */ |
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index 526ddc8eecfb..eb0628a7ecc6 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
| @@ -193,6 +193,8 @@ struct i2c_algorithm { | |||
| 193 | to NULL. If an adapter algorithm can do SMBus access, set | 193 | to NULL. If an adapter algorithm can do SMBus access, set |
| 194 | smbus_xfer. If set to NULL, the SMBus protocol is simulated | 194 | smbus_xfer. If set to NULL, the SMBus protocol is simulated |
| 195 | using common I2C messages */ | 195 | using common I2C messages */ |
| 196 | /* master_xfer should return the number of messages successfully | ||
| 197 | processed, or a negative value on error */ | ||
| 196 | int (*master_xfer)(struct i2c_adapter *adap,struct i2c_msg *msgs, | 198 | int (*master_xfer)(struct i2c_adapter *adap,struct i2c_msg *msgs, |
| 197 | int num); | 199 | int num); |
| 198 | int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr, | 200 | int (*smbus_xfer) (struct i2c_adapter *adap, u16 addr, |
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index eef0876d8307..383627ad328f 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h | |||
| @@ -23,8 +23,8 @@ struct vlan_collection; | |||
| 23 | struct vlan_dev_info; | 23 | struct vlan_dev_info; |
| 24 | struct hlist_node; | 24 | struct hlist_node; |
| 25 | 25 | ||
| 26 | #include <linux/proc_fs.h> /* for proc_dir_entry */ | ||
| 27 | #include <linux/netdevice.h> | 26 | #include <linux/netdevice.h> |
| 27 | #include <linux/etherdevice.h> | ||
| 28 | 28 | ||
| 29 | #define VLAN_HLEN 4 /* The additional bytes (on top of the Ethernet header) | 29 | #define VLAN_HLEN 4 /* The additional bytes (on top of the Ethernet header) |
| 30 | * that VLAN requires. | 30 | * that VLAN requires. |
| @@ -185,7 +185,8 @@ static inline int __vlan_hwaccel_rx(struct sk_buff *skb, | |||
| 185 | * This allows the VLAN to have a different MAC than the underlying | 185 | * This allows the VLAN to have a different MAC than the underlying |
| 186 | * device, and still route correctly. | 186 | * device, and still route correctly. |
| 187 | */ | 187 | */ |
| 188 | if (!memcmp(eth_hdr(skb)->h_dest, skb->dev->dev_addr, ETH_ALEN)) | 188 | if (!compare_ether_addr(eth_hdr(skb)->h_dest, |
| 189 | skb->dev->dev_addr)) | ||
| 189 | skb->pkt_type = PACKET_HOST; | 190 | skb->pkt_type = PACKET_HOST; |
| 190 | break; | 191 | break; |
| 191 | }; | 192 | }; |
diff --git a/include/linux/ioport.h b/include/linux/ioport.h index 5612dfeeae50..d42c83399071 100644 --- a/include/linux/ioport.h +++ b/include/linux/ioport.h | |||
| @@ -97,7 +97,7 @@ extern struct resource iomem_resource; | |||
| 97 | extern int request_resource(struct resource *root, struct resource *new); | 97 | extern int request_resource(struct resource *root, struct resource *new); |
| 98 | extern struct resource * ____request_resource(struct resource *root, struct resource *new); | 98 | extern struct resource * ____request_resource(struct resource *root, struct resource *new); |
| 99 | extern int release_resource(struct resource *new); | 99 | extern int release_resource(struct resource *new); |
| 100 | extern __deprecated_for_modules int insert_resource(struct resource *parent, struct resource *new); | 100 | extern int insert_resource(struct resource *parent, struct resource *new); |
| 101 | extern int allocate_resource(struct resource *root, struct resource *new, | 101 | extern int allocate_resource(struct resource *root, struct resource *new, |
| 102 | resource_size_t size, resource_size_t min, | 102 | resource_size_t size, resource_size_t min, |
| 103 | resource_size_t max, resource_size_t align, | 103 | resource_size_t max, resource_size_t align, |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 5c1ec1f84eab..181c69cad4e3 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -33,6 +33,7 @@ extern const char linux_banner[]; | |||
| 33 | #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) | 33 | #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) |
| 34 | #define ALIGN(x,a) (((x)+(a)-1)&~((a)-1)) | 34 | #define ALIGN(x,a) (((x)+(a)-1)&~((a)-1)) |
| 35 | #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) | 35 | #define FIELD_SIZEOF(t, f) (sizeof(((t*)0)->f)) |
| 36 | #define roundup(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) | ||
| 36 | 37 | ||
| 37 | #define KERN_EMERG "<0>" /* system is unusable */ | 38 | #define KERN_EMERG "<0>" /* system is unusable */ |
| 38 | #define KERN_ALERT "<1>" /* action must be taken immediately */ | 39 | #define KERN_ALERT "<1>" /* action must be taken immediately */ |
diff --git a/include/linux/kthread.h b/include/linux/kthread.h index 7cce5dfa092f..1c65e7a9f186 100644 --- a/include/linux/kthread.h +++ b/include/linux/kthread.h | |||
| @@ -28,7 +28,6 @@ struct task_struct *kthread_create(int (*threadfn)(void *data), | |||
| 28 | 28 | ||
| 29 | void kthread_bind(struct task_struct *k, unsigned int cpu); | 29 | void kthread_bind(struct task_struct *k, unsigned int cpu); |
| 30 | int kthread_stop(struct task_struct *k); | 30 | int kthread_stop(struct task_struct *k); |
| 31 | int kthread_stop_sem(struct task_struct *k, struct semaphore *s); | ||
| 32 | int kthread_should_stop(void); | 31 | int kthread_should_stop(void); |
| 33 | 32 | ||
| 34 | #endif /* _LINUX_KTHREAD_H */ | 33 | #endif /* _LINUX_KTHREAD_H */ |
diff --git a/include/linux/list.h b/include/linux/list.h index 6b74adf5297f..65a5b5ceda49 100644 --- a/include/linux/list.h +++ b/include/linux/list.h | |||
| @@ -265,6 +265,17 @@ static inline void list_move_tail(struct list_head *list, | |||
| 265 | } | 265 | } |
| 266 | 266 | ||
| 267 | /** | 267 | /** |
| 268 | * list_is_last - tests whether @list is the last entry in list @head | ||
| 269 | * @list: the entry to test | ||
| 270 | * @head: the head of the list | ||
| 271 | */ | ||
| 272 | static inline int list_is_last(const struct list_head *list, | ||
| 273 | const struct list_head *head) | ||
| 274 | { | ||
| 275 | return list->next == head; | ||
| 276 | } | ||
| 277 | |||
| 278 | /** | ||
| 268 | * list_empty - tests whether a list is empty | 279 | * list_empty - tests whether a list is empty |
| 269 | * @head: the list to test. | 280 | * @head: the list to test. |
| 270 | */ | 281 | */ |
diff --git a/include/linux/lockdep.h b/include/linux/lockdep.h index 316e0fb8d7b1..c040a8c969aa 100644 --- a/include/linux/lockdep.h +++ b/include/linux/lockdep.h | |||
| @@ -120,7 +120,7 @@ struct lock_class { | |||
| 120 | */ | 120 | */ |
| 121 | struct lockdep_map { | 121 | struct lockdep_map { |
| 122 | struct lock_class_key *key; | 122 | struct lock_class_key *key; |
| 123 | struct lock_class *class[MAX_LOCKDEP_SUBCLASSES]; | 123 | struct lock_class *class_cache; |
| 124 | const char *name; | 124 | const char *name; |
| 125 | }; | 125 | }; |
| 126 | 126 | ||
diff --git a/include/linux/mc146818rtc.h b/include/linux/mc146818rtc.h index bbc93ae217e1..432b2fa24929 100644 --- a/include/linux/mc146818rtc.h +++ b/include/linux/mc146818rtc.h | |||
| @@ -89,4 +89,11 @@ extern spinlock_t rtc_lock; /* serialize CMOS RAM access */ | |||
| 89 | # define RTC_VRT 0x80 /* valid RAM and time */ | 89 | # define RTC_VRT 0x80 /* valid RAM and time */ |
| 90 | /**********************************************************************/ | 90 | /**********************************************************************/ |
| 91 | 91 | ||
| 92 | #ifndef ARCH_RTC_LOCATION /* Override by <asm/mc146818rtc.h>? */ | ||
| 93 | |||
| 94 | #define RTC_IO_EXTENT 0x8 | ||
| 95 | #define RTC_IOMAPPED 1 /* Default to I/O mapping. */ | ||
| 96 | |||
| 97 | #endif /* ARCH_RTC_LOCATION */ | ||
| 98 | |||
| 92 | #endif /* _MC146818RTC_H */ | 99 | #endif /* _MC146818RTC_H */ |
diff --git a/include/linux/module.h b/include/linux/module.h index d06c74fb8c26..0dfb794c52d3 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
| @@ -362,10 +362,8 @@ int is_module_address(unsigned long addr); | |||
| 362 | 362 | ||
| 363 | /* Returns module and fills in value, defined and namebuf, or NULL if | 363 | /* Returns module and fills in value, defined and namebuf, or NULL if |
| 364 | symnum out of range. */ | 364 | symnum out of range. */ |
| 365 | struct module *module_get_kallsym(unsigned int symnum, | 365 | struct module *module_get_kallsym(unsigned int symnum, unsigned long *value, |
| 366 | unsigned long *value, | 366 | char *type, char *name, size_t namelen); |
| 367 | char *type, | ||
| 368 | char namebuf[128]); | ||
| 369 | 367 | ||
| 370 | /* Look for this name: can be of form module:name. */ | 368 | /* Look for this name: can be of form module:name. */ |
| 371 | unsigned long module_kallsyms_lookup_name(const char *name); | 369 | unsigned long module_kallsyms_lookup_name(const char *name); |
| @@ -535,8 +533,8 @@ static inline const char *module_address_lookup(unsigned long addr, | |||
| 535 | 533 | ||
| 536 | static inline struct module *module_get_kallsym(unsigned int symnum, | 534 | static inline struct module *module_get_kallsym(unsigned int symnum, |
| 537 | unsigned long *value, | 535 | unsigned long *value, |
| 538 | char *type, | 536 | char *type, char *name, |
| 539 | char namebuf[128]) | 537 | size_t namelen) |
| 540 | { | 538 | { |
| 541 | return NULL; | 539 | return NULL; |
| 542 | } | 540 | } |
diff --git a/include/linux/namei.h b/include/linux/namei.h index 58cb3d3d44b4..45511a5918d3 100644 --- a/include/linux/namei.h +++ b/include/linux/namei.h | |||
| @@ -11,7 +11,7 @@ struct open_intent { | |||
| 11 | struct file *file; | 11 | struct file *file; |
| 12 | }; | 12 | }; |
| 13 | 13 | ||
| 14 | enum { MAX_NESTED_LINKS = 5 }; | 14 | enum { MAX_NESTED_LINKS = 8 }; |
| 15 | 15 | ||
| 16 | struct nameidata { | 16 | struct nameidata { |
| 17 | struct dentry *dentry; | 17 | struct dentry *dentry; |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 85f99f60deea..75f02d8c6ed3 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -549,6 +549,7 @@ struct packet_type { | |||
| 549 | struct net_device *); | 549 | struct net_device *); |
| 550 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, | 550 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, |
| 551 | int features); | 551 | int features); |
| 552 | int (*gso_send_check)(struct sk_buff *skb); | ||
| 552 | void *af_packet_priv; | 553 | void *af_packet_priv; |
| 553 | struct list_head list; | 554 | struct list_head list; |
| 554 | }; | 555 | }; |
| @@ -923,10 +924,10 @@ static inline void netif_tx_lock_bh(struct net_device *dev) | |||
| 923 | 924 | ||
| 924 | static inline int netif_tx_trylock(struct net_device *dev) | 925 | static inline int netif_tx_trylock(struct net_device *dev) |
| 925 | { | 926 | { |
| 926 | int err = spin_trylock(&dev->_xmit_lock); | 927 | int ok = spin_trylock(&dev->_xmit_lock); |
| 927 | if (!err) | 928 | if (likely(ok)) |
| 928 | dev->xmit_lock_owner = smp_processor_id(); | 929 | dev->xmit_lock_owner = smp_processor_id(); |
| 929 | return err; | 930 | return ok; |
| 930 | } | 931 | } |
| 931 | 932 | ||
| 932 | static inline void netif_tx_unlock(struct net_device *dev) | 933 | static inline void netif_tx_unlock(struct net_device *dev) |
| @@ -1001,13 +1002,14 @@ static inline int net_gso_ok(int features, int gso_type) | |||
| 1001 | 1002 | ||
| 1002 | static inline int skb_gso_ok(struct sk_buff *skb, int features) | 1003 | static inline int skb_gso_ok(struct sk_buff *skb, int features) |
| 1003 | { | 1004 | { |
| 1004 | return net_gso_ok(features, skb_shinfo(skb)->gso_size ? | 1005 | return net_gso_ok(features, skb_shinfo(skb)->gso_type); |
| 1005 | skb_shinfo(skb)->gso_type : 0); | ||
| 1006 | } | 1006 | } |
| 1007 | 1007 | ||
| 1008 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) | 1008 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) |
| 1009 | { | 1009 | { |
| 1010 | return !skb_gso_ok(skb, dev->features); | 1010 | return skb_is_gso(skb) && |
| 1011 | (!skb_gso_ok(skb, dev->features) || | ||
| 1012 | unlikely(skb->ip_summed != CHECKSUM_HW)); | ||
| 1011 | } | 1013 | } |
| 1012 | 1014 | ||
| 1013 | #endif /* __KERNEL__ */ | 1015 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h index 87764022cc67..31f02ba036ce 100644 --- a/include/linux/netfilter_bridge.h +++ b/include/linux/netfilter_bridge.h | |||
| @@ -79,6 +79,8 @@ struct bridge_skb_cb { | |||
| 79 | __u32 ipv4; | 79 | __u32 ipv4; |
| 80 | } daddr; | 80 | } daddr; |
| 81 | }; | 81 | }; |
| 82 | |||
| 83 | extern int brnf_deferred_hooks; | ||
| 82 | #endif /* CONFIG_BRIDGE_NETFILTER */ | 84 | #endif /* CONFIG_BRIDGE_NETFILTER */ |
| 83 | 85 | ||
| 84 | #endif /* __KERNEL__ */ | 86 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/nfs4.h b/include/linux/nfs4.h index 5f681d534295..db05182ca0e8 100644 --- a/include/linux/nfs4.h +++ b/include/linux/nfs4.h | |||
| @@ -157,6 +157,12 @@ enum nfs_opnum4 { | |||
| 157 | OP_ILLEGAL = 10044, | 157 | OP_ILLEGAL = 10044, |
| 158 | }; | 158 | }; |
| 159 | 159 | ||
| 160 | /*Defining first and last NFS4 operations implemented. | ||
| 161 | Needs to be updated if more operations are defined in future.*/ | ||
| 162 | |||
| 163 | #define FIRST_NFS4_OP OP_ACCESS | ||
| 164 | #define LAST_NFS4_OP OP_RELEASE_LOCKOWNER | ||
| 165 | |||
| 160 | enum nfsstat4 { | 166 | enum nfsstat4 { |
| 161 | NFS4_OK = 0, | 167 | NFS4_OK = 0, |
| 162 | NFS4ERR_PERM = 1, | 168 | NFS4ERR_PERM = 1, |
diff --git a/include/linux/nfsd/stats.h b/include/linux/nfsd/stats.h index b6f1e0cda4f2..28a82fdd922f 100644 --- a/include/linux/nfsd/stats.h +++ b/include/linux/nfsd/stats.h | |||
| @@ -9,6 +9,8 @@ | |||
| 9 | #ifndef LINUX_NFSD_STATS_H | 9 | #ifndef LINUX_NFSD_STATS_H |
| 10 | #define LINUX_NFSD_STATS_H | 10 | #define LINUX_NFSD_STATS_H |
| 11 | 11 | ||
| 12 | #include <linux/nfs4.h> | ||
| 13 | |||
| 12 | struct nfsd_stats { | 14 | struct nfsd_stats { |
| 13 | unsigned int rchits; /* repcache hits */ | 15 | unsigned int rchits; /* repcache hits */ |
| 14 | unsigned int rcmisses; /* repcache hits */ | 16 | unsigned int rcmisses; /* repcache hits */ |
| @@ -27,6 +29,10 @@ struct nfsd_stats { | |||
| 27 | unsigned int ra_size; /* size of ra cache */ | 29 | unsigned int ra_size; /* size of ra cache */ |
| 28 | unsigned int ra_depth[11]; /* number of times ra entry was found that deep | 30 | unsigned int ra_depth[11]; /* number of times ra entry was found that deep |
| 29 | * in the cache (10percentiles). [10] = not found */ | 31 | * in the cache (10percentiles). [10] = not found */ |
| 32 | #ifdef CONFIG_NFSD_V4 | ||
| 33 | unsigned int nfs4_opcount[LAST_NFS4_OP + 1]; /* count of individual nfsv4 operations */ | ||
| 34 | #endif | ||
| 35 | |||
| 30 | }; | 36 | }; |
| 31 | 37 | ||
| 32 | /* thread usage wraps very million seconds (approx one fortnight) */ | 38 | /* thread usage wraps very million seconds (approx one fortnight) */ |
diff --git a/include/linux/nsc_gpio.h b/include/linux/nsc_gpio.h index 135742cfada5..7da0cf3702ee 100644 --- a/include/linux/nsc_gpio.h +++ b/include/linux/nsc_gpio.h | |||
| @@ -25,8 +25,6 @@ struct nsc_gpio_ops { | |||
| 25 | void (*gpio_dump) (struct nsc_gpio_ops *amp, unsigned iminor); | 25 | void (*gpio_dump) (struct nsc_gpio_ops *amp, unsigned iminor); |
| 26 | int (*gpio_get) (unsigned iminor); | 26 | int (*gpio_get) (unsigned iminor); |
| 27 | void (*gpio_set) (unsigned iminor, int state); | 27 | void (*gpio_set) (unsigned iminor, int state); |
| 28 | void (*gpio_set_high)(unsigned iminor); | ||
| 29 | void (*gpio_set_low) (unsigned iminor); | ||
| 30 | void (*gpio_change) (unsigned iminor); | 28 | void (*gpio_change) (unsigned iminor); |
| 31 | int (*gpio_current) (unsigned iminor); | 29 | int (*gpio_current) (unsigned iminor); |
| 32 | struct device* dev; /* for dev_dbg() support, set in init */ | 30 | struct device* dev; /* for dev_dbg() support, set in init */ |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 983fca251b25..8565b81d7fbc 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -161,6 +161,7 @@ struct pci_dev { | |||
| 161 | unsigned int is_enabled:1; /* pci_enable_device has been called */ | 161 | unsigned int is_enabled:1; /* pci_enable_device has been called */ |
| 162 | unsigned int is_busmaster:1; /* device is busmaster */ | 162 | unsigned int is_busmaster:1; /* device is busmaster */ |
| 163 | unsigned int no_msi:1; /* device may not use msi */ | 163 | unsigned int no_msi:1; /* device may not use msi */ |
| 164 | unsigned int no_d1d2:1; /* only allow d0 or d3 */ | ||
| 164 | unsigned int block_ucfg_access:1; /* userspace config space access is blocked */ | 165 | unsigned int block_ucfg_access:1; /* userspace config space access is blocked */ |
| 165 | unsigned int broken_parity_status:1; /* Device generates false positive parity */ | 166 | unsigned int broken_parity_status:1; /* Device generates false positive parity */ |
| 166 | unsigned int msi_enabled:1; | 167 | unsigned int msi_enabled:1; |
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h index 6bce4a240364..96930cb5927c 100644 --- a/include/linux/pci_regs.h +++ b/include/linux/pci_regs.h | |||
| @@ -422,7 +422,23 @@ | |||
| 422 | #define PCI_ERR_CAP_ECRC_CHKE 0x00000100 /* ECRC Check Enable */ | 422 | #define PCI_ERR_CAP_ECRC_CHKE 0x00000100 /* ECRC Check Enable */ |
| 423 | #define PCI_ERR_HEADER_LOG 28 /* Header Log Register (16 bytes) */ | 423 | #define PCI_ERR_HEADER_LOG 28 /* Header Log Register (16 bytes) */ |
| 424 | #define PCI_ERR_ROOT_COMMAND 44 /* Root Error Command */ | 424 | #define PCI_ERR_ROOT_COMMAND 44 /* Root Error Command */ |
| 425 | /* Correctable Err Reporting Enable */ | ||
| 426 | #define PCI_ERR_ROOT_CMD_COR_EN 0x00000001 | ||
| 427 | /* Non-fatal Err Reporting Enable */ | ||
| 428 | #define PCI_ERR_ROOT_CMD_NONFATAL_EN 0x00000002 | ||
| 429 | /* Fatal Err Reporting Enable */ | ||
| 430 | #define PCI_ERR_ROOT_CMD_FATAL_EN 0x00000004 | ||
| 425 | #define PCI_ERR_ROOT_STATUS 48 | 431 | #define PCI_ERR_ROOT_STATUS 48 |
| 432 | #define PCI_ERR_ROOT_COR_RCV 0x00000001 /* ERR_COR Received */ | ||
| 433 | /* Multi ERR_COR Received */ | ||
| 434 | #define PCI_ERR_ROOT_MULTI_COR_RCV 0x00000002 | ||
| 435 | /* ERR_FATAL/NONFATAL Recevied */ | ||
| 436 | #define PCI_ERR_ROOT_UNCOR_RCV 0x00000004 | ||
| 437 | /* Multi ERR_FATAL/NONFATAL Recevied */ | ||
| 438 | #define PCI_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008 | ||
| 439 | #define PCI_ERR_ROOT_FIRST_FATAL 0x00000010 /* First Fatal */ | ||
| 440 | #define PCI_ERR_ROOT_NONFATAL_RCV 0x00000020 /* Non-Fatal Received */ | ||
| 441 | #define PCI_ERR_ROOT_FATAL_RCV 0x00000040 /* Fatal Received */ | ||
| 426 | #define PCI_ERR_ROOT_COR_SRC 52 | 442 | #define PCI_ERR_ROOT_COR_SRC 52 |
| 427 | #define PCI_ERR_ROOT_SRC 54 | 443 | #define PCI_ERR_ROOT_SRC 54 |
| 428 | 444 | ||
diff --git a/include/linux/pm_legacy.h b/include/linux/pm_legacy.h index 78027c533b94..514729a44688 100644 --- a/include/linux/pm_legacy.h +++ b/include/linux/pm_legacy.h | |||
| @@ -15,11 +15,6 @@ struct pm_dev __deprecated * | |||
| 15 | pm_register(pm_dev_t type, unsigned long id, pm_callback callback); | 15 | pm_register(pm_dev_t type, unsigned long id, pm_callback callback); |
| 16 | 16 | ||
| 17 | /* | 17 | /* |
| 18 | * Unregister all devices with matching callback | ||
| 19 | */ | ||
| 20 | void __deprecated pm_unregister_all(pm_callback callback); | ||
| 21 | |||
| 22 | /* | ||
| 23 | * Send a request to all devices | 18 | * Send a request to all devices |
| 24 | */ | 19 | */ |
| 25 | int __deprecated pm_send_all(pm_request_t rqst, void *data); | 20 | int __deprecated pm_send_all(pm_request_t rqst, void *data); |
| @@ -35,8 +30,6 @@ static inline struct pm_dev *pm_register(pm_dev_t type, | |||
| 35 | return NULL; | 30 | return NULL; |
| 36 | } | 31 | } |
| 37 | 32 | ||
| 38 | static inline void pm_unregister_all(pm_callback callback) {} | ||
| 39 | |||
| 40 | static inline int pm_send_all(pm_request_t rqst, void *data) | 33 | static inline int pm_send_all(pm_request_t rqst, void *data) |
| 41 | { | 34 | { |
| 42 | return 0; | 35 | return 0; |
diff --git a/include/linux/raid/md_k.h b/include/linux/raid/md_k.h index c1e0ac55bab5..d28890295852 100644 --- a/include/linux/raid/md_k.h +++ b/include/linux/raid/md_k.h | |||
| @@ -148,9 +148,10 @@ struct mddev_s | |||
| 148 | 148 | ||
| 149 | struct mdk_thread_s *thread; /* management thread */ | 149 | struct mdk_thread_s *thread; /* management thread */ |
| 150 | struct mdk_thread_s *sync_thread; /* doing resync or reconstruct */ | 150 | struct mdk_thread_s *sync_thread; /* doing resync or reconstruct */ |
| 151 | sector_t curr_resync; /* blocks scheduled */ | 151 | sector_t curr_resync; /* last block scheduled */ |
| 152 | unsigned long resync_mark; /* a recent timestamp */ | 152 | unsigned long resync_mark; /* a recent timestamp */ |
| 153 | sector_t resync_mark_cnt;/* blocks written at resync_mark */ | 153 | sector_t resync_mark_cnt;/* blocks written at resync_mark */ |
| 154 | sector_t curr_mark_cnt; /* blocks scheduled now */ | ||
| 154 | 155 | ||
| 155 | sector_t resync_max_sectors; /* may be set by personality */ | 156 | sector_t resync_max_sectors; /* may be set by personality */ |
| 156 | 157 | ||
diff --git a/include/linux/root_dev.h b/include/linux/root_dev.h index ea4bc9d13735..ed241aad7c17 100644 --- a/include/linux/root_dev.h +++ b/include/linux/root_dev.h | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | #define _ROOT_DEV_H_ | 2 | #define _ROOT_DEV_H_ |
| 3 | 3 | ||
| 4 | #include <linux/major.h> | 4 | #include <linux/major.h> |
| 5 | #include <linux/types.h> | ||
| 6 | #include <linux/kdev_t.h> | ||
| 5 | 7 | ||
| 6 | enum { | 8 | enum { |
| 7 | Root_NFS = MKDEV(UNNAMED_MAJOR, 255), | 9 | Root_NFS = MKDEV(UNNAMED_MAJOR, 255), |
diff --git a/include/linux/rwsem.h b/include/linux/rwsem.h index 658afb37c3f5..7b524b4109a0 100644 --- a/include/linux/rwsem.h +++ b/include/linux/rwsem.h | |||
| @@ -61,12 +61,25 @@ extern void downgrade_write(struct rw_semaphore *sem); | |||
| 61 | 61 | ||
| 62 | #ifdef CONFIG_DEBUG_LOCK_ALLOC | 62 | #ifdef CONFIG_DEBUG_LOCK_ALLOC |
| 63 | /* | 63 | /* |
| 64 | * nested locking: | 64 | * nested locking. NOTE: rwsems are not allowed to recurse |
| 65 | * (which occurs if the same task tries to acquire the same | ||
| 66 | * lock instance multiple times), but multiple locks of the | ||
| 67 | * same lock class might be taken, if the order of the locks | ||
| 68 | * is always the same. This ordering rule can be expressed | ||
| 69 | * to lockdep via the _nested() APIs, but enumerating the | ||
| 70 | * subclasses that are used. (If the nesting relationship is | ||
| 71 | * static then another method for expressing nested locking is | ||
| 72 | * the explicit definition of lock class keys and the use of | ||
| 73 | * lockdep_set_class() at lock initialization time. | ||
| 74 | * See Documentation/lockdep-design.txt for more details.) | ||
| 65 | */ | 75 | */ |
| 66 | extern void down_read_nested(struct rw_semaphore *sem, int subclass); | 76 | extern void down_read_nested(struct rw_semaphore *sem, int subclass); |
| 67 | extern void down_write_nested(struct rw_semaphore *sem, int subclass); | 77 | extern void down_write_nested(struct rw_semaphore *sem, int subclass); |
| 68 | /* | 78 | /* |
| 69 | * Take/release a lock when not the owner will release it: | 79 | * Take/release a lock when not the owner will release it. |
| 80 | * | ||
| 81 | * [ This API should be avoided as much as possible - the | ||
| 82 | * proper abstraction for this case is completions. ] | ||
| 70 | */ | 83 | */ |
| 71 | extern void down_read_non_owner(struct rw_semaphore *sem); | 84 | extern void down_read_non_owner(struct rw_semaphore *sem); |
| 72 | extern void up_read_non_owner(struct rw_semaphore *sem); | 85 | extern void up_read_non_owner(struct rw_semaphore *sem); |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 1c876e27ff93..6afa72e080cb 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -463,6 +463,10 @@ struct signal_struct { | |||
| 463 | #ifdef CONFIG_BSD_PROCESS_ACCT | 463 | #ifdef CONFIG_BSD_PROCESS_ACCT |
| 464 | struct pacct_struct pacct; /* per-process accounting information */ | 464 | struct pacct_struct pacct; /* per-process accounting information */ |
| 465 | #endif | 465 | #endif |
| 466 | #ifdef CONFIG_TASKSTATS | ||
| 467 | spinlock_t stats_lock; | ||
| 468 | struct taskstats *stats; | ||
| 469 | #endif | ||
| 466 | }; | 470 | }; |
| 467 | 471 | ||
| 468 | /* Context switch must be unlocked if interrupts are to be enabled */ | 472 | /* Context switch must be unlocked if interrupts are to be enabled */ |
| @@ -537,7 +541,7 @@ extern struct user_struct root_user; | |||
| 537 | struct backing_dev_info; | 541 | struct backing_dev_info; |
| 538 | struct reclaim_state; | 542 | struct reclaim_state; |
| 539 | 543 | ||
| 540 | #ifdef CONFIG_SCHEDSTATS | 544 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) |
| 541 | struct sched_info { | 545 | struct sched_info { |
| 542 | /* cumulative counters */ | 546 | /* cumulative counters */ |
| 543 | unsigned long cpu_time, /* time spent on the cpu */ | 547 | unsigned long cpu_time, /* time spent on the cpu */ |
| @@ -548,9 +552,53 @@ struct sched_info { | |||
| 548 | unsigned long last_arrival, /* when we last ran on a cpu */ | 552 | unsigned long last_arrival, /* when we last ran on a cpu */ |
| 549 | last_queued; /* when we were last queued to run */ | 553 | last_queued; /* when we were last queued to run */ |
| 550 | }; | 554 | }; |
| 555 | #endif /* defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) */ | ||
| 551 | 556 | ||
| 557 | #ifdef CONFIG_SCHEDSTATS | ||
| 552 | extern struct file_operations proc_schedstat_operations; | 558 | extern struct file_operations proc_schedstat_operations; |
| 559 | #endif /* CONFIG_SCHEDSTATS */ | ||
| 560 | |||
| 561 | #ifdef CONFIG_TASK_DELAY_ACCT | ||
| 562 | struct task_delay_info { | ||
| 563 | spinlock_t lock; | ||
| 564 | unsigned int flags; /* Private per-task flags */ | ||
| 565 | |||
| 566 | /* For each stat XXX, add following, aligned appropriately | ||
| 567 | * | ||
| 568 | * struct timespec XXX_start, XXX_end; | ||
| 569 | * u64 XXX_delay; | ||
| 570 | * u32 XXX_count; | ||
| 571 | * | ||
| 572 | * Atomicity of updates to XXX_delay, XXX_count protected by | ||
| 573 | * single lock above (split into XXX_lock if contention is an issue). | ||
| 574 | */ | ||
| 575 | |||
| 576 | /* | ||
| 577 | * XXX_count is incremented on every XXX operation, the delay | ||
| 578 | * associated with the operation is added to XXX_delay. | ||
| 579 | * XXX_delay contains the accumulated delay time in nanoseconds. | ||
| 580 | */ | ||
| 581 | struct timespec blkio_start, blkio_end; /* Shared by blkio, swapin */ | ||
| 582 | u64 blkio_delay; /* wait for sync block io completion */ | ||
| 583 | u64 swapin_delay; /* wait for swapin block io completion */ | ||
| 584 | u32 blkio_count; /* total count of the number of sync block */ | ||
| 585 | /* io operations performed */ | ||
| 586 | u32 swapin_count; /* total count of the number of swapin block */ | ||
| 587 | /* io operations performed */ | ||
| 588 | }; | ||
| 589 | #endif /* CONFIG_TASK_DELAY_ACCT */ | ||
| 590 | |||
| 591 | static inline int sched_info_on(void) | ||
| 592 | { | ||
| 593 | #ifdef CONFIG_SCHEDSTATS | ||
| 594 | return 1; | ||
| 595 | #elif defined(CONFIG_TASK_DELAY_ACCT) | ||
| 596 | extern int delayacct_on; | ||
| 597 | return delayacct_on; | ||
| 598 | #else | ||
| 599 | return 0; | ||
| 553 | #endif | 600 | #endif |
| 601 | } | ||
| 554 | 602 | ||
| 555 | enum idle_type | 603 | enum idle_type |
| 556 | { | 604 | { |
| @@ -747,7 +795,7 @@ struct task_struct { | |||
| 747 | cpumask_t cpus_allowed; | 795 | cpumask_t cpus_allowed; |
| 748 | unsigned int time_slice, first_time_slice; | 796 | unsigned int time_slice, first_time_slice; |
| 749 | 797 | ||
| 750 | #ifdef CONFIG_SCHEDSTATS | 798 | #if defined(CONFIG_SCHEDSTATS) || defined(CONFIG_TASK_DELAY_ACCT) |
| 751 | struct sched_info sched_info; | 799 | struct sched_info sched_info; |
| 752 | #endif | 800 | #endif |
| 753 | 801 | ||
| @@ -945,6 +993,10 @@ struct task_struct { | |||
| 945 | * cache last used pipe for splice | 993 | * cache last used pipe for splice |
| 946 | */ | 994 | */ |
| 947 | struct pipe_inode_info *splice_pipe; | 995 | struct pipe_inode_info *splice_pipe; |
| 996 | #ifdef CONFIG_TASK_DELAY_ACCT | ||
| 997 | spinlock_t delays_lock; | ||
| 998 | struct task_delay_info *delays; | ||
| 999 | #endif | ||
| 948 | }; | 1000 | }; |
| 949 | 1001 | ||
| 950 | static inline pid_t process_group(struct task_struct *tsk) | 1002 | static inline pid_t process_group(struct task_struct *tsk) |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 058cba70818a..86501a3de2ac 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
| @@ -227,6 +227,7 @@ struct uart_port { | |||
| 227 | #define UPIO_MEM (2) | 227 | #define UPIO_MEM (2) |
| 228 | #define UPIO_MEM32 (3) | 228 | #define UPIO_MEM32 (3) |
| 229 | #define UPIO_AU (4) /* Au1x00 type IO */ | 229 | #define UPIO_AU (4) /* Au1x00 type IO */ |
| 230 | #define UPIO_TSI (5) /* Tsi108/109 type IO */ | ||
| 230 | 231 | ||
| 231 | unsigned int read_status_mask; /* driver specific */ | 232 | unsigned int read_status_mask; /* driver specific */ |
| 232 | unsigned int ignore_status_mask; /* driver specific */ | 233 | unsigned int ignore_status_mask; /* driver specific */ |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 3597b4f14389..4307e764ef0a 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -1066,9 +1066,8 @@ static inline void __skb_queue_purge(struct sk_buff_head *list) | |||
| 1066 | kfree_skb(skb); | 1066 | kfree_skb(skb); |
| 1067 | } | 1067 | } |
| 1068 | 1068 | ||
| 1069 | #ifndef CONFIG_HAVE_ARCH_DEV_ALLOC_SKB | ||
| 1070 | /** | 1069 | /** |
| 1071 | * __dev_alloc_skb - allocate an skbuff for sending | 1070 | * __dev_alloc_skb - allocate an skbuff for receiving |
| 1072 | * @length: length to allocate | 1071 | * @length: length to allocate |
| 1073 | * @gfp_mask: get_free_pages mask, passed to alloc_skb | 1072 | * @gfp_mask: get_free_pages mask, passed to alloc_skb |
| 1074 | * | 1073 | * |
| @@ -1087,12 +1086,9 @@ static inline struct sk_buff *__dev_alloc_skb(unsigned int length, | |||
| 1087 | skb_reserve(skb, NET_SKB_PAD); | 1086 | skb_reserve(skb, NET_SKB_PAD); |
| 1088 | return skb; | 1087 | return skb; |
| 1089 | } | 1088 | } |
| 1090 | #else | ||
| 1091 | extern struct sk_buff *__dev_alloc_skb(unsigned int length, int gfp_mask); | ||
| 1092 | #endif | ||
| 1093 | 1089 | ||
| 1094 | /** | 1090 | /** |
| 1095 | * dev_alloc_skb - allocate an skbuff for sending | 1091 | * dev_alloc_skb - allocate an skbuff for receiving |
| 1096 | * @length: length to allocate | 1092 | * @length: length to allocate |
| 1097 | * | 1093 | * |
| 1098 | * Allocate a new &sk_buff and assign it a usage count of one. The | 1094 | * Allocate a new &sk_buff and assign it a usage count of one. The |
| @@ -1455,5 +1451,10 @@ static inline void skb_init_secmark(struct sk_buff *skb) | |||
| 1455 | { } | 1451 | { } |
| 1456 | #endif | 1452 | #endif |
| 1457 | 1453 | ||
| 1454 | static inline int skb_is_gso(const struct sk_buff *skb) | ||
| 1455 | { | ||
| 1456 | return skb_shinfo(skb)->gso_size; | ||
| 1457 | } | ||
| 1458 | |||
| 1458 | #endif /* __KERNEL__ */ | 1459 | #endif /* __KERNEL__ */ |
| 1459 | #endif /* _LINUX_SKBUFF_H */ | 1460 | #endif /* _LINUX_SKBUFF_H */ |
diff --git a/include/linux/taskstats.h b/include/linux/taskstats.h new file mode 100644 index 000000000000..f1cb6cddd19d --- /dev/null +++ b/include/linux/taskstats.h | |||
| @@ -0,0 +1,137 @@ | |||
| 1 | /* taskstats.h - exporting per-task statistics | ||
| 2 | * | ||
| 3 | * Copyright (C) Shailabh Nagar, IBM Corp. 2006 | ||
| 4 | * (C) Balbir Singh, IBM Corp. 2006 | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify it | ||
| 7 | * under the terms of version 2.1 of the GNU Lesser General Public License | ||
| 8 | * as published by the Free Software Foundation. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it would be useful, but | ||
| 11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. | ||
| 13 | */ | ||
| 14 | |||
| 15 | #ifndef _LINUX_TASKSTATS_H | ||
| 16 | #define _LINUX_TASKSTATS_H | ||
| 17 | |||
| 18 | /* Format for per-task data returned to userland when | ||
| 19 | * - a task exits | ||
| 20 | * - listener requests stats for a task | ||
| 21 | * | ||
| 22 | * The struct is versioned. Newer versions should only add fields to | ||
| 23 | * the bottom of the struct to maintain backward compatibility. | ||
| 24 | * | ||
| 25 | * | ||
| 26 | * To add new fields | ||
| 27 | * a) bump up TASKSTATS_VERSION | ||
| 28 | * b) add comment indicating new version number at end of struct | ||
| 29 | * c) add new fields after version comment; maintain 64-bit alignment | ||
| 30 | */ | ||
| 31 | |||
| 32 | #define TASKSTATS_VERSION 1 | ||
| 33 | |||
| 34 | struct taskstats { | ||
| 35 | |||
| 36 | /* Version 1 */ | ||
| 37 | __u16 version; | ||
| 38 | __u16 padding[3]; /* Userspace should not interpret the padding | ||
| 39 | * field which can be replaced by useful | ||
| 40 | * fields if struct taskstats is extended. | ||
| 41 | */ | ||
| 42 | |||
| 43 | /* Delay accounting fields start | ||
| 44 | * | ||
| 45 | * All values, until comment "Delay accounting fields end" are | ||
| 46 | * available only if delay accounting is enabled, even though the last | ||
| 47 | * few fields are not delays | ||
| 48 | * | ||
| 49 | * xxx_count is the number of delay values recorded | ||
| 50 | * xxx_delay_total is the corresponding cumulative delay in nanoseconds | ||
| 51 | * | ||
| 52 | * xxx_delay_total wraps around to zero on overflow | ||
| 53 | * xxx_count incremented regardless of overflow | ||
| 54 | */ | ||
| 55 | |||
| 56 | /* Delay waiting for cpu, while runnable | ||
| 57 | * count, delay_total NOT updated atomically | ||
| 58 | */ | ||
| 59 | __u64 cpu_count; | ||
| 60 | __u64 cpu_delay_total; | ||
| 61 | |||
| 62 | /* Following four fields atomically updated using task->delays->lock */ | ||
| 63 | |||
| 64 | /* Delay waiting for synchronous block I/O to complete | ||
| 65 | * does not account for delays in I/O submission | ||
| 66 | */ | ||
| 67 | __u64 blkio_count; | ||
| 68 | __u64 blkio_delay_total; | ||
| 69 | |||
| 70 | /* Delay waiting for page fault I/O (swap in only) */ | ||
| 71 | __u64 swapin_count; | ||
| 72 | __u64 swapin_delay_total; | ||
| 73 | |||
| 74 | /* cpu "wall-clock" running time | ||
| 75 | * On some architectures, value will adjust for cpu time stolen | ||
| 76 | * from the kernel in involuntary waits due to virtualization. | ||
| 77 | * Value is cumulative, in nanoseconds, without a corresponding count | ||
| 78 | * and wraps around to zero silently on overflow | ||
| 79 | */ | ||
| 80 | __u64 cpu_run_real_total; | ||
| 81 | |||
| 82 | /* cpu "virtual" running time | ||
| 83 | * Uses time intervals seen by the kernel i.e. no adjustment | ||
| 84 | * for kernel's involuntary waits due to virtualization. | ||
| 85 | * Value is cumulative, in nanoseconds, without a corresponding count | ||
| 86 | * and wraps around to zero silently on overflow | ||
| 87 | */ | ||
| 88 | __u64 cpu_run_virtual_total; | ||
| 89 | /* Delay accounting fields end */ | ||
| 90 | /* version 1 ends here */ | ||
| 91 | }; | ||
| 92 | |||
| 93 | |||
| 94 | /* | ||
| 95 | * Commands sent from userspace | ||
| 96 | * Not versioned. New commands should only be inserted at the enum's end | ||
| 97 | * prior to __TASKSTATS_CMD_MAX | ||
| 98 | */ | ||
| 99 | |||
| 100 | enum { | ||
| 101 | TASKSTATS_CMD_UNSPEC = 0, /* Reserved */ | ||
| 102 | TASKSTATS_CMD_GET, /* user->kernel request/get-response */ | ||
| 103 | TASKSTATS_CMD_NEW, /* kernel->user event */ | ||
| 104 | __TASKSTATS_CMD_MAX, | ||
| 105 | }; | ||
| 106 | |||
| 107 | #define TASKSTATS_CMD_MAX (__TASKSTATS_CMD_MAX - 1) | ||
| 108 | |||
| 109 | enum { | ||
| 110 | TASKSTATS_TYPE_UNSPEC = 0, /* Reserved */ | ||
| 111 | TASKSTATS_TYPE_PID, /* Process id */ | ||
| 112 | TASKSTATS_TYPE_TGID, /* Thread group id */ | ||
| 113 | TASKSTATS_TYPE_STATS, /* taskstats structure */ | ||
| 114 | TASKSTATS_TYPE_AGGR_PID, /* contains pid + stats */ | ||
| 115 | TASKSTATS_TYPE_AGGR_TGID, /* contains tgid + stats */ | ||
| 116 | __TASKSTATS_TYPE_MAX, | ||
| 117 | }; | ||
| 118 | |||
| 119 | #define TASKSTATS_TYPE_MAX (__TASKSTATS_TYPE_MAX - 1) | ||
| 120 | |||
| 121 | enum { | ||
| 122 | TASKSTATS_CMD_ATTR_UNSPEC = 0, | ||
| 123 | TASKSTATS_CMD_ATTR_PID, | ||
| 124 | TASKSTATS_CMD_ATTR_TGID, | ||
| 125 | TASKSTATS_CMD_ATTR_REGISTER_CPUMASK, | ||
| 126 | TASKSTATS_CMD_ATTR_DEREGISTER_CPUMASK, | ||
| 127 | __TASKSTATS_CMD_ATTR_MAX, | ||
| 128 | }; | ||
| 129 | |||
| 130 | #define TASKSTATS_CMD_ATTR_MAX (__TASKSTATS_CMD_ATTR_MAX - 1) | ||
| 131 | |||
| 132 | /* NETLINK_GENERIC related info */ | ||
| 133 | |||
| 134 | #define TASKSTATS_GENL_NAME "TASKSTATS" | ||
| 135 | #define TASKSTATS_GENL_VERSION 0x1 | ||
| 136 | |||
| 137 | #endif /* _LINUX_TASKSTATS_H */ | ||
diff --git a/include/linux/taskstats_kern.h b/include/linux/taskstats_kern.h new file mode 100644 index 000000000000..16894b7edcc8 --- /dev/null +++ b/include/linux/taskstats_kern.h | |||
| @@ -0,0 +1,89 @@ | |||
| 1 | /* taskstats_kern.h - kernel header for per-task statistics interface | ||
| 2 | * | ||
| 3 | * Copyright (C) Shailabh Nagar, IBM Corp. 2006 | ||
| 4 | * (C) Balbir Singh, IBM Corp. 2006 | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef _LINUX_TASKSTATS_KERN_H | ||
| 8 | #define _LINUX_TASKSTATS_KERN_H | ||
| 9 | |||
| 10 | #include <linux/taskstats.h> | ||
| 11 | #include <linux/sched.h> | ||
| 12 | #include <net/genetlink.h> | ||
| 13 | |||
| 14 | #ifdef CONFIG_TASKSTATS | ||
| 15 | extern kmem_cache_t *taskstats_cache; | ||
| 16 | extern struct mutex taskstats_exit_mutex; | ||
| 17 | |||
| 18 | static inline void taskstats_exit_free(struct taskstats *tidstats) | ||
| 19 | { | ||
| 20 | if (tidstats) | ||
| 21 | kmem_cache_free(taskstats_cache, tidstats); | ||
| 22 | } | ||
| 23 | |||
| 24 | static inline void taskstats_tgid_init(struct signal_struct *sig) | ||
| 25 | { | ||
| 26 | spin_lock_init(&sig->stats_lock); | ||
| 27 | sig->stats = NULL; | ||
| 28 | } | ||
| 29 | |||
| 30 | static inline void taskstats_tgid_alloc(struct signal_struct *sig) | ||
| 31 | { | ||
| 32 | struct taskstats *stats; | ||
| 33 | unsigned long flags; | ||
| 34 | |||
| 35 | stats = kmem_cache_zalloc(taskstats_cache, SLAB_KERNEL); | ||
| 36 | if (!stats) | ||
| 37 | return; | ||
| 38 | |||
| 39 | spin_lock_irqsave(&sig->stats_lock, flags); | ||
| 40 | if (!sig->stats) { | ||
| 41 | sig->stats = stats; | ||
| 42 | stats = NULL; | ||
| 43 | } | ||
| 44 | spin_unlock_irqrestore(&sig->stats_lock, flags); | ||
| 45 | |||
| 46 | if (stats) | ||
| 47 | kmem_cache_free(taskstats_cache, stats); | ||
| 48 | } | ||
| 49 | |||
| 50 | static inline void taskstats_tgid_free(struct signal_struct *sig) | ||
| 51 | { | ||
| 52 | struct taskstats *stats = NULL; | ||
| 53 | unsigned long flags; | ||
| 54 | |||
| 55 | spin_lock_irqsave(&sig->stats_lock, flags); | ||
| 56 | if (sig->stats) { | ||
| 57 | stats = sig->stats; | ||
| 58 | sig->stats = NULL; | ||
| 59 | } | ||
| 60 | spin_unlock_irqrestore(&sig->stats_lock, flags); | ||
| 61 | if (stats) | ||
| 62 | kmem_cache_free(taskstats_cache, stats); | ||
| 63 | } | ||
| 64 | |||
| 65 | extern void taskstats_exit_alloc(struct taskstats **, unsigned int *); | ||
| 66 | extern void taskstats_exit_send(struct task_struct *, struct taskstats *, int, unsigned int); | ||
| 67 | extern void taskstats_init_early(void); | ||
| 68 | extern void taskstats_tgid_alloc(struct signal_struct *); | ||
| 69 | #else | ||
| 70 | static inline void taskstats_exit_alloc(struct taskstats **ptidstats, unsigned int *mycpu) | ||
| 71 | {} | ||
| 72 | static inline void taskstats_exit_free(struct taskstats *ptidstats) | ||
| 73 | {} | ||
| 74 | static inline void taskstats_exit_send(struct task_struct *tsk, | ||
| 75 | struct taskstats *tidstats, | ||
| 76 | int group_dead, unsigned int cpu) | ||
| 77 | {} | ||
| 78 | static inline void taskstats_tgid_init(struct signal_struct *sig) | ||
| 79 | {} | ||
| 80 | static inline void taskstats_tgid_alloc(struct signal_struct *sig) | ||
| 81 | {} | ||
| 82 | static inline void taskstats_tgid_free(struct signal_struct *sig) | ||
| 83 | {} | ||
| 84 | static inline void taskstats_init_early(void) | ||
| 85 | {} | ||
| 86 | #endif /* CONFIG_TASKSTATS */ | ||
| 87 | |||
| 88 | #endif | ||
| 89 | |||
diff --git a/include/linux/time.h b/include/linux/time.h index c05f8bb9a323..a5b739967b74 100644 --- a/include/linux/time.h +++ b/include/linux/time.h | |||
| @@ -71,6 +71,18 @@ extern unsigned long mktime(const unsigned int year, const unsigned int mon, | |||
| 71 | extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec); | 71 | extern void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec); |
| 72 | 72 | ||
| 73 | /* | 73 | /* |
| 74 | * sub = lhs - rhs, in normalized form | ||
| 75 | */ | ||
| 76 | static inline struct timespec timespec_sub(struct timespec lhs, | ||
| 77 | struct timespec rhs) | ||
| 78 | { | ||
| 79 | struct timespec ts_delta; | ||
| 80 | set_normalized_timespec(&ts_delta, lhs.tv_sec - rhs.tv_sec, | ||
| 81 | lhs.tv_nsec - rhs.tv_nsec); | ||
| 82 | return ts_delta; | ||
| 83 | } | ||
| 84 | |||
| 85 | /* | ||
| 74 | * Returns true if the timespec is norm, false if denorm: | 86 | * Returns true if the timespec is norm, false if denorm: |
| 75 | */ | 87 | */ |
| 76 | #define timespec_valid(ts) \ | 88 | #define timespec_valid(ts) \ |
diff --git a/include/linux/tty.h b/include/linux/tty.h index b3b807e4b050..e421d5e34818 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -5,16 +5,6 @@ | |||
| 5 | * 'tty.h' defines some structures used by tty_io.c and some defines. | 5 | * 'tty.h' defines some structures used by tty_io.c and some defines. |
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | /* | ||
| 9 | * These constants are also useful for user-level apps (e.g., VC | ||
| 10 | * resizing). | ||
| 11 | */ | ||
| 12 | #define MIN_NR_CONSOLES 1 /* must be at least 1 */ | ||
| 13 | #define MAX_NR_CONSOLES 63 /* serial lines start at 64 */ | ||
| 14 | #define MAX_NR_USER_CONSOLES 63 /* must be root to allocate above this */ | ||
| 15 | /* Note: the ioctl VT_GETSTATE does not work for | ||
| 16 | consoles 16 and higher (since it returns a short) */ | ||
| 17 | |||
| 18 | #ifdef __KERNEL__ | 8 | #ifdef __KERNEL__ |
| 19 | #include <linux/fs.h> | 9 | #include <linux/fs.h> |
| 20 | #include <linux/major.h> | 10 | #include <linux/major.h> |
| @@ -22,7 +12,6 @@ | |||
| 22 | #include <linux/workqueue.h> | 12 | #include <linux/workqueue.h> |
| 23 | #include <linux/tty_driver.h> | 13 | #include <linux/tty_driver.h> |
| 24 | #include <linux/tty_ldisc.h> | 14 | #include <linux/tty_ldisc.h> |
| 25 | #include <linux/screen_info.h> | ||
| 26 | #include <linux/mutex.h> | 15 | #include <linux/mutex.h> |
| 27 | 16 | ||
| 28 | #include <asm/system.h> | 17 | #include <asm/system.h> |
| @@ -270,7 +259,6 @@ struct tty_struct { | |||
| 270 | extern void tty_write_flush(struct tty_struct *); | 259 | extern void tty_write_flush(struct tty_struct *); |
| 271 | 260 | ||
| 272 | extern struct termios tty_std_termios; | 261 | extern struct termios tty_std_termios; |
| 273 | extern int fg_console, last_console, want_console; | ||
| 274 | 262 | ||
| 275 | extern int kmsg_redirect; | 263 | extern int kmsg_redirect; |
| 276 | 264 | ||
diff --git a/include/linux/usb.h b/include/linux/usb.h index 8dead32e7ebf..c944e8f06a4a 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
| @@ -48,7 +48,7 @@ struct ep_device; | |||
| 48 | * @urb_list: urbs queued to this endpoint; maintained by usbcore | 48 | * @urb_list: urbs queued to this endpoint; maintained by usbcore |
| 49 | * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH) | 49 | * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH) |
| 50 | * with one or more transfer descriptors (TDs) per urb | 50 | * with one or more transfer descriptors (TDs) per urb |
| 51 | * @kobj: kobject for sysfs info | 51 | * @ep_dev: ep_device for sysfs info |
| 52 | * @extra: descriptors following this endpoint in the configuration | 52 | * @extra: descriptors following this endpoint in the configuration |
| 53 | * @extralen: how many bytes of "extra" are valid | 53 | * @extralen: how many bytes of "extra" are valid |
| 54 | * | 54 | * |
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h new file mode 100644 index 000000000000..91c983eef899 --- /dev/null +++ b/include/linux/usb/serial.h | |||
| @@ -0,0 +1,300 @@ | |||
| 1 | /* | ||
| 2 | * USB Serial Converter stuff | ||
| 3 | * | ||
| 4 | * Copyright (C) 1999 - 2005 | ||
| 5 | * Greg Kroah-Hartman (greg@kroah.com) | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; version 2 of the License. | ||
| 10 | * | ||
| 11 | */ | ||
| 12 | |||
| 13 | |||
| 14 | #ifndef __LINUX_USB_SERIAL_H | ||
| 15 | #define __LINUX_USB_SERIAL_H | ||
| 16 | |||
| 17 | #include <linux/kref.h> | ||
| 18 | #include <linux/mutex.h> | ||
| 19 | |||
| 20 | #define SERIAL_TTY_MAJOR 188 /* Nice legal number now */ | ||
| 21 | #define SERIAL_TTY_MINORS 255 /* loads of devices :) */ | ||
| 22 | |||
| 23 | #define MAX_NUM_PORTS 8 /* The maximum number of ports one device can grab at once */ | ||
| 24 | |||
| 25 | /* parity check flag */ | ||
| 26 | #define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) | ||
| 27 | |||
| 28 | /** | ||
| 29 | * usb_serial_port: structure for the specific ports of a device. | ||
| 30 | * @serial: pointer back to the struct usb_serial owner of this port. | ||
| 31 | * @tty: pointer to the corresponding tty for this port. | ||
| 32 | * @lock: spinlock to grab when updating portions of this structure. | ||
| 33 | * @mutex: mutex used to synchronize serial_open() and serial_close() | ||
| 34 | * access for this port. | ||
| 35 | * @number: the number of the port (the minor number). | ||
| 36 | * @interrupt_in_buffer: pointer to the interrupt in buffer for this port. | ||
| 37 | * @interrupt_in_urb: pointer to the interrupt in struct urb for this port. | ||
| 38 | * @interrupt_in_endpointAddress: endpoint address for the interrupt in pipe | ||
| 39 | * for this port. | ||
| 40 | * @interrupt_out_buffer: pointer to the interrupt out buffer for this port. | ||
| 41 | * @interrupt_out_size: the size of the interrupt_out_buffer, in bytes. | ||
| 42 | * @interrupt_out_urb: pointer to the interrupt out struct urb for this port. | ||
| 43 | * @interrupt_out_endpointAddress: endpoint address for the interrupt out pipe | ||
| 44 | * for this port. | ||
| 45 | * @bulk_in_buffer: pointer to the bulk in buffer for this port. | ||
| 46 | * @read_urb: pointer to the bulk in struct urb for this port. | ||
| 47 | * @bulk_in_endpointAddress: endpoint address for the bulk in pipe for this | ||
| 48 | * port. | ||
| 49 | * @bulk_out_buffer: pointer to the bulk out buffer for this port. | ||
| 50 | * @bulk_out_size: the size of the bulk_out_buffer, in bytes. | ||
| 51 | * @write_urb: pointer to the bulk out struct urb for this port. | ||
| 52 | * @bulk_out_endpointAddress: endpoint address for the bulk out pipe for this | ||
| 53 | * port. | ||
| 54 | * @write_wait: a wait_queue_head_t used by the port. | ||
| 55 | * @work: work queue entry for the line discipline waking up. | ||
| 56 | * @open_count: number of times this port has been opened. | ||
| 57 | * | ||
| 58 | * This structure is used by the usb-serial core and drivers for the specific | ||
| 59 | * ports of a device. | ||
| 60 | */ | ||
| 61 | struct usb_serial_port { | ||
| 62 | struct usb_serial * serial; | ||
| 63 | struct tty_struct * tty; | ||
| 64 | spinlock_t lock; | ||
| 65 | struct mutex mutex; | ||
| 66 | unsigned char number; | ||
| 67 | |||
| 68 | unsigned char * interrupt_in_buffer; | ||
| 69 | struct urb * interrupt_in_urb; | ||
| 70 | __u8 interrupt_in_endpointAddress; | ||
| 71 | |||
| 72 | unsigned char * interrupt_out_buffer; | ||
| 73 | int interrupt_out_size; | ||
| 74 | struct urb * interrupt_out_urb; | ||
| 75 | __u8 interrupt_out_endpointAddress; | ||
| 76 | |||
| 77 | unsigned char * bulk_in_buffer; | ||
| 78 | int bulk_in_size; | ||
| 79 | struct urb * read_urb; | ||
| 80 | __u8 bulk_in_endpointAddress; | ||
| 81 | |||
| 82 | unsigned char * bulk_out_buffer; | ||
| 83 | int bulk_out_size; | ||
| 84 | struct urb * write_urb; | ||
| 85 | int write_urb_busy; | ||
| 86 | __u8 bulk_out_endpointAddress; | ||
| 87 | |||
| 88 | wait_queue_head_t write_wait; | ||
| 89 | struct work_struct work; | ||
| 90 | int open_count; | ||
| 91 | struct device dev; | ||
| 92 | }; | ||
| 93 | #define to_usb_serial_port(d) container_of(d, struct usb_serial_port, dev) | ||
| 94 | |||
| 95 | /* get and set the port private data pointer helper functions */ | ||
| 96 | static inline void *usb_get_serial_port_data (struct usb_serial_port *port) | ||
| 97 | { | ||
| 98 | return dev_get_drvdata(&port->dev); | ||
| 99 | } | ||
| 100 | |||
| 101 | static inline void usb_set_serial_port_data (struct usb_serial_port *port, void *data) | ||
| 102 | { | ||
| 103 | dev_set_drvdata(&port->dev, data); | ||
| 104 | } | ||
| 105 | |||
| 106 | /** | ||
| 107 | * usb_serial - structure used by the usb-serial core for a device | ||
| 108 | * @dev: pointer to the struct usb_device for this device | ||
| 109 | * @type: pointer to the struct usb_serial_driver for this device | ||
| 110 | * @interface: pointer to the struct usb_interface for this device | ||
| 111 | * @minor: the starting minor number for this device | ||
| 112 | * @num_ports: the number of ports this device has | ||
| 113 | * @num_interrupt_in: number of interrupt in endpoints we have | ||
| 114 | * @num_interrupt_out: number of interrupt out endpoints we have | ||
| 115 | * @num_bulk_in: number of bulk in endpoints we have | ||
| 116 | * @num_bulk_out: number of bulk out endpoints we have | ||
| 117 | * @port: array of struct usb_serial_port structures for the different ports. | ||
| 118 | * @private: place to put any driver specific information that is needed. The | ||
| 119 | * usb-serial driver is required to manage this data, the usb-serial core | ||
| 120 | * will not touch this. Use usb_get_serial_data() and | ||
| 121 | * usb_set_serial_data() to access this. | ||
| 122 | */ | ||
| 123 | struct usb_serial { | ||
| 124 | struct usb_device * dev; | ||
| 125 | struct usb_serial_driver * type; | ||
| 126 | struct usb_interface * interface; | ||
| 127 | unsigned char minor; | ||
| 128 | unsigned char num_ports; | ||
| 129 | unsigned char num_port_pointers; | ||
| 130 | char num_interrupt_in; | ||
| 131 | char num_interrupt_out; | ||
| 132 | char num_bulk_in; | ||
| 133 | char num_bulk_out; | ||
| 134 | struct usb_serial_port * port[MAX_NUM_PORTS]; | ||
| 135 | struct kref kref; | ||
| 136 | void * private; | ||
| 137 | }; | ||
| 138 | #define to_usb_serial(d) container_of(d, struct usb_serial, kref) | ||
| 139 | |||
| 140 | #define NUM_DONT_CARE (-1) | ||
| 141 | |||
| 142 | /* get and set the serial private data pointer helper functions */ | ||
| 143 | static inline void *usb_get_serial_data (struct usb_serial *serial) | ||
| 144 | { | ||
| 145 | return serial->private; | ||
| 146 | } | ||
| 147 | |||
| 148 | static inline void usb_set_serial_data (struct usb_serial *serial, void *data) | ||
| 149 | { | ||
| 150 | serial->private = data; | ||
| 151 | } | ||
| 152 | |||
| 153 | /** | ||
| 154 | * usb_serial_driver - describes a usb serial driver | ||
| 155 | * @description: pointer to a string that describes this driver. This string used | ||
| 156 | * in the syslog messages when a device is inserted or removed. | ||
| 157 | * @id_table: pointer to a list of usb_device_id structures that define all | ||
| 158 | * of the devices this structure can support. | ||
| 159 | * @num_interrupt_in: the number of interrupt in endpoints this device will | ||
| 160 | * have. | ||
| 161 | * @num_interrupt_out: the number of interrupt out endpoints this device will | ||
| 162 | * have. | ||
| 163 | * @num_bulk_in: the number of bulk in endpoints this device will have. | ||
| 164 | * @num_bulk_out: the number of bulk out endpoints this device will have. | ||
| 165 | * @num_ports: the number of different ports this device will have. | ||
| 166 | * @calc_num_ports: pointer to a function to determine how many ports this | ||
| 167 | * device has dynamically. It will be called after the probe() | ||
| 168 | * callback is called, but before attach() | ||
| 169 | * @probe: pointer to the driver's probe function. | ||
| 170 | * This will be called when the device is inserted into the system, | ||
| 171 | * but before the device has been fully initialized by the usb_serial | ||
| 172 | * subsystem. Use this function to download any firmware to the device, | ||
| 173 | * or any other early initialization that might be needed. | ||
| 174 | * Return 0 to continue on with the initialization sequence. Anything | ||
| 175 | * else will abort it. | ||
| 176 | * @attach: pointer to the driver's attach function. | ||
| 177 | * This will be called when the struct usb_serial structure is fully set | ||
| 178 | * set up. Do any local initialization of the device, or any private | ||
| 179 | * memory structure allocation at this point in time. | ||
| 180 | * @shutdown: pointer to the driver's shutdown function. This will be | ||
| 181 | * called when the device is removed from the system. | ||
| 182 | * | ||
| 183 | * This structure is defines a USB Serial driver. It provides all of | ||
| 184 | * the information that the USB serial core code needs. If the function | ||
| 185 | * pointers are defined, then the USB serial core code will call them when | ||
| 186 | * the corresponding tty port functions are called. If they are not | ||
| 187 | * called, the generic serial function will be used instead. | ||
| 188 | * | ||
| 189 | * The driver.owner field should be set to the module owner of this driver. | ||
| 190 | * The driver.name field should be set to the name of this driver (remember | ||
| 191 | * it will show up in sysfs, so it needs to be short and to the point. | ||
| 192 | * Useing the module name is a good idea.) | ||
| 193 | */ | ||
| 194 | struct usb_serial_driver { | ||
| 195 | const char *description; | ||
| 196 | const struct usb_device_id *id_table; | ||
| 197 | char num_interrupt_in; | ||
| 198 | char num_interrupt_out; | ||
| 199 | char num_bulk_in; | ||
| 200 | char num_bulk_out; | ||
| 201 | char num_ports; | ||
| 202 | |||
| 203 | struct list_head driver_list; | ||
| 204 | struct device_driver driver; | ||
| 205 | |||
| 206 | int (*probe) (struct usb_serial *serial, const struct usb_device_id *id); | ||
| 207 | int (*attach) (struct usb_serial *serial); | ||
| 208 | int (*calc_num_ports) (struct usb_serial *serial); | ||
| 209 | |||
| 210 | void (*shutdown) (struct usb_serial *serial); | ||
| 211 | |||
| 212 | int (*port_probe) (struct usb_serial_port *port); | ||
| 213 | int (*port_remove) (struct usb_serial_port *port); | ||
| 214 | |||
| 215 | /* serial function calls */ | ||
| 216 | int (*open) (struct usb_serial_port *port, struct file * filp); | ||
| 217 | void (*close) (struct usb_serial_port *port, struct file * filp); | ||
| 218 | int (*write) (struct usb_serial_port *port, const unsigned char *buf, int count); | ||
| 219 | int (*write_room) (struct usb_serial_port *port); | ||
| 220 | int (*ioctl) (struct usb_serial_port *port, struct file * file, unsigned int cmd, unsigned long arg); | ||
| 221 | void (*set_termios) (struct usb_serial_port *port, struct termios * old); | ||
| 222 | void (*break_ctl) (struct usb_serial_port *port, int break_state); | ||
| 223 | int (*chars_in_buffer) (struct usb_serial_port *port); | ||
| 224 | void (*throttle) (struct usb_serial_port *port); | ||
| 225 | void (*unthrottle) (struct usb_serial_port *port); | ||
| 226 | int (*tiocmget) (struct usb_serial_port *port, struct file *file); | ||
| 227 | int (*tiocmset) (struct usb_serial_port *port, struct file *file, unsigned int set, unsigned int clear); | ||
| 228 | |||
| 229 | void (*read_int_callback)(struct urb *urb, struct pt_regs *regs); | ||
| 230 | void (*write_int_callback)(struct urb *urb, struct pt_regs *regs); | ||
| 231 | void (*read_bulk_callback)(struct urb *urb, struct pt_regs *regs); | ||
| 232 | void (*write_bulk_callback)(struct urb *urb, struct pt_regs *regs); | ||
| 233 | }; | ||
| 234 | #define to_usb_serial_driver(d) container_of(d, struct usb_serial_driver, driver) | ||
| 235 | |||
| 236 | extern int usb_serial_register(struct usb_serial_driver *driver); | ||
| 237 | extern void usb_serial_deregister(struct usb_serial_driver *driver); | ||
| 238 | extern void usb_serial_port_softint(struct usb_serial_port *port); | ||
| 239 | |||
| 240 | extern int usb_serial_probe(struct usb_interface *iface, const struct usb_device_id *id); | ||
| 241 | extern void usb_serial_disconnect(struct usb_interface *iface); | ||
| 242 | |||
| 243 | extern int ezusb_writememory (struct usb_serial *serial, int address, unsigned char *data, int length, __u8 bRequest); | ||
| 244 | extern int ezusb_set_reset (struct usb_serial *serial, unsigned char reset_bit); | ||
| 245 | |||
| 246 | /* USB Serial console functions */ | ||
| 247 | #ifdef CONFIG_USB_SERIAL_CONSOLE | ||
| 248 | extern void usb_serial_console_init (int debug, int minor); | ||
| 249 | extern void usb_serial_console_exit (void); | ||
| 250 | extern void usb_serial_console_disconnect(struct usb_serial *serial); | ||
| 251 | #else | ||
| 252 | static inline void usb_serial_console_init (int debug, int minor) { } | ||
| 253 | static inline void usb_serial_console_exit (void) { } | ||
| 254 | static inline void usb_serial_console_disconnect(struct usb_serial *serial) {} | ||
| 255 | #endif | ||
| 256 | |||
| 257 | /* Functions needed by other parts of the usbserial core */ | ||
| 258 | extern struct usb_serial *usb_serial_get_by_index (unsigned int minor); | ||
| 259 | extern void usb_serial_put(struct usb_serial *serial); | ||
| 260 | extern int usb_serial_generic_open (struct usb_serial_port *port, struct file *filp); | ||
| 261 | extern int usb_serial_generic_write (struct usb_serial_port *port, const unsigned char *buf, int count); | ||
| 262 | extern void usb_serial_generic_close (struct usb_serial_port *port, struct file *filp); | ||
| 263 | extern int usb_serial_generic_write_room (struct usb_serial_port *port); | ||
| 264 | extern int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port); | ||
| 265 | extern void usb_serial_generic_read_bulk_callback (struct urb *urb, struct pt_regs *regs); | ||
| 266 | extern void usb_serial_generic_write_bulk_callback (struct urb *urb, struct pt_regs *regs); | ||
| 267 | extern void usb_serial_generic_shutdown (struct usb_serial *serial); | ||
| 268 | extern int usb_serial_generic_register (int debug); | ||
| 269 | extern void usb_serial_generic_deregister (void); | ||
| 270 | |||
| 271 | extern int usb_serial_bus_register (struct usb_serial_driver *device); | ||
| 272 | extern void usb_serial_bus_deregister (struct usb_serial_driver *device); | ||
| 273 | |||
| 274 | extern struct usb_serial_driver usb_serial_generic_device; | ||
| 275 | extern struct bus_type usb_serial_bus_type; | ||
| 276 | extern struct tty_driver *usb_serial_tty_driver; | ||
| 277 | |||
| 278 | static inline void usb_serial_debug_data(int debug, | ||
| 279 | struct device *dev, | ||
| 280 | const char *function, int size, | ||
| 281 | const unsigned char *data) | ||
| 282 | { | ||
| 283 | int i; | ||
| 284 | |||
| 285 | if (debug) { | ||
| 286 | dev_printk(KERN_DEBUG, dev, "%s - length = %d, data = ", function, size); | ||
| 287 | for (i = 0; i < size; ++i) | ||
| 288 | printk ("%.2x ", data[i]); | ||
| 289 | printk ("\n"); | ||
| 290 | } | ||
| 291 | } | ||
| 292 | |||
| 293 | /* Use our own dbg macro */ | ||
| 294 | #undef dbg | ||
| 295 | #define dbg(format, arg...) do { if (debug) printk(KERN_DEBUG "%s: " format "\n" , __FILE__ , ## arg); } while (0) | ||
| 296 | |||
| 297 | |||
| 298 | |||
| 299 | #endif /* ifdef __LINUX_USB_SERIAL_H */ | ||
| 300 | |||
diff --git a/include/linux/usb_ch9.h b/include/linux/usb_ch9.h index a2aacfc7af2f..c720d107ff29 100644 --- a/include/linux/usb_ch9.h +++ b/include/linux/usb_ch9.h | |||
| @@ -51,6 +51,9 @@ | |||
| 51 | #define USB_RECIP_INTERFACE 0x01 | 51 | #define USB_RECIP_INTERFACE 0x01 |
| 52 | #define USB_RECIP_ENDPOINT 0x02 | 52 | #define USB_RECIP_ENDPOINT 0x02 |
| 53 | #define USB_RECIP_OTHER 0x03 | 53 | #define USB_RECIP_OTHER 0x03 |
| 54 | /* From Wireless USB 1.0 */ | ||
| 55 | #define USB_RECIP_PORT 0x04 | ||
| 56 | #define USB_RECIP_RPIPE 0x05 | ||
| 54 | 57 | ||
| 55 | /* | 58 | /* |
| 56 | * Standard requests, for the bRequest field of a SETUP packet. | 59 | * Standard requests, for the bRequest field of a SETUP packet. |
| @@ -73,7 +76,9 @@ | |||
| 73 | 76 | ||
| 74 | #define USB_REQ_SET_ENCRYPTION 0x0D /* Wireless USB */ | 77 | #define USB_REQ_SET_ENCRYPTION 0x0D /* Wireless USB */ |
| 75 | #define USB_REQ_GET_ENCRYPTION 0x0E | 78 | #define USB_REQ_GET_ENCRYPTION 0x0E |
| 79 | #define USB_REQ_RPIPE_ABORT 0x0E | ||
| 76 | #define USB_REQ_SET_HANDSHAKE 0x0F | 80 | #define USB_REQ_SET_HANDSHAKE 0x0F |
| 81 | #define USB_REQ_RPIPE_RESET 0x0F | ||
| 77 | #define USB_REQ_GET_HANDSHAKE 0x10 | 82 | #define USB_REQ_GET_HANDSHAKE 0x10 |
| 78 | #define USB_REQ_SET_CONNECTION 0x11 | 83 | #define USB_REQ_SET_CONNECTION 0x11 |
| 79 | #define USB_REQ_SET_SECURITY_DATA 0x12 | 84 | #define USB_REQ_SET_SECURITY_DATA 0x12 |
| @@ -159,6 +164,8 @@ struct usb_ctrlrequest { | |||
| 159 | #define USB_DT_BOS 0x0f | 164 | #define USB_DT_BOS 0x0f |
| 160 | #define USB_DT_DEVICE_CAPABILITY 0x10 | 165 | #define USB_DT_DEVICE_CAPABILITY 0x10 |
| 161 | #define USB_DT_WIRELESS_ENDPOINT_COMP 0x11 | 166 | #define USB_DT_WIRELESS_ENDPOINT_COMP 0x11 |
| 167 | #define USB_DT_WIRE_ADAPTER 0x21 | ||
| 168 | #define USB_DT_RPIPE 0x22 | ||
| 162 | 169 | ||
| 163 | /* conventional codes for class-specific descriptors */ | 170 | /* conventional codes for class-specific descriptors */ |
| 164 | #define USB_DT_CS_DEVICE 0x21 | 171 | #define USB_DT_CS_DEVICE 0x21 |
diff --git a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h index 1d78870ed8af..e17186dbcdca 100644 --- a/include/linux/usb_gadget.h +++ b/include/linux/usb_gadget.h | |||
| @@ -872,9 +872,9 @@ int usb_gadget_config_buf(const struct usb_config_descriptor *config, | |||
| 872 | /* utility wrapping a simple endpoint selection policy */ | 872 | /* utility wrapping a simple endpoint selection policy */ |
| 873 | 873 | ||
| 874 | extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *, | 874 | extern struct usb_ep *usb_ep_autoconfig (struct usb_gadget *, |
| 875 | struct usb_endpoint_descriptor *) __init; | 875 | struct usb_endpoint_descriptor *) __devinit; |
| 876 | 876 | ||
| 877 | extern void usb_ep_autoconfig_reset (struct usb_gadget *) __init; | 877 | extern void usb_ep_autoconfig_reset (struct usb_gadget *) __devinit; |
| 878 | 878 | ||
| 879 | #endif /* __KERNEL__ */ | 879 | #endif /* __KERNEL__ */ |
| 880 | 880 | ||
diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h index 608487a62c98..f38f43f20fae 100644 --- a/include/linux/usb_usual.h +++ b/include/linux/usb_usual.h | |||
| @@ -43,6 +43,8 @@ | |||
| 43 | /* Need delay after Command phase */ \ | 43 | /* Need delay after Command phase */ \ |
| 44 | US_FLAG(NO_WP_DETECT, 0x00000200) \ | 44 | US_FLAG(NO_WP_DETECT, 0x00000200) \ |
| 45 | /* Don't check for write-protect */ \ | 45 | /* Don't check for write-protect */ \ |
| 46 | US_FLAG(MAX_SECTORS_64, 0x00000400) \ | ||
| 47 | /* Sets max_sectors to 64 */ | ||
| 46 | 48 | ||
| 47 | #define US_FLAG(name, value) US_FL_##name = value , | 49 | #define US_FLAG(name, value) US_FL_##name = value , |
| 48 | enum { US_DO_ALL_FLAGS }; | 50 | enum { US_DO_ALL_FLAGS }; |
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index f6024ab4eff0..71b6363caaaf 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
| @@ -11,6 +11,7 @@ struct vm_area_struct; | |||
| 11 | #define VM_ALLOC 0x00000002 /* vmalloc() */ | 11 | #define VM_ALLOC 0x00000002 /* vmalloc() */ |
| 12 | #define VM_MAP 0x00000004 /* vmap()ed pages */ | 12 | #define VM_MAP 0x00000004 /* vmap()ed pages */ |
| 13 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ | 13 | #define VM_USERMAP 0x00000008 /* suitable for remap_vmalloc_range */ |
| 14 | #define VM_VPAGES 0x00000010 /* buffer for pages was vmalloc'ed */ | ||
| 14 | /* bits [20..32] reserved for arch specific ioremap internals */ | 15 | /* bits [20..32] reserved for arch specific ioremap internals */ |
| 15 | 16 | ||
| 16 | /* | 17 | /* |
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index 3e0daf54133e..1ab806c47514 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h | |||
| @@ -57,7 +57,7 @@ static inline void __count_vm_events(enum vm_event_item item, long delta) | |||
| 57 | 57 | ||
| 58 | static inline void count_vm_events(enum vm_event_item item, long delta) | 58 | static inline void count_vm_events(enum vm_event_item item, long delta) |
| 59 | { | 59 | { |
| 60 | get_cpu_var(vm_event_states.event[item])++; | 60 | get_cpu_var(vm_event_states.event[item]) += delta; |
| 61 | put_cpu(); | 61 | put_cpu(); |
| 62 | } | 62 | } |
| 63 | 63 | ||
| @@ -186,11 +186,16 @@ static inline void __mod_zone_page_state(struct zone *zone, | |||
| 186 | zone_page_state_add(delta, zone, item); | 186 | zone_page_state_add(delta, zone, item); |
| 187 | } | 187 | } |
| 188 | 188 | ||
| 189 | static inline void __inc_zone_state(struct zone *zone, enum zone_stat_item item) | ||
| 190 | { | ||
| 191 | atomic_long_inc(&zone->vm_stat[item]); | ||
| 192 | atomic_long_inc(&vm_stat[item]); | ||
| 193 | } | ||
| 194 | |||
| 189 | static inline void __inc_zone_page_state(struct page *page, | 195 | static inline void __inc_zone_page_state(struct page *page, |
| 190 | enum zone_stat_item item) | 196 | enum zone_stat_item item) |
| 191 | { | 197 | { |
| 192 | atomic_long_inc(&page_zone(page)->vm_stat[item]); | 198 | __inc_zone_state(page_zone(page), item); |
| 193 | atomic_long_inc(&vm_stat[item]); | ||
| 194 | } | 199 | } |
| 195 | 200 | ||
| 196 | static inline void __dec_zone_page_state(struct page *page, | 201 | static inline void __dec_zone_page_state(struct page *page, |
diff --git a/include/linux/vt.h b/include/linux/vt.h index 9f95b0bea5b3..8ab334a48222 100644 --- a/include/linux/vt.h +++ b/include/linux/vt.h | |||
| @@ -1,6 +1,16 @@ | |||
| 1 | #ifndef _LINUX_VT_H | 1 | #ifndef _LINUX_VT_H |
| 2 | #define _LINUX_VT_H | 2 | #define _LINUX_VT_H |
| 3 | 3 | ||
| 4 | /* | ||
| 5 | * These constants are also useful for user-level apps (e.g., VC | ||
| 6 | * resizing). | ||
| 7 | */ | ||
| 8 | #define MIN_NR_CONSOLES 1 /* must be at least 1 */ | ||
| 9 | #define MAX_NR_CONSOLES 63 /* serial lines start at 64 */ | ||
| 10 | #define MAX_NR_USER_CONSOLES 63 /* must be root to allocate above this */ | ||
| 11 | /* Note: the ioctl VT_GETSTATE does not work for | ||
| 12 | consoles 16 and higher (since it returns a short) */ | ||
| 13 | |||
| 4 | /* 0x56 is 'V', to avoid collision with termios and kd */ | 14 | /* 0x56 is 'V', to avoid collision with termios and kd */ |
| 5 | 15 | ||
| 6 | #define VT_OPENQRY 0x5600 /* find available vt */ | 16 | #define VT_OPENQRY 0x5600 /* find available vt */ |
diff --git a/include/linux/vt_kern.h b/include/linux/vt_kern.h index 940d0261a545..918a29763aea 100644 --- a/include/linux/vt_kern.h +++ b/include/linux/vt_kern.h | |||
| @@ -26,6 +26,7 @@ | |||
| 26 | 26 | ||
| 27 | extern void kd_mksound(unsigned int hz, unsigned int ticks); | 27 | extern void kd_mksound(unsigned int hz, unsigned int ticks); |
| 28 | extern int kbd_rate(struct kbd_repeat *rep); | 28 | extern int kbd_rate(struct kbd_repeat *rep); |
| 29 | extern int fg_console, last_console, want_console; | ||
| 29 | 30 | ||
| 30 | /* console.c */ | 31 | /* console.c */ |
| 31 | 32 | ||
diff --git a/include/linux/wait.h b/include/linux/wait.h index 794be7af58ae..b3b9048421d8 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
| @@ -77,17 +77,7 @@ struct task_struct; | |||
| 77 | #define __WAIT_BIT_KEY_INITIALIZER(word, bit) \ | 77 | #define __WAIT_BIT_KEY_INITIALIZER(word, bit) \ |
| 78 | { .flags = word, .bit_nr = bit, } | 78 | { .flags = word, .bit_nr = bit, } |
| 79 | 79 | ||
| 80 | /* | 80 | extern void init_waitqueue_head(wait_queue_head_t *q); |
| 81 | * lockdep: we want one lock-class for all waitqueue locks. | ||
| 82 | */ | ||
| 83 | extern struct lock_class_key waitqueue_lock_key; | ||
| 84 | |||
| 85 | static inline void init_waitqueue_head(wait_queue_head_t *q) | ||
| 86 | { | ||
| 87 | spin_lock_init(&q->lock); | ||
| 88 | lockdep_set_class(&q->lock, &waitqueue_lock_key); | ||
| 89 | INIT_LIST_HEAD(&q->task_list); | ||
| 90 | } | ||
| 91 | 81 | ||
| 92 | static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) | 82 | static inline void init_waitqueue_entry(wait_queue_t *q, struct task_struct *p) |
| 93 | { | 83 | { |
diff --git a/include/net/genetlink.h b/include/net/genetlink.h index 805de50df00d..8c2287264266 100644 --- a/include/net/genetlink.h +++ b/include/net/genetlink.h | |||
| @@ -150,4 +150,24 @@ static inline int genlmsg_unicast(struct sk_buff *skb, u32 pid) | |||
| 150 | return nlmsg_unicast(genl_sock, skb, pid); | 150 | return nlmsg_unicast(genl_sock, skb, pid); |
| 151 | } | 151 | } |
| 152 | 152 | ||
| 153 | /** | ||
| 154 | * gennlmsg_data - head of message payload | ||
| 155 | * @gnlh: genetlink messsage header | ||
| 156 | */ | ||
| 157 | static inline void *genlmsg_data(const struct genlmsghdr *gnlh) | ||
| 158 | { | ||
| 159 | return ((unsigned char *) gnlh + GENL_HDRLEN); | ||
| 160 | } | ||
| 161 | |||
| 162 | /** | ||
| 163 | * genlmsg_len - length of message payload | ||
| 164 | * @gnlh: genetlink message header | ||
| 165 | */ | ||
| 166 | static inline int genlmsg_len(const struct genlmsghdr *gnlh) | ||
| 167 | { | ||
| 168 | struct nlmsghdr *nlh = (struct nlmsghdr *)((unsigned char *)gnlh - | ||
| 169 | NLMSG_HDRLEN); | ||
| 170 | return (nlh->nlmsg_len - GENL_HDRLEN - NLMSG_HDRLEN); | ||
| 171 | } | ||
| 172 | |||
| 153 | #endif /* __NET_GENERIC_NETLINK_H */ | 173 | #endif /* __NET_GENERIC_NETLINK_H */ |
diff --git a/include/net/netdma.h b/include/net/netdma.h index 19760eb131aa..ceae5ee85c04 100644 --- a/include/net/netdma.h +++ b/include/net/netdma.h | |||
| @@ -37,7 +37,7 @@ static inline struct dma_chan *get_softnet_dma(void) | |||
| 37 | } | 37 | } |
| 38 | 38 | ||
| 39 | int dma_skb_copy_datagram_iovec(struct dma_chan* chan, | 39 | int dma_skb_copy_datagram_iovec(struct dma_chan* chan, |
| 40 | const struct sk_buff *skb, int offset, struct iovec *to, | 40 | struct sk_buff *skb, int offset, struct iovec *to, |
| 41 | size_t len, struct dma_pinned_list *pinned_list); | 41 | size_t len, struct dma_pinned_list *pinned_list); |
| 42 | 42 | ||
| 43 | #endif /* CONFIG_NET_DMA */ | 43 | #endif /* CONFIG_NET_DMA */ |
diff --git a/include/net/pkt_sched.h b/include/net/pkt_sched.h index 1925c65e617b..f6afee73235d 100644 --- a/include/net/pkt_sched.h +++ b/include/net/pkt_sched.h | |||
| @@ -169,23 +169,17 @@ psched_tod_diff(int delta_sec, int bound) | |||
| 169 | 169 | ||
| 170 | #define PSCHED_TADD2(tv, delta, tv_res) \ | 170 | #define PSCHED_TADD2(tv, delta, tv_res) \ |
| 171 | ({ \ | 171 | ({ \ |
| 172 | int __delta = (delta); \ | 172 | int __delta = (tv).tv_usec + (delta); \ |
| 173 | (tv_res) = (tv); \ | 173 | (tv_res).tv_sec = (tv).tv_sec; \ |
| 174 | while(__delta >= USEC_PER_SEC){ \ | 174 | while (__delta >= USEC_PER_SEC) { (tv_res).tv_sec++; __delta -= USEC_PER_SEC; } \ |
| 175 | (tv_res).tv_sec++; \ | ||
| 176 | __delta -= USEC_PER_SEC; \ | ||
| 177 | } \ | ||
| 178 | (tv_res).tv_usec = __delta; \ | 175 | (tv_res).tv_usec = __delta; \ |
| 179 | }) | 176 | }) |
| 180 | 177 | ||
| 181 | #define PSCHED_TADD(tv, delta) \ | 178 | #define PSCHED_TADD(tv, delta) \ |
| 182 | ({ \ | 179 | ({ \ |
| 183 | int __delta = (delta); \ | 180 | (tv).tv_usec += (delta); \ |
| 184 | while(__delta >= USEC_PER_SEC){ \ | 181 | while ((tv).tv_usec >= USEC_PER_SEC) { (tv).tv_sec++; \ |
| 185 | (tv).tv_sec++; \ | 182 | (tv).tv_usec -= USEC_PER_SEC; } \ |
| 186 | __delta -= USEC_PER_SEC; \ | ||
| 187 | } \ | ||
| 188 | (tv).tv_usec = __delta; \ | ||
| 189 | }) | 183 | }) |
| 190 | 184 | ||
| 191 | /* Set/check that time is in the "past perfect"; | 185 | /* Set/check that time is in the "past perfect"; |
diff --git a/include/net/protocol.h b/include/net/protocol.h index a225d6371cb1..c643bce64e55 100644 --- a/include/net/protocol.h +++ b/include/net/protocol.h | |||
| @@ -36,6 +36,7 @@ | |||
| 36 | struct net_protocol { | 36 | struct net_protocol { |
| 37 | int (*handler)(struct sk_buff *skb); | 37 | int (*handler)(struct sk_buff *skb); |
| 38 | void (*err_handler)(struct sk_buff *skb, u32 info); | 38 | void (*err_handler)(struct sk_buff *skb, u32 info); |
| 39 | int (*gso_send_check)(struct sk_buff *skb); | ||
| 39 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, | 40 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, |
| 40 | int features); | 41 | int features); |
| 41 | int no_policy; | 42 | int no_policy; |
| @@ -51,6 +52,7 @@ struct inet6_protocol | |||
| 51 | int type, int code, int offset, | 52 | int type, int code, int offset, |
| 52 | __u32 info); | 53 | __u32 info); |
| 53 | 54 | ||
| 55 | int (*gso_send_check)(struct sk_buff *skb); | ||
| 54 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, | 56 | struct sk_buff *(*gso_segment)(struct sk_buff *skb, |
| 55 | int features); | 57 | int features); |
| 56 | 58 | ||
diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index 5f69158c1006..e5aa7ff1f5b5 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h | |||
| @@ -445,6 +445,7 @@ typedef struct sctp_sender_hb_info { | |||
| 445 | struct sctp_paramhdr param_hdr; | 445 | struct sctp_paramhdr param_hdr; |
| 446 | union sctp_addr daddr; | 446 | union sctp_addr daddr; |
| 447 | unsigned long sent_at; | 447 | unsigned long sent_at; |
| 448 | __u64 hb_nonce; | ||
| 448 | } __attribute__((packed)) sctp_sender_hb_info_t; | 449 | } __attribute__((packed)) sctp_sender_hb_info_t; |
| 449 | 450 | ||
| 450 | /* | 451 | /* |
| @@ -730,13 +731,10 @@ void sctp_init_addrs(struct sctp_chunk *, union sctp_addr *, | |||
| 730 | const union sctp_addr *sctp_source(const struct sctp_chunk *chunk); | 731 | const union sctp_addr *sctp_source(const struct sctp_chunk *chunk); |
| 731 | 732 | ||
| 732 | /* This is a structure for holding either an IPv6 or an IPv4 address. */ | 733 | /* This is a structure for holding either an IPv6 or an IPv4 address. */ |
| 733 | /* sin_family -- AF_INET or AF_INET6 | ||
| 734 | * sin_port -- ordinary port number | ||
| 735 | * sin_addr -- cast to either (struct in_addr) or (struct in6_addr) | ||
| 736 | */ | ||
| 737 | struct sctp_sockaddr_entry { | 734 | struct sctp_sockaddr_entry { |
| 738 | struct list_head list; | 735 | struct list_head list; |
| 739 | union sctp_addr a; | 736 | union sctp_addr a; |
| 737 | __u8 use_as_src; | ||
| 740 | }; | 738 | }; |
| 741 | 739 | ||
| 742 | typedef struct sctp_chunk *(sctp_packet_phandler_t)(struct sctp_association *); | 740 | typedef struct sctp_chunk *(sctp_packet_phandler_t)(struct sctp_association *); |
| @@ -984,6 +982,9 @@ struct sctp_transport { | |||
| 984 | */ | 982 | */ |
| 985 | char cacc_saw_newack; | 983 | char cacc_saw_newack; |
| 986 | } cacc; | 984 | } cacc; |
| 985 | |||
| 986 | /* 64-bit random number sent with heartbeat. */ | ||
| 987 | __u64 hb_nonce; | ||
| 987 | }; | 988 | }; |
| 988 | 989 | ||
| 989 | struct sctp_transport *sctp_transport_new(const union sctp_addr *, | 990 | struct sctp_transport *sctp_transport_new(const union sctp_addr *, |
| @@ -1138,7 +1139,7 @@ int sctp_bind_addr_copy(struct sctp_bind_addr *dest, | |||
| 1138 | sctp_scope_t scope, gfp_t gfp, | 1139 | sctp_scope_t scope, gfp_t gfp, |
| 1139 | int flags); | 1140 | int flags); |
| 1140 | int sctp_add_bind_addr(struct sctp_bind_addr *, union sctp_addr *, | 1141 | int sctp_add_bind_addr(struct sctp_bind_addr *, union sctp_addr *, |
| 1141 | gfp_t gfp); | 1142 | __u8 use_as_src, gfp_t gfp); |
| 1142 | int sctp_del_bind_addr(struct sctp_bind_addr *, union sctp_addr *); | 1143 | int sctp_del_bind_addr(struct sctp_bind_addr *, union sctp_addr *); |
| 1143 | int sctp_bind_addr_match(struct sctp_bind_addr *, const union sctp_addr *, | 1144 | int sctp_bind_addr_match(struct sctp_bind_addr *, const union sctp_addr *, |
| 1144 | struct sctp_sock *); | 1145 | struct sctp_sock *); |
diff --git a/include/net/sctp/user.h b/include/net/sctp/user.h index 8a6bef6f91eb..1b7aae6cdd82 100644 --- a/include/net/sctp/user.h +++ b/include/net/sctp/user.h | |||
| @@ -560,9 +560,18 @@ struct sctp_paddrinfo { | |||
| 560 | } __attribute__((packed, aligned(4))); | 560 | } __attribute__((packed, aligned(4))); |
| 561 | 561 | ||
| 562 | /* Peer addresses's state. */ | 562 | /* Peer addresses's state. */ |
| 563 | /* UNKNOWN: Peer address passed by the upper layer in sendmsg or connect[x] | ||
| 564 | * calls. | ||
| 565 | * UNCONFIRMED: Peer address received in INIT/INIT-ACK address parameters. | ||
| 566 | * Not yet confirmed by a heartbeat and not available for data | ||
| 567 | * transfers. | ||
| 568 | * ACTIVE : Peer address confirmed, active and available for data transfers. | ||
| 569 | * INACTIVE: Peer address inactive and not available for data transfers. | ||
| 570 | */ | ||
| 563 | enum sctp_spinfo_state { | 571 | enum sctp_spinfo_state { |
| 564 | SCTP_INACTIVE, | 572 | SCTP_INACTIVE, |
| 565 | SCTP_ACTIVE, | 573 | SCTP_ACTIVE, |
| 574 | SCTP_UNCONFIRMED, | ||
| 566 | SCTP_UNKNOWN = 0xffff /* Value used for transport state unknown */ | 575 | SCTP_UNKNOWN = 0xffff /* Value used for transport state unknown */ |
| 567 | }; | 576 | }; |
| 568 | 577 | ||
diff --git a/include/net/tcp.h b/include/net/tcp.h index 3cd803b0d7a5..0720bddff1e9 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
| @@ -1086,6 +1086,7 @@ extern struct request_sock_ops tcp_request_sock_ops; | |||
| 1086 | 1086 | ||
| 1087 | extern int tcp_v4_destroy_sock(struct sock *sk); | 1087 | extern int tcp_v4_destroy_sock(struct sock *sk); |
| 1088 | 1088 | ||
| 1089 | extern int tcp_v4_gso_send_check(struct sk_buff *skb); | ||
| 1089 | extern struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features); | 1090 | extern struct sk_buff *tcp_tso_segment(struct sk_buff *skb, int features); |
| 1090 | 1091 | ||
| 1091 | #ifdef CONFIG_PROC_FS | 1092 | #ifdef CONFIG_PROC_FS |
diff --git a/include/rdma/ib_addr.h b/include/rdma/ib_addr.h index fcb5ba87dcc5..0ff67398928d 100644 --- a/include/rdma/ib_addr.h +++ b/include/rdma/ib_addr.h | |||
| @@ -89,9 +89,10 @@ static inline void ib_addr_set_pkey(struct rdma_dev_addr *dev_addr, u16 pkey) | |||
| 89 | dev_addr->broadcast[9] = (unsigned char) pkey; | 89 | dev_addr->broadcast[9] = (unsigned char) pkey; |
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | static inline union ib_gid *ib_addr_get_sgid(struct rdma_dev_addr *dev_addr) | 92 | static inline void ib_addr_get_sgid(struct rdma_dev_addr *dev_addr, |
| 93 | union ib_gid *gid) | ||
| 93 | { | 94 | { |
| 94 | return (union ib_gid *) (dev_addr->src_dev_addr + 4); | 95 | memcpy(gid, dev_addr->src_dev_addr + 4, sizeof *gid); |
| 95 | } | 96 | } |
| 96 | 97 | ||
| 97 | static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr, | 98 | static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr, |
| @@ -100,9 +101,10 @@ static inline void ib_addr_set_sgid(struct rdma_dev_addr *dev_addr, | |||
| 100 | memcpy(dev_addr->src_dev_addr + 4, gid, sizeof *gid); | 101 | memcpy(dev_addr->src_dev_addr + 4, gid, sizeof *gid); |
| 101 | } | 102 | } |
| 102 | 103 | ||
| 103 | static inline union ib_gid *ib_addr_get_dgid(struct rdma_dev_addr *dev_addr) | 104 | static inline void ib_addr_get_dgid(struct rdma_dev_addr *dev_addr, |
| 105 | union ib_gid *gid) | ||
| 104 | { | 106 | { |
| 105 | return (union ib_gid *) (dev_addr->dst_dev_addr + 4); | 107 | memcpy(gid, dev_addr->dst_dev_addr + 4, sizeof *gid); |
| 106 | } | 108 | } |
| 107 | 109 | ||
| 108 | static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr, | 110 | static inline void ib_addr_set_dgid(struct rdma_dev_addr *dev_addr, |
diff --git a/include/rdma/ib_fmr_pool.h b/include/rdma/ib_fmr_pool.h index 4ace54cd0cce..00dadbf94e1d 100644 --- a/include/rdma/ib_fmr_pool.h +++ b/include/rdma/ib_fmr_pool.h | |||
| @@ -88,7 +88,7 @@ int ib_flush_fmr_pool(struct ib_fmr_pool *pool); | |||
| 88 | struct ib_pool_fmr *ib_fmr_pool_map_phys(struct ib_fmr_pool *pool_handle, | 88 | struct ib_pool_fmr *ib_fmr_pool_map_phys(struct ib_fmr_pool *pool_handle, |
| 89 | u64 *page_list, | 89 | u64 *page_list, |
| 90 | int list_len, | 90 | int list_len, |
| 91 | u64 *io_virtual_address); | 91 | u64 io_virtual_address); |
| 92 | 92 | ||
| 93 | int ib_fmr_pool_unmap(struct ib_pool_fmr *fmr); | 93 | int ib_fmr_pool_unmap(struct ib_pool_fmr *fmr); |
| 94 | 94 | ||
diff --git a/include/rdma/ib_mad.h b/include/rdma/ib_mad.h index 5ff77558013b..585d28e960dd 100644 --- a/include/rdma/ib_mad.h +++ b/include/rdma/ib_mad.h | |||
| @@ -75,6 +75,7 @@ | |||
| 75 | #define IB_MGMT_METHOD_TRAP_REPRESS 0x07 | 75 | #define IB_MGMT_METHOD_TRAP_REPRESS 0x07 |
| 76 | 76 | ||
| 77 | #define IB_MGMT_METHOD_RESP 0x80 | 77 | #define IB_MGMT_METHOD_RESP 0x80 |
| 78 | #define IB_BM_ATTR_MOD_RESP cpu_to_be32(1) | ||
| 78 | 79 | ||
| 79 | #define IB_MGMT_MAX_METHODS 128 | 80 | #define IB_MGMT_MAX_METHODS 128 |
| 80 | 81 | ||
| @@ -247,6 +248,12 @@ struct ib_mad_send_buf { | |||
| 247 | }; | 248 | }; |
| 248 | 249 | ||
| 249 | /** | 250 | /** |
| 251 | * ib_response_mad - Returns if the specified MAD has been generated in | ||
| 252 | * response to a sent request or trap. | ||
| 253 | */ | ||
| 254 | int ib_response_mad(struct ib_mad *mad); | ||
| 255 | |||
| 256 | /** | ||
| 250 | * ib_get_rmpp_resptime - Returns the RMPP response time. | 257 | * ib_get_rmpp_resptime - Returns the RMPP response time. |
| 251 | * @rmpp_hdr: An RMPP header. | 258 | * @rmpp_hdr: An RMPP header. |
| 252 | */ | 259 | */ |
diff --git a/include/scsi/scsi_cmnd.h b/include/scsi/scsi_cmnd.h index 371f70d9aa92..58e6444eebee 100644 --- a/include/scsi/scsi_cmnd.h +++ b/include/scsi/scsi_cmnd.h | |||
| @@ -58,9 +58,7 @@ struct scsi_cmnd { | |||
| 58 | int timeout_per_command; | 58 | int timeout_per_command; |
| 59 | 59 | ||
| 60 | unsigned char cmd_len; | 60 | unsigned char cmd_len; |
| 61 | unsigned char old_cmd_len; | ||
| 62 | enum dma_data_direction sc_data_direction; | 61 | enum dma_data_direction sc_data_direction; |
| 63 | enum dma_data_direction sc_old_data_direction; | ||
| 64 | 62 | ||
| 65 | /* These elements define the operation we are about to perform */ | 63 | /* These elements define the operation we are about to perform */ |
| 66 | #define MAX_COMMAND_SIZE 16 | 64 | #define MAX_COMMAND_SIZE 16 |
| @@ -71,18 +69,11 @@ struct scsi_cmnd { | |||
| 71 | void *request_buffer; /* Actual requested buffer */ | 69 | void *request_buffer; /* Actual requested buffer */ |
| 72 | 70 | ||
| 73 | /* These elements define the operation we ultimately want to perform */ | 71 | /* These elements define the operation we ultimately want to perform */ |
| 74 | unsigned char data_cmnd[MAX_COMMAND_SIZE]; | ||
| 75 | unsigned short old_use_sg; /* We save use_sg here when requesting | ||
| 76 | * sense info */ | ||
| 77 | unsigned short use_sg; /* Number of pieces of scatter-gather */ | 72 | unsigned short use_sg; /* Number of pieces of scatter-gather */ |
| 78 | unsigned short sglist_len; /* size of malloc'd scatter-gather list */ | 73 | unsigned short sglist_len; /* size of malloc'd scatter-gather list */ |
| 79 | unsigned bufflen; /* Size of data buffer */ | ||
| 80 | void *buffer; /* Data buffer */ | ||
| 81 | 74 | ||
| 82 | unsigned underflow; /* Return error if less than | 75 | unsigned underflow; /* Return error if less than |
| 83 | this amount is transferred */ | 76 | this amount is transferred */ |
| 84 | unsigned old_underflow; /* save underflow here when reusing the | ||
| 85 | * command for error handling */ | ||
| 86 | 77 | ||
| 87 | unsigned transfersize; /* How much we are guaranteed to | 78 | unsigned transfersize; /* How much we are guaranteed to |
| 88 | transfer with each SCSI transfer | 79 | transfer with each SCSI transfer |
diff --git a/include/scsi/scsi_transport_sas.h b/include/scsi/scsi_transport_sas.h index e3c503cd175e..6cc2314098cf 100644 --- a/include/scsi/scsi_transport_sas.h +++ b/include/scsi/scsi_transport_sas.h | |||
| @@ -106,6 +106,7 @@ struct sas_end_device { | |||
| 106 | 106 | ||
| 107 | struct sas_expander_device { | 107 | struct sas_expander_device { |
| 108 | int level; | 108 | int level; |
| 109 | int next_port_id; | ||
| 109 | 110 | ||
| 110 | #define SAS_EXPANDER_VENDOR_ID_LEN 8 | 111 | #define SAS_EXPANDER_VENDOR_ID_LEN 8 |
| 111 | char vendor_id[SAS_EXPANDER_VENDOR_ID_LEN+1]; | 112 | char vendor_id[SAS_EXPANDER_VENDOR_ID_LEN+1]; |
| @@ -127,8 +128,10 @@ struct sas_expander_device { | |||
| 127 | struct sas_port { | 128 | struct sas_port { |
| 128 | struct device dev; | 129 | struct device dev; |
| 129 | 130 | ||
| 130 | u8 port_identifier; | 131 | int port_identifier; |
| 131 | int num_phys; | 132 | int num_phys; |
| 133 | /* port flags */ | ||
| 134 | unsigned int is_backlink:1; | ||
| 132 | 135 | ||
| 133 | /* the other end of the link */ | 136 | /* the other end of the link */ |
| 134 | struct sas_rphy *rphy; | 137 | struct sas_rphy *rphy; |
| @@ -168,11 +171,13 @@ extern void sas_rphy_delete(struct sas_rphy *); | |||
| 168 | extern int scsi_is_sas_rphy(const struct device *); | 171 | extern int scsi_is_sas_rphy(const struct device *); |
| 169 | 172 | ||
| 170 | struct sas_port *sas_port_alloc(struct device *, int); | 173 | struct sas_port *sas_port_alloc(struct device *, int); |
| 174 | struct sas_port *sas_port_alloc_num(struct device *); | ||
| 171 | int sas_port_add(struct sas_port *); | 175 | int sas_port_add(struct sas_port *); |
| 172 | void sas_port_free(struct sas_port *); | 176 | void sas_port_free(struct sas_port *); |
| 173 | void sas_port_delete(struct sas_port *); | 177 | void sas_port_delete(struct sas_port *); |
| 174 | void sas_port_add_phy(struct sas_port *, struct sas_phy *); | 178 | void sas_port_add_phy(struct sas_port *, struct sas_phy *); |
| 175 | void sas_port_delete_phy(struct sas_port *, struct sas_phy *); | 179 | void sas_port_delete_phy(struct sas_port *, struct sas_phy *); |
| 180 | void sas_port_mark_backlink(struct sas_port *); | ||
| 176 | int scsi_is_sas_port(const struct device *); | 181 | int scsi_is_sas_port(const struct device *); |
| 177 | 182 | ||
| 178 | extern struct scsi_transport_template * | 183 | extern struct scsi_transport_template * |
diff --git a/include/sound/core.h b/include/sound/core.h index 5d184be0ff72..bab3ff457e40 100644 --- a/include/sound/core.h +++ b/include/sound/core.h | |||
| @@ -188,8 +188,6 @@ struct snd_minor { | |||
| 188 | int device; /* device number */ | 188 | int device; /* device number */ |
| 189 | const struct file_operations *f_ops; /* file operations */ | 189 | const struct file_operations *f_ops; /* file operations */ |
| 190 | void *private_data; /* private data for f_ops->open */ | 190 | void *private_data; /* private data for f_ops->open */ |
| 191 | char name[0]; /* device name (keep at the end of | ||
| 192 | structure) */ | ||
| 193 | }; | 191 | }; |
| 194 | 192 | ||
| 195 | /* sound.c */ | 193 | /* sound.c */ |
diff --git a/include/sound/cs46xx.h b/include/sound/cs46xx.h index 80b2979c0cba..685928e6f65a 100644 --- a/include/sound/cs46xx.h +++ b/include/sound/cs46xx.h | |||
| @@ -1704,6 +1704,7 @@ struct snd_cs46xx { | |||
| 1704 | int acpi_port; | 1704 | int acpi_port; |
| 1705 | struct snd_kcontrol *eapd_switch; /* for amplifier hack */ | 1705 | struct snd_kcontrol *eapd_switch; /* for amplifier hack */ |
| 1706 | int accept_valid; /* accept mmap valid (for OSS) */ | 1706 | int accept_valid; /* accept mmap valid (for OSS) */ |
| 1707 | int in_suspend; | ||
| 1707 | 1708 | ||
| 1708 | struct gameport *gameport; | 1709 | struct gameport *gameport; |
| 1709 | 1710 | ||
diff --git a/include/video/mbxfb.h b/include/video/mbxfb.h new file mode 100644 index 000000000000..3bde0f5cd55c --- /dev/null +++ b/include/video/mbxfb.h | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | #ifndef __MBX_FB_H | ||
| 2 | #define __MBX_FB_H | ||
| 3 | |||
| 4 | struct mbxfb_val { | ||
| 5 | unsigned int defval; | ||
| 6 | unsigned int min; | ||
| 7 | unsigned int max; | ||
| 8 | }; | ||
| 9 | |||
| 10 | struct fb_info; | ||
| 11 | |||
| 12 | struct mbxfb_platform_data { | ||
| 13 | /* Screen info */ | ||
| 14 | struct mbxfb_val xres; | ||
| 15 | struct mbxfb_val yres; | ||
| 16 | struct mbxfb_val bpp; | ||
| 17 | |||
| 18 | /* Memory info */ | ||
| 19 | unsigned long memsize; /* if 0 use ODFB? */ | ||
| 20 | unsigned long timings1; | ||
| 21 | unsigned long timings2; | ||
| 22 | unsigned long timings3; | ||
| 23 | |||
| 24 | int (*probe)(struct fb_info *fb); | ||
| 25 | int (*remove)(struct fb_info *fb); | ||
| 26 | }; | ||
| 27 | |||
| 28 | #endif /* __MBX_FB_H */ | ||
