diff options
author | Paul Mackerras <paulus@samba.org> | 2008-04-14 07:11:02 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-14 07:11:02 -0400 |
commit | ac7c5353b189e10cf5dd27399f64f7b013abffc6 (patch) | |
tree | 8222d92b774c256d6ec4399c716d76b3f05ddc4b /include | |
parent | a8f75ea70c58546205fb7673be41455b9da5d9a7 (diff) | |
parent | 120dd64cacd4fb796bca0acba3665553f1d9ecaa (diff) |
Merge branch 'linux-2.6'
Diffstat (limited to 'include')
79 files changed, 526 insertions, 400 deletions
diff --git a/include/asm-alpha/current.h b/include/asm-alpha/current.h index 8d88a13c1bec..094d285a1b34 100644 --- a/include/asm-alpha/current.h +++ b/include/asm-alpha/current.h | |||
@@ -3,7 +3,7 @@ | |||
3 | 3 | ||
4 | #include <linux/thread_info.h> | 4 | #include <linux/thread_info.h> |
5 | 5 | ||
6 | #define get_current() (current_thread_info()->task + 0) | 6 | #define get_current() (current_thread_info()->task) |
7 | #define current get_current() | 7 | #define current get_current() |
8 | 8 | ||
9 | #endif /* _ALPHA_CURRENT_H */ | 9 | #endif /* _ALPHA_CURRENT_H */ |
diff --git a/include/asm-alpha/dma-mapping.h b/include/asm-alpha/dma-mapping.h index 75a1aff5b57b..db351d1296f4 100644 --- a/include/asm-alpha/dma-mapping.h +++ b/include/asm-alpha/dma-mapping.h | |||
@@ -11,7 +11,7 @@ | |||
11 | #define dma_unmap_single(dev, addr, size, dir) \ | 11 | #define dma_unmap_single(dev, addr, size, dir) \ |
12 | pci_unmap_single(alpha_gendev_to_pci(dev), addr, size, dir) | 12 | pci_unmap_single(alpha_gendev_to_pci(dev), addr, size, dir) |
13 | #define dma_alloc_coherent(dev, size, addr, gfp) \ | 13 | #define dma_alloc_coherent(dev, size, addr, gfp) \ |
14 | pci_alloc_consistent(alpha_gendev_to_pci(dev), size, addr) | 14 | __pci_alloc_consistent(alpha_gendev_to_pci(dev), size, addr, gfp) |
15 | #define dma_free_coherent(dev, size, va, addr) \ | 15 | #define dma_free_coherent(dev, size, va, addr) \ |
16 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) | 16 | pci_free_consistent(alpha_gendev_to_pci(dev), size, va, addr) |
17 | #define dma_map_page(dev, page, off, size, dir) \ | 17 | #define dma_map_page(dev, page, off, size, dir) \ |
diff --git a/include/asm-alpha/kvm.h b/include/asm-alpha/kvm.h new file mode 100644 index 000000000000..b9daec429689 --- /dev/null +++ b/include/asm-alpha/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_ALPHA_H | ||
2 | #define __LINUX_KVM_ALPHA_H | ||
3 | |||
4 | /* alpha does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-alpha/pci.h b/include/asm-alpha/pci.h index d5b10ef64364..d31fd49ff79a 100644 --- a/include/asm-alpha/pci.h +++ b/include/asm-alpha/pci.h | |||
@@ -76,7 +76,13 @@ extern inline void pcibios_penalize_isa_irq(int irq, int active) | |||
76 | successful and sets *DMA_ADDRP to the pci side dma address as well, | 76 | successful and sets *DMA_ADDRP to the pci side dma address as well, |
77 | else DMA_ADDRP is undefined. */ | 77 | else DMA_ADDRP is undefined. */ |
78 | 78 | ||
79 | extern void *pci_alloc_consistent(struct pci_dev *, size_t, dma_addr_t *); | 79 | extern void *__pci_alloc_consistent(struct pci_dev *, size_t, |
80 | dma_addr_t *, gfp_t); | ||
81 | static inline void * | ||
82 | pci_alloc_consistent(struct pci_dev *dev, size_t size, dma_addr_t *dma) | ||
83 | { | ||
84 | return __pci_alloc_consistent(dev, size, dma, GFP_ATOMIC); | ||
85 | } | ||
80 | 86 | ||
81 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must | 87 | /* Free and unmap a consistent DMA buffer. CPU_ADDR and DMA_ADDR must |
82 | be values that were returned from pci_alloc_consistent. SIZE must | 88 | be values that were returned from pci_alloc_consistent. SIZE must |
diff --git a/include/asm-arm/kvm.h b/include/asm-arm/kvm.h new file mode 100644 index 000000000000..cb3c08cbcb9e --- /dev/null +++ b/include/asm-arm/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_ARM_H | ||
2 | #define __LINUX_KVM_ARM_H | ||
3 | |||
4 | /* arm does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-avr32/byteorder.h b/include/asm-avr32/byteorder.h index 402ff4125cdc..d77b48ba7338 100644 --- a/include/asm-avr32/byteorder.h +++ b/include/asm-avr32/byteorder.h | |||
@@ -12,8 +12,14 @@ extern unsigned long __builtin_bswap_32(unsigned long x); | |||
12 | extern unsigned short __builtin_bswap_16(unsigned short x); | 12 | extern unsigned short __builtin_bswap_16(unsigned short x); |
13 | #endif | 13 | #endif |
14 | 14 | ||
15 | /* | ||
16 | * avr32-linux-gcc versions earlier than 4.2 improperly sign-extends | ||
17 | * the result. | ||
18 | */ | ||
19 | #if !(__GNUC__ == 4 && __GNUC_MINOR__ < 2) | ||
15 | #define __arch__swab32(x) __builtin_bswap_32(x) | 20 | #define __arch__swab32(x) __builtin_bswap_32(x) |
16 | #define __arch__swab16(x) __builtin_bswap_16(x) | 21 | #define __arch__swab16(x) __builtin_bswap_16(x) |
22 | #endif | ||
17 | 23 | ||
18 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) | 24 | #if !defined(__STRICT_ANSI__) || defined(__KERNEL__) |
19 | # define __BYTEORDER_HAS_U64__ | 25 | # define __BYTEORDER_HAS_U64__ |
diff --git a/include/asm-avr32/kvm.h b/include/asm-avr32/kvm.h new file mode 100644 index 000000000000..8c5777020e2c --- /dev/null +++ b/include/asm-avr32/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_AVR32_H | ||
2 | #define __LINUX_KVM_AVR32_H | ||
3 | |||
4 | /* avr32 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-blackfin/kvm.h b/include/asm-blackfin/kvm.h new file mode 100644 index 000000000000..e3477d77c014 --- /dev/null +++ b/include/asm-blackfin/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_BLACKFIN_H | ||
2 | #define __LINUX_KVM_BLACKFIN_H | ||
3 | |||
4 | /* blackfin does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-cris/kvm.h b/include/asm-cris/kvm.h new file mode 100644 index 000000000000..c860f51149f0 --- /dev/null +++ b/include/asm-cris/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_CRIS_H | ||
2 | #define __LINUX_KVM_CRIS_H | ||
3 | |||
4 | /* cris does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-frv/kvm.h b/include/asm-frv/kvm.h new file mode 100644 index 000000000000..9c8a4f08d0a9 --- /dev/null +++ b/include/asm-frv/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_FRV_H | ||
2 | #define __LINUX_KVM_FRV_H | ||
3 | |||
4 | /* frv does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-frv/mem-layout.h b/include/asm-frv/mem-layout.h index 83532252b8be..734a1d0583b6 100644 --- a/include/asm-frv/mem-layout.h +++ b/include/asm-frv/mem-layout.h | |||
@@ -60,7 +60,7 @@ | |||
60 | */ | 60 | */ |
61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) | 61 | #define BRK_BASE __UL(2 * 1024 * 1024 + PAGE_SIZE) |
62 | #define STACK_TOP __UL(2 * 1024 * 1024) | 62 | #define STACK_TOP __UL(2 * 1024 * 1024) |
63 | #define STACK_TOP_MAX STACK_TOP | 63 | #define STACK_TOP_MAX __UL(0xc0000000) |
64 | 64 | ||
65 | /* userspace process size */ | 65 | /* userspace process size */ |
66 | #ifdef CONFIG_MMU | 66 | #ifdef CONFIG_MMU |
diff --git a/include/asm-frv/pgtable.h b/include/asm-frv/pgtable.h index 6c0682ed5fc9..4e219046fe42 100644 --- a/include/asm-frv/pgtable.h +++ b/include/asm-frv/pgtable.h | |||
@@ -507,13 +507,22 @@ static inline int pte_file(pte_t pte) | |||
507 | */ | 507 | */ |
508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) | 508 | static inline void update_mmu_cache(struct vm_area_struct *vma, unsigned long address, pte_t pte) |
509 | { | 509 | { |
510 | struct mm_struct *mm; | ||
510 | unsigned long ampr; | 511 | unsigned long ampr; |
511 | pgd_t *pge = pgd_offset(current->mm, address); | ||
512 | pud_t *pue = pud_offset(pge, address); | ||
513 | pmd_t *pme = pmd_offset(pue, address); | ||
514 | 512 | ||
515 | ampr = pme->ste[0] & 0xffffff00; | 513 | mm = current->mm; |
516 | ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C | xAMPRx_V; | 514 | if (mm) { |
515 | pgd_t *pge = pgd_offset(mm, address); | ||
516 | pud_t *pue = pud_offset(pge, address); | ||
517 | pmd_t *pme = pmd_offset(pue, address); | ||
518 | |||
519 | ampr = pme->ste[0] & 0xffffff00; | ||
520 | ampr |= xAMPRx_L | xAMPRx_SS_16Kb | xAMPRx_S | xAMPRx_C | | ||
521 | xAMPRx_V; | ||
522 | } else { | ||
523 | address = ULONG_MAX; | ||
524 | ampr = 0; | ||
525 | } | ||
517 | 526 | ||
518 | asm volatile("movgs %0,scr0\n" | 527 | asm volatile("movgs %0,scr0\n" |
519 | "movgs %0,scr1\n" | 528 | "movgs %0,scr1\n" |
diff --git a/include/asm-frv/spr-regs.h b/include/asm-frv/spr-regs.h index c2a541ef828d..01e6af5e99b8 100644 --- a/include/asm-frv/spr-regs.h +++ b/include/asm-frv/spr-regs.h | |||
@@ -99,9 +99,23 @@ | |||
99 | #define TBR_TT_TRAP1 (0x81 << 4) | 99 | #define TBR_TT_TRAP1 (0x81 << 4) |
100 | #define TBR_TT_TRAP2 (0x82 << 4) | 100 | #define TBR_TT_TRAP2 (0x82 << 4) |
101 | #define TBR_TT_TRAP3 (0x83 << 4) | 101 | #define TBR_TT_TRAP3 (0x83 << 4) |
102 | #define TBR_TT_TRAP120 (0xf8 << 4) | ||
103 | #define TBR_TT_TRAP121 (0xf9 << 4) | ||
104 | #define TBR_TT_TRAP122 (0xfa << 4) | ||
105 | #define TBR_TT_TRAP123 (0xfb << 4) | ||
106 | #define TBR_TT_TRAP124 (0xfc << 4) | ||
107 | #define TBR_TT_TRAP125 (0xfd << 4) | ||
102 | #define TBR_TT_TRAP126 (0xfe << 4) | 108 | #define TBR_TT_TRAP126 (0xfe << 4) |
103 | #define TBR_TT_BREAK (0xff << 4) | 109 | #define TBR_TT_BREAK (0xff << 4) |
104 | 110 | ||
111 | #define TBR_TT_ATOMIC_CMPXCHG32 TBR_TT_TRAP120 | ||
112 | #define TBR_TT_ATOMIC_XCHG32 TBR_TT_TRAP121 | ||
113 | #define TBR_TT_ATOMIC_XOR TBR_TT_TRAP122 | ||
114 | #define TBR_TT_ATOMIC_OR TBR_TT_TRAP123 | ||
115 | #define TBR_TT_ATOMIC_AND TBR_TT_TRAP124 | ||
116 | #define TBR_TT_ATOMIC_SUB TBR_TT_TRAP125 | ||
117 | #define TBR_TT_ATOMIC_ADD TBR_TT_TRAP126 | ||
118 | |||
105 | #define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; }) | 119 | #define __get_TBR() ({ unsigned long x; asm volatile("movsg tbr,%0" : "=r"(x)); x; }) |
106 | 120 | ||
107 | /* | 121 | /* |
diff --git a/include/asm-frv/system.h b/include/asm-frv/system.h index b400cea81487..30a67a9da11a 100644 --- a/include/asm-frv/system.h +++ b/include/asm-frv/system.h | |||
@@ -179,14 +179,23 @@ do { \ | |||
179 | #define mb() asm volatile ("membar" : : :"memory") | 179 | #define mb() asm volatile ("membar" : : :"memory") |
180 | #define rmb() asm volatile ("membar" : : :"memory") | 180 | #define rmb() asm volatile ("membar" : : :"memory") |
181 | #define wmb() asm volatile ("membar" : : :"memory") | 181 | #define wmb() asm volatile ("membar" : : :"memory") |
182 | #define set_mb(var, value) do { var = value; mb(); } while (0) | 182 | #define read_barrier_depends() barrier() |
183 | 183 | ||
184 | #define smp_mb() mb() | 184 | #ifdef CONFIG_SMP |
185 | #define smp_rmb() rmb() | 185 | #define smp_mb() mb() |
186 | #define smp_wmb() wmb() | 186 | #define smp_rmb() rmb() |
187 | 187 | #define smp_wmb() wmb() | |
188 | #define read_barrier_depends() do {} while(0) | ||
189 | #define smp_read_barrier_depends() read_barrier_depends() | 188 | #define smp_read_barrier_depends() read_barrier_depends() |
189 | #define set_mb(var, value) \ | ||
190 | do { xchg(&var, (value)); } while (0) | ||
191 | #else | ||
192 | #define smp_mb() barrier() | ||
193 | #define smp_rmb() barrier() | ||
194 | #define smp_wmb() barrier() | ||
195 | #define smp_read_barrier_depends() do {} while(0) | ||
196 | #define set_mb(var, value) \ | ||
197 | do { var = (value); barrier(); } while (0) | ||
198 | #endif | ||
190 | 199 | ||
191 | #define HARD_RESET_NOW() \ | 200 | #define HARD_RESET_NOW() \ |
192 | do { \ | 201 | do { \ |
@@ -234,7 +243,7 @@ extern void free_initmem(void); | |||
234 | break; \ | 243 | break; \ |
235 | \ | 244 | \ |
236 | default: \ | 245 | default: \ |
237 | __xg_orig = 0; \ | 246 | __xg_orig = (__typeof__(__xg_orig))0; \ |
238 | asm volatile("break"); \ | 247 | asm volatile("break"); \ |
239 | break; \ | 248 | break; \ |
240 | } \ | 249 | } \ |
@@ -259,7 +268,7 @@ extern uint32_t __cmpxchg_32(uint32_t *v, uint32_t test, uint32_t new); | |||
259 | (__force uint32_t)__xg_test, \ | 268 | (__force uint32_t)__xg_test, \ |
260 | (__force uint32_t)__xg_new); break; \ | 269 | (__force uint32_t)__xg_new); break; \ |
261 | default: \ | 270 | default: \ |
262 | __xg_orig = 0; \ | 271 | __xg_orig = (__typeof__(__xg_orig))0; \ |
263 | asm volatile("break"); \ | 272 | asm volatile("break"); \ |
264 | break; \ | 273 | break; \ |
265 | } \ | 274 | } \ |
diff --git a/include/asm-generic/Kbuild.asm b/include/asm-generic/Kbuild.asm index fd9dcfd91c39..92a6d91d0c1a 100644 --- a/include/asm-generic/Kbuild.asm +++ b/include/asm-generic/Kbuild.asm | |||
@@ -1,3 +1,5 @@ | |||
1 | header-y += kvm.h | ||
2 | |||
1 | ifeq ($(wildcard include/asm-$(SRCARCH)/a.out.h),include/asm-$(SRCARCH)/a.out.h) | 3 | ifeq ($(wildcard include/asm-$(SRCARCH)/a.out.h),include/asm-$(SRCARCH)/a.out.h) |
2 | unifdef-y += a.out.h | 4 | unifdef-y += a.out.h |
3 | endif | 5 | endif |
diff --git a/include/asm-h8300/kvm.h b/include/asm-h8300/kvm.h new file mode 100644 index 000000000000..bdbed7b987e1 --- /dev/null +++ b/include/asm-h8300/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_H8300_H | ||
2 | #define __LINUX_KVM_H8300_H | ||
3 | |||
4 | /* h8300 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-ia64/kvm.h b/include/asm-ia64/kvm.h new file mode 100644 index 000000000000..030d29b4b26b --- /dev/null +++ b/include/asm-ia64/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_IA64_H | ||
2 | #define __LINUX_KVM_IA64_H | ||
3 | |||
4 | /* ia64 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m32r/kvm.h b/include/asm-m32r/kvm.h new file mode 100644 index 000000000000..99a40515b77e --- /dev/null +++ b/include/asm-m32r/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M32R_H | ||
2 | #define __LINUX_KVM_M32R_H | ||
3 | |||
4 | /* m32r does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m68k/kvm.h b/include/asm-m68k/kvm.h new file mode 100644 index 000000000000..7ed27fce5240 --- /dev/null +++ b/include/asm-m68k/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M68K_H | ||
2 | #define __LINUX_KVM_M68K_H | ||
3 | |||
4 | /* m68k does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-m68knommu/kvm.h b/include/asm-m68knommu/kvm.h new file mode 100644 index 000000000000..b49d4258dabb --- /dev/null +++ b/include/asm-m68knommu/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_M68KNOMMU_H | ||
2 | #define __LINUX_KVM_M68KNOMMU_H | ||
3 | |||
4 | /* m68knommu does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-mips/cacheflush.h b/include/asm-mips/cacheflush.h index 01e7eadc97e2..d5c0f2fda51b 100644 --- a/include/asm-mips/cacheflush.h +++ b/include/asm-mips/cacheflush.h | |||
@@ -63,8 +63,22 @@ static inline void flush_icache_page(struct vm_area_struct *vma, | |||
63 | } | 63 | } |
64 | 64 | ||
65 | extern void (*flush_icache_range)(unsigned long start, unsigned long end); | 65 | extern void (*flush_icache_range)(unsigned long start, unsigned long end); |
66 | #define flush_cache_vmap(start, end) flush_cache_all() | 66 | |
67 | #define flush_cache_vunmap(start, end) flush_cache_all() | 67 | extern void (*__flush_cache_vmap)(void); |
68 | |||
69 | static inline void flush_cache_vmap(unsigned long start, unsigned long end) | ||
70 | { | ||
71 | if (cpu_has_dc_aliases) | ||
72 | __flush_cache_vmap(); | ||
73 | } | ||
74 | |||
75 | extern void (*__flush_cache_vunmap)(void); | ||
76 | |||
77 | static inline void flush_cache_vunmap(unsigned long start, unsigned long end) | ||
78 | { | ||
79 | if (cpu_has_dc_aliases) | ||
80 | __flush_cache_vunmap(); | ||
81 | } | ||
68 | 82 | ||
69 | extern void copy_to_user_page(struct vm_area_struct *vma, | 83 | extern void copy_to_user_page(struct vm_area_struct *vma, |
70 | struct page *page, unsigned long vaddr, void *dst, const void *src, | 84 | struct page *page, unsigned long vaddr, void *dst, const void *src, |
diff --git a/include/asm-mips/kvm.h b/include/asm-mips/kvm.h new file mode 100644 index 000000000000..093a5b7f796b --- /dev/null +++ b/include/asm-mips/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_MIPS_H | ||
2 | #define __LINUX_KVM_MIPS_H | ||
3 | |||
4 | /* mips does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-mips/mach-au1x00/au1000.h b/include/asm-mips/mach-au1x00/au1000.h index cb18af989645..5bb57bf2b9d7 100644 --- a/include/asm-mips/mach-au1x00/au1000.h +++ b/include/asm-mips/mach-au1x00/au1000.h | |||
@@ -1786,6 +1786,7 @@ struct cpu_spec { | |||
1786 | char *cpu_name; | 1786 | char *cpu_name; |
1787 | unsigned char cpu_od; /* Set Config[OD] */ | 1787 | unsigned char cpu_od; /* Set Config[OD] */ |
1788 | unsigned char cpu_bclk; /* Enable BCLK switching */ | 1788 | unsigned char cpu_bclk; /* Enable BCLK switching */ |
1789 | unsigned char cpu_pll_wo; /* sys_cpupll reg. write-only */ | ||
1789 | }; | 1790 | }; |
1790 | 1791 | ||
1791 | extern struct cpu_spec cpu_specs[]; | 1792 | extern struct cpu_spec cpu_specs[]; |
diff --git a/include/asm-mips/mach-pb1x00/pb1200.h b/include/asm-mips/mach-pb1x00/pb1200.h index ed5fd7390678..72213e3d02c7 100644 --- a/include/asm-mips/mach-pb1x00/pb1200.h +++ b/include/asm-mips/mach-pb1x00/pb1200.h | |||
@@ -245,7 +245,7 @@ enum external_pb1200_ints { | |||
245 | PB1200_SD1_INSERT_INT, | 245 | PB1200_SD1_INSERT_INT, |
246 | PB1200_SD1_EJECT_INT, | 246 | PB1200_SD1_EJECT_INT, |
247 | 247 | ||
248 | PB1200_INT_END (PB1200_INT_BEGIN + 15) | 248 | PB1200_INT_END = PB1200_INT_BEGIN + 15 |
249 | }; | 249 | }; |
250 | 250 | ||
251 | /* For drivers/pcmcia/au1000_db1x00.c */ | 251 | /* For drivers/pcmcia/au1000_db1x00.c */ |
diff --git a/include/asm-mn10300/kvm.h b/include/asm-mn10300/kvm.h new file mode 100644 index 000000000000..f6b609ff4a57 --- /dev/null +++ b/include/asm-mn10300/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_MN10300_H | ||
2 | #define __LINUX_KVM_MN10300_H | ||
3 | |||
4 | /* mn10300 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-parisc/kvm.h b/include/asm-parisc/kvm.h new file mode 100644 index 000000000000..00cc45812547 --- /dev/null +++ b/include/asm-parisc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_PARISC_H | ||
2 | #define __LINUX_KVM_PARISC_H | ||
3 | |||
4 | /* parisc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-powerpc/kvm.h b/include/asm-powerpc/kvm.h new file mode 100644 index 000000000000..d1b530fbf8dd --- /dev/null +++ b/include/asm-powerpc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_POWERPC_H | ||
2 | #define __LINUX_KVM_POWERPC_H | ||
3 | |||
4 | /* powerpc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-s390/kvm.h b/include/asm-s390/kvm.h new file mode 100644 index 000000000000..573f2a351386 --- /dev/null +++ b/include/asm-s390/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_S390_H | ||
2 | #define __LINUX_KVM_S390_H | ||
3 | |||
4 | /* s390 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sh/floppy.h b/include/asm-sh/floppy.h deleted file mode 100644 index 59fbfdc90dfb..000000000000 --- a/include/asm-sh/floppy.h +++ /dev/null | |||
@@ -1,268 +0,0 @@ | |||
1 | /* | ||
2 | * Architecture specific parts of the Floppy driver | ||
3 | * include/asm-i386/floppy.h | ||
4 | * | ||
5 | * This file is subject to the terms and conditions of the GNU General Public | ||
6 | * License. See the file "COPYING" in the main directory of this archive | ||
7 | * for more details. | ||
8 | * | ||
9 | * Copyright (C) 1995 | ||
10 | */ | ||
11 | #ifndef __ASM_SH_FLOPPY_H | ||
12 | #define __ASM_SH_FLOPPY_H | ||
13 | |||
14 | #include <linux/vmalloc.h> | ||
15 | |||
16 | |||
17 | /* | ||
18 | * The DMA channel used by the floppy controller cannot access data at | ||
19 | * addresses >= 16MB | ||
20 | * | ||
21 | * Went back to the 1MB limit, as some people had problems with the floppy | ||
22 | * driver otherwise. It doesn't matter much for performance anyway, as most | ||
23 | * floppy accesses go through the track buffer. | ||
24 | */ | ||
25 | #define _CROSS_64KB(a,s,vdma) \ | ||
26 | (!vdma && ((unsigned long)(a)/K_64 != ((unsigned long)(a) + (s) - 1) / K_64)) | ||
27 | |||
28 | #define CROSS_64KB(a,s) _CROSS_64KB(a,s,use_virtual_dma & 1) | ||
29 | |||
30 | |||
31 | #define SW fd_routine[use_virtual_dma&1] | ||
32 | #define CSW fd_routine[can_use_virtual_dma & 1] | ||
33 | |||
34 | |||
35 | #define fd_inb(port) inb_p(port) | ||
36 | #define fd_outb(value,port) outb_p(value,port) | ||
37 | |||
38 | #define fd_request_dma() CSW._request_dma(FLOPPY_DMA,"floppy") | ||
39 | #define fd_free_dma() CSW._free_dma(FLOPPY_DMA) | ||
40 | #define fd_enable_irq() enable_irq(FLOPPY_IRQ) | ||
41 | #define fd_disable_irq() disable_irq(FLOPPY_IRQ) | ||
42 | #define fd_free_irq() free_irq(FLOPPY_IRQ, NULL) | ||
43 | #define fd_get_dma_residue() SW._get_dma_residue(FLOPPY_DMA) | ||
44 | #define fd_dma_mem_alloc(size) SW._dma_mem_alloc(size) | ||
45 | #define fd_dma_setup(addr, size, mode, io) SW._dma_setup(addr, size, mode, io) | ||
46 | |||
47 | #define FLOPPY_CAN_FALLBACK_ON_NODMA | ||
48 | |||
49 | static int virtual_dma_count; | ||
50 | static int virtual_dma_residue; | ||
51 | static char *virtual_dma_addr; | ||
52 | static int virtual_dma_mode; | ||
53 | static int doing_pdma; | ||
54 | |||
55 | static void floppy_hardint(int irq, void *dev_id, struct pt_regs * regs) | ||
56 | { | ||
57 | register unsigned char st; | ||
58 | |||
59 | #undef TRACE_FLPY_INT | ||
60 | |||
61 | #ifdef TRACE_FLPY_INT | ||
62 | static int calls=0; | ||
63 | static int bytes=0; | ||
64 | static int dma_wait=0; | ||
65 | #endif | ||
66 | if(!doing_pdma) { | ||
67 | floppy_interrupt(irq, dev_id, regs); | ||
68 | return; | ||
69 | } | ||
70 | |||
71 | #ifdef TRACE_FLPY_INT | ||
72 | if(!calls) | ||
73 | bytes = virtual_dma_count; | ||
74 | #endif | ||
75 | |||
76 | { | ||
77 | register int lcount; | ||
78 | register char *lptr; | ||
79 | |||
80 | st = 1; | ||
81 | for(lcount=virtual_dma_count, lptr=virtual_dma_addr; | ||
82 | lcount; lcount--, lptr++) { | ||
83 | st=inb(virtual_dma_port+4) & 0xa0 ; | ||
84 | if(st != 0xa0) | ||
85 | break; | ||
86 | if(virtual_dma_mode) | ||
87 | outb_p(*lptr, virtual_dma_port+5); | ||
88 | else | ||
89 | *lptr = inb_p(virtual_dma_port+5); | ||
90 | } | ||
91 | virtual_dma_count = lcount; | ||
92 | virtual_dma_addr = lptr; | ||
93 | st = inb(virtual_dma_port+4); | ||
94 | } | ||
95 | |||
96 | #ifdef TRACE_FLPY_INT | ||
97 | calls++; | ||
98 | #endif | ||
99 | if(st == 0x20) | ||
100 | return; | ||
101 | if(!(st & 0x20)) { | ||
102 | virtual_dma_residue += virtual_dma_count; | ||
103 | virtual_dma_count=0; | ||
104 | #ifdef TRACE_FLPY_INT | ||
105 | printk("count=%x, residue=%x calls=%d bytes=%d dma_wait=%d\n", | ||
106 | virtual_dma_count, virtual_dma_residue, calls, bytes, | ||
107 | dma_wait); | ||
108 | calls = 0; | ||
109 | dma_wait=0; | ||
110 | #endif | ||
111 | doing_pdma = 0; | ||
112 | floppy_interrupt(irq, dev_id, regs); | ||
113 | return; | ||
114 | } | ||
115 | #ifdef TRACE_FLPY_INT | ||
116 | if(!virtual_dma_count) | ||
117 | dma_wait++; | ||
118 | #endif | ||
119 | } | ||
120 | |||
121 | static void fd_disable_dma(void) | ||
122 | { | ||
123 | if(! (can_use_virtual_dma & 1)) | ||
124 | disable_dma(FLOPPY_DMA); | ||
125 | doing_pdma = 0; | ||
126 | virtual_dma_residue += virtual_dma_count; | ||
127 | virtual_dma_count=0; | ||
128 | } | ||
129 | |||
130 | static int vdma_request_dma(unsigned int dmanr, const char * device_id) | ||
131 | { | ||
132 | return 0; | ||
133 | } | ||
134 | |||
135 | static void vdma_nop(unsigned int dummy) | ||
136 | { | ||
137 | } | ||
138 | |||
139 | |||
140 | static int vdma_get_dma_residue(unsigned int dummy) | ||
141 | { | ||
142 | return virtual_dma_count + virtual_dma_residue; | ||
143 | } | ||
144 | |||
145 | |||
146 | static int fd_request_irq(void) | ||
147 | { | ||
148 | if(can_use_virtual_dma) | ||
149 | return request_irq(FLOPPY_IRQ, floppy_hardint, | ||
150 | IRQF_DISABLED, "floppy", NULL); | ||
151 | else | ||
152 | return request_irq(FLOPPY_IRQ, floppy_interrupt, | ||
153 | IRQF_DISABLED, "floppy", NULL); | ||
154 | } | ||
155 | |||
156 | static unsigned long dma_mem_alloc(unsigned long size) | ||
157 | { | ||
158 | return __get_dma_pages(GFP_KERNEL,get_order(size)); | ||
159 | } | ||
160 | |||
161 | |||
162 | static unsigned long vdma_mem_alloc(unsigned long size) | ||
163 | { | ||
164 | return (unsigned long) vmalloc(size); | ||
165 | |||
166 | } | ||
167 | |||
168 | #define nodma_mem_alloc(size) vdma_mem_alloc(size) | ||
169 | |||
170 | static void _fd_dma_mem_free(unsigned long addr, unsigned long size) | ||
171 | { | ||
172 | if((unsigned int) addr >= (unsigned int) high_memory) | ||
173 | return vfree((void *)addr); | ||
174 | else | ||
175 | free_pages(addr, get_order(size)); | ||
176 | } | ||
177 | |||
178 | #define fd_dma_mem_free(addr, size) _fd_dma_mem_free(addr, size) | ||
179 | |||
180 | static void _fd_chose_dma_mode(char *addr, unsigned long size) | ||
181 | { | ||
182 | if(can_use_virtual_dma == 2) { | ||
183 | if((unsigned int) addr >= (unsigned int) high_memory || | ||
184 | virt_to_phys(addr) >= 0x10000000) | ||
185 | use_virtual_dma = 1; | ||
186 | else | ||
187 | use_virtual_dma = 0; | ||
188 | } else { | ||
189 | use_virtual_dma = can_use_virtual_dma & 1; | ||
190 | } | ||
191 | } | ||
192 | |||
193 | #define fd_chose_dma_mode(addr, size) _fd_chose_dma_mode(addr, size) | ||
194 | |||
195 | |||
196 | static int vdma_dma_setup(char *addr, unsigned long size, int mode, int io) | ||
197 | { | ||
198 | doing_pdma = 1; | ||
199 | virtual_dma_port = io; | ||
200 | virtual_dma_mode = (mode == DMA_MODE_WRITE); | ||
201 | virtual_dma_addr = addr; | ||
202 | virtual_dma_count = size; | ||
203 | virtual_dma_residue = 0; | ||
204 | return 0; | ||
205 | } | ||
206 | |||
207 | static int hard_dma_setup(char *addr, unsigned long size, int mode, int io) | ||
208 | { | ||
209 | #ifdef FLOPPY_SANITY_CHECK | ||
210 | if (CROSS_64KB(addr, size)) { | ||
211 | printk("DMA crossing 64-K boundary %p-%p\n", addr, addr+size); | ||
212 | return -1; | ||
213 | } | ||
214 | #endif | ||
215 | |||
216 | __flush_purge_region(addr, size); | ||
217 | |||
218 | /* actual, physical DMA */ | ||
219 | doing_pdma = 0; | ||
220 | clear_dma_ff(FLOPPY_DMA); | ||
221 | set_dma_mode(FLOPPY_DMA,mode); | ||
222 | set_dma_addr(FLOPPY_DMA,virt_to_phys(addr)); | ||
223 | set_dma_count(FLOPPY_DMA,size); | ||
224 | enable_dma(FLOPPY_DMA); | ||
225 | return 0; | ||
226 | } | ||
227 | |||
228 | static struct fd_routine_l { | ||
229 | int (*_request_dma)(unsigned int dmanr, const char * device_id); | ||
230 | void (*_free_dma)(unsigned int dmanr); | ||
231 | int (*_get_dma_residue)(unsigned int dummy); | ||
232 | unsigned long (*_dma_mem_alloc) (unsigned long size); | ||
233 | int (*_dma_setup)(char *addr, unsigned long size, int mode, int io); | ||
234 | } fd_routine[] = { | ||
235 | { | ||
236 | request_dma, | ||
237 | free_dma, | ||
238 | get_dma_residue, | ||
239 | dma_mem_alloc, | ||
240 | hard_dma_setup | ||
241 | }, | ||
242 | { | ||
243 | vdma_request_dma, | ||
244 | vdma_nop, | ||
245 | vdma_get_dma_residue, | ||
246 | vdma_mem_alloc, | ||
247 | vdma_dma_setup | ||
248 | } | ||
249 | }; | ||
250 | |||
251 | |||
252 | static int FDC1 = 0x3f0; | ||
253 | static int FDC2 = -1; | ||
254 | |||
255 | /* | ||
256 | * Floppy types are stored in the rtc's CMOS RAM and so rtc_lock | ||
257 | * is needed to prevent corrupted CMOS RAM in case "insmod floppy" | ||
258 | * coincides with another rtc CMOS user. Paul G. | ||
259 | */ | ||
260 | #define FLOPPY0_TYPE (4) | ||
261 | #define FLOPPY1_TYPE (0) | ||
262 | |||
263 | #define N_FDC 2 | ||
264 | #define N_DRIVE 8 | ||
265 | |||
266 | #define EXTRA_FLOPPY_PARAMS | ||
267 | |||
268 | #endif /* __ASM_SH_FLOPPY_H */ | ||
diff --git a/include/asm-sh/fpu.h b/include/asm-sh/fpu.h index f8429880a270..91462fea1507 100644 --- a/include/asm-sh/fpu.h +++ b/include/asm-sh/fpu.h | |||
@@ -1,9 +1,8 @@ | |||
1 | #ifndef __ASM_SH_FPU_H | 1 | #ifndef __ASM_SH_FPU_H |
2 | #define __ASM_SH_FPU_H | 2 | #define __ASM_SH_FPU_H |
3 | 3 | ||
4 | #define SR_FD 0x00008000 | ||
5 | |||
6 | #ifndef __ASSEMBLY__ | 4 | #ifndef __ASSEMBLY__ |
5 | #include <linux/preempt.h> | ||
7 | #include <asm/ptrace.h> | 6 | #include <asm/ptrace.h> |
8 | 7 | ||
9 | #ifdef CONFIG_SH_FPU | 8 | #ifdef CONFIG_SH_FPU |
@@ -21,25 +20,35 @@ struct task_struct; | |||
21 | 20 | ||
22 | extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); | 21 | extern void save_fpu(struct task_struct *__tsk, struct pt_regs *regs); |
23 | #else | 22 | #else |
23 | |||
24 | #define release_fpu(regs) do { } while (0) | 24 | #define release_fpu(regs) do { } while (0) |
25 | #define grab_fpu(regs) do { } while (0) | 25 | #define grab_fpu(regs) do { } while (0) |
26 | #define save_fpu(tsk, regs) do { } while (0) | 26 | |
27 | static inline void save_fpu(struct task_struct *tsk, struct pt_regs *regs) | ||
28 | { | ||
29 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); | ||
30 | } | ||
27 | #endif | 31 | #endif |
28 | 32 | ||
29 | extern int do_fpu_inst(unsigned short, struct pt_regs *); | 33 | extern int do_fpu_inst(unsigned short, struct pt_regs *); |
30 | 34 | ||
31 | #define unlazy_fpu(tsk, regs) do { \ | 35 | static inline void unlazy_fpu(struct task_struct *tsk, struct pt_regs *regs) |
32 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \ | 36 | { |
33 | save_fpu(tsk, regs); \ | 37 | preempt_disable(); |
34 | } \ | 38 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) |
35 | } while (0) | 39 | save_fpu(tsk, regs); |
36 | 40 | preempt_enable(); | |
37 | #define clear_fpu(tsk, regs) do { \ | 41 | } |
38 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { \ | 42 | |
39 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); \ | 43 | static inline void clear_fpu(struct task_struct *tsk, struct pt_regs *regs) |
40 | release_fpu(regs); \ | 44 | { |
41 | } \ | 45 | preempt_disable(); |
42 | } while (0) | 46 | if (test_tsk_thread_flag(tsk, TIF_USEDFPU)) { |
47 | clear_tsk_thread_flag(tsk, TIF_USEDFPU); | ||
48 | release_fpu(regs); | ||
49 | } | ||
50 | preempt_enable(); | ||
51 | } | ||
43 | 52 | ||
44 | #endif /* __ASSEMBLY__ */ | 53 | #endif /* __ASSEMBLY__ */ |
45 | 54 | ||
diff --git a/include/asm-sh/kvm.h b/include/asm-sh/kvm.h new file mode 100644 index 000000000000..6af51dbab2d0 --- /dev/null +++ b/include/asm-sh/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SH_H | ||
2 | #define __LINUX_KVM_SH_H | ||
3 | |||
4 | /* sh does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h index 19fe47c1ca17..ec707b98e5b9 100644 --- a/include/asm-sh/processor.h +++ b/include/asm-sh/processor.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define __ASM_SH_PROCESSOR_H | 2 | #define __ASM_SH_PROCESSOR_H |
3 | 3 | ||
4 | #include <asm/cpu-features.h> | 4 | #include <asm/cpu-features.h> |
5 | #include <asm/fpu.h> | ||
6 | 5 | ||
7 | #ifndef __ASSEMBLY__ | 6 | #ifndef __ASSEMBLY__ |
8 | /* | 7 | /* |
diff --git a/include/asm-sh/processor_32.h b/include/asm-sh/processor_32.h index df2d5b039ef4..c09305d6a9d9 100644 --- a/include/asm-sh/processor_32.h +++ b/include/asm-sh/processor_32.h | |||
@@ -70,6 +70,7 @@ extern struct sh_cpuinfo cpu_data[]; | |||
70 | */ | 70 | */ |
71 | #define SR_DSP 0x00001000 | 71 | #define SR_DSP 0x00001000 |
72 | #define SR_IMASK 0x000000f0 | 72 | #define SR_IMASK 0x000000f0 |
73 | #define SR_FD 0x00008000 | ||
73 | 74 | ||
74 | /* | 75 | /* |
75 | * FPU structure and data | 76 | * FPU structure and data |
diff --git a/include/asm-sh/processor_64.h b/include/asm-sh/processor_64.h index eda4bef448e9..88a2edf8fa5d 100644 --- a/include/asm-sh/processor_64.h +++ b/include/asm-sh/processor_64.h | |||
@@ -112,6 +112,7 @@ extern struct sh_cpuinfo cpu_data[]; | |||
112 | #endif | 112 | #endif |
113 | 113 | ||
114 | #define SR_IMASK 0x000000f0 | 114 | #define SR_IMASK 0x000000f0 |
115 | #define SR_FD 0x00008000 | ||
115 | #define SR_SSTEP 0x08000000 | 116 | #define SR_SSTEP 0x08000000 |
116 | 117 | ||
117 | #ifndef __ASSEMBLY__ | 118 | #ifndef __ASSEMBLY__ |
diff --git a/include/asm-sparc/kvm.h b/include/asm-sparc/kvm.h new file mode 100644 index 000000000000..2e5478da3819 --- /dev/null +++ b/include/asm-sparc/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SPARC_H | ||
2 | #define __LINUX_KVM_SPARC_H | ||
3 | |||
4 | /* sparc does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h index 542421460a12..532975ecfe10 100644 --- a/include/asm-sparc64/cpudata.h +++ b/include/asm-sparc64/cpudata.h | |||
@@ -86,6 +86,8 @@ extern struct trap_per_cpu trap_block[NR_CPUS]; | |||
86 | extern void init_cur_cpu_trap(struct thread_info *); | 86 | extern void init_cur_cpu_trap(struct thread_info *); |
87 | extern void setup_tba(void); | 87 | extern void setup_tba(void); |
88 | extern int ncpus_probed; | 88 | extern int ncpus_probed; |
89 | extern void __init cpu_probe(void); | ||
90 | extern const struct seq_operations cpuinfo_op; | ||
89 | 91 | ||
90 | extern unsigned long real_hard_smp_processor_id(void); | 92 | extern unsigned long real_hard_smp_processor_id(void); |
91 | 93 | ||
diff --git a/include/asm-sparc64/dcu.h b/include/asm-sparc64/dcu.h index ecbed2ae548f..0f704e106a1b 100644 --- a/include/asm-sparc64/dcu.h +++ b/include/asm-sparc64/dcu.h | |||
@@ -1,26 +1,27 @@ | |||
1 | /* $Id: dcu.h,v 1.2 2001/03/01 23:23:33 davem Exp $ */ | ||
2 | #ifndef _SPARC64_DCU_H | 1 | #ifndef _SPARC64_DCU_H |
3 | #define _SPARC64_DCU_H | 2 | #define _SPARC64_DCU_H |
4 | 3 | ||
4 | #include <linux/const.h> | ||
5 | |||
5 | /* UltraSparc-III Data Cache Unit Control Register */ | 6 | /* UltraSparc-III Data Cache Unit Control Register */ |
6 | #define DCU_CP 0x0002000000000000 /* Physical Cache Enable w/o mmu*/ | 7 | #define DCU_CP _AC(0x0002000000000000,UL) /* Phys Cache Enable w/o mmu */ |
7 | #define DCU_CV 0x0001000000000000 /* Virtual Cache Enable w/o mmu */ | 8 | #define DCU_CV _AC(0x0001000000000000,UL) /* Virt Cache Enable w/o mmu */ |
8 | #define DCU_ME 0x0000800000000000 /* NC-store Merging Enable */ | 9 | #define DCU_ME _AC(0x0000800000000000,UL) /* NC-store Merging Enable */ |
9 | #define DCU_RE 0x0000400000000000 /* RAW bypass Enable */ | 10 | #define DCU_RE _AC(0x0000400000000000,UL) /* RAW bypass Enable */ |
10 | #define DCU_PE 0x0000200000000000 /* PCache Enable */ | 11 | #define DCU_PE _AC(0x0000200000000000,UL) /* PCache Enable */ |
11 | #define DCU_HPE 0x0000100000000000 /* HW prefetch Enable */ | 12 | #define DCU_HPE _AC(0x0000100000000000,UL) /* HW prefetch Enable */ |
12 | #define DCU_SPE 0x0000080000000000 /* SW prefetch Enable */ | 13 | #define DCU_SPE _AC(0x0000080000000000,UL) /* SW prefetch Enable */ |
13 | #define DCU_SL 0x0000040000000000 /* Secondary load steering Enab */ | 14 | #define DCU_SL _AC(0x0000040000000000,UL) /* Secondary ld-steering Enab*/ |
14 | #define DCU_WE 0x0000020000000000 /* WCache enable */ | 15 | #define DCU_WE _AC(0x0000020000000000,UL) /* WCache enable */ |
15 | #define DCU_PM 0x000001fe00000000 /* PA Watchpoint Byte Mask */ | 16 | #define DCU_PM _AC(0x000001fe00000000,UL) /* PA Watchpoint Byte Mask */ |
16 | #define DCU_VM 0x00000001fe000000 /* VA Watchpoint Byte Mask */ | 17 | #define DCU_VM _AC(0x00000001fe000000,UL) /* VA Watchpoint Byte Mask */ |
17 | #define DCU_PR 0x0000000001000000 /* PA Watchpoint Read Enable */ | 18 | #define DCU_PR _AC(0x0000000001000000,UL) /* PA Watchpoint Read Enable */ |
18 | #define DCU_PW 0x0000000000800000 /* PA Watchpoint Write Enable */ | 19 | #define DCU_PW _AC(0x0000000000800000,UL) /* PA Watchpoint Write Enable*/ |
19 | #define DCU_VR 0x0000000000400000 /* VA Watchpoint Read Enable */ | 20 | #define DCU_VR _AC(0x0000000000400000,UL) /* VA Watchpoint Read Enable */ |
20 | #define DCU_VW 0x0000000000200000 /* VA Watchpoint Write Enable */ | 21 | #define DCU_VW _AC(0x0000000000200000,UL) /* VA Watchpoint Write Enable*/ |
21 | #define DCU_DM 0x0000000000000008 /* DMMU Enable */ | 22 | #define DCU_DM _AC(0x0000000000000008,UL) /* DMMU Enable */ |
22 | #define DCU_IM 0x0000000000000004 /* IMMU Enable */ | 23 | #define DCU_IM _AC(0x0000000000000004,UL) /* IMMU Enable */ |
23 | #define DCU_DC 0x0000000000000002 /* Data Cache Enable */ | 24 | #define DCU_DC _AC(0x0000000000000002,UL) /* Data Cache Enable */ |
24 | #define DCU_IC 0x0000000000000001 /* Instruction Cache Enable */ | 25 | #define DCU_IC _AC(0x0000000000000001,UL) /* Instruction Cache Enable */ |
25 | 26 | ||
26 | #endif /* _SPARC64_DCU_H */ | 27 | #endif /* _SPARC64_DCU_H */ |
diff --git a/include/asm-sparc64/irq.h b/include/asm-sparc64/irq.h index 30cb76b47be1..0bb9bf531745 100644 --- a/include/asm-sparc64/irq.h +++ b/include/asm-sparc64/irq.h | |||
@@ -64,6 +64,7 @@ extern unsigned char virt_irq_alloc(unsigned int dev_handle, | |||
64 | extern void virt_irq_free(unsigned int virt_irq); | 64 | extern void virt_irq_free(unsigned int virt_irq); |
65 | #endif | 65 | #endif |
66 | 66 | ||
67 | extern void __init init_IRQ(void); | ||
67 | extern void fixup_irqs(void); | 68 | extern void fixup_irqs(void); |
68 | 69 | ||
69 | static inline void set_softint(unsigned long bits) | 70 | static inline void set_softint(unsigned long bits) |
diff --git a/include/asm-sparc64/kvm.h b/include/asm-sparc64/kvm.h new file mode 100644 index 000000000000..380537a77bf9 --- /dev/null +++ b/include/asm-sparc64/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_SPARC64_H | ||
2 | #define __LINUX_KVM_SPARC64_H | ||
3 | |||
4 | /* sparc64 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 3167ccff64f8..549e45266b68 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h | |||
@@ -23,9 +23,9 @@ | |||
23 | #include <asm/page.h> | 23 | #include <asm/page.h> |
24 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
25 | 25 | ||
26 | /* The kernel image occupies 0x4000000 to 0x1000000 (4MB --> 32MB). | 26 | /* The kernel image occupies 0x4000000 to 0x6000000 (4MB --> 96MB). |
27 | * The page copy blockops can use 0x2000000 to 0x4000000. | 27 | * The page copy blockops can use 0x6000000 to 0x8000000. |
28 | * The TSB is mapped in the 0x4000000 to 0x6000000 range. | 28 | * The TSB is mapped in the 0x8000000 to 0xa000000 range. |
29 | * The PROM resides in an area spanning 0xf0000000 to 0x100000000. | 29 | * The PROM resides in an area spanning 0xf0000000 to 0x100000000. |
30 | * The vmalloc area spans 0x100000000 to 0x200000000. | 30 | * The vmalloc area spans 0x100000000 to 0x200000000. |
31 | * Since modules need to be in the lowest 32-bits of the address space, | 31 | * Since modules need to be in the lowest 32-bits of the address space, |
@@ -33,8 +33,8 @@ | |||
33 | * There is a single static kernel PMD which maps from 0x0 to address | 33 | * There is a single static kernel PMD which maps from 0x0 to address |
34 | * 0x400000000. | 34 | * 0x400000000. |
35 | */ | 35 | */ |
36 | #define TLBTEMP_BASE _AC(0x0000000002000000,UL) | 36 | #define TLBTEMP_BASE _AC(0x0000000006000000,UL) |
37 | #define TSBMAP_BASE _AC(0x0000000004000000,UL) | 37 | #define TSBMAP_BASE _AC(0x0000000008000000,UL) |
38 | #define MODULES_VADDR _AC(0x0000000010000000,UL) | 38 | #define MODULES_VADDR _AC(0x0000000010000000,UL) |
39 | #define MODULES_LEN _AC(0x00000000e0000000,UL) | 39 | #define MODULES_LEN _AC(0x00000000e0000000,UL) |
40 | #define MODULES_END _AC(0x00000000f0000000,UL) | 40 | #define MODULES_END _AC(0x00000000f0000000,UL) |
@@ -761,6 +761,8 @@ extern unsigned long get_fb_unmapped_area(struct file *filp, unsigned long, | |||
761 | extern void pgtable_cache_init(void); | 761 | extern void pgtable_cache_init(void); |
762 | extern void sun4v_register_fault_status(void); | 762 | extern void sun4v_register_fault_status(void); |
763 | extern void sun4v_ktsb_register(void); | 763 | extern void sun4v_ktsb_register(void); |
764 | extern void __init cheetah_ecache_flush_init(void); | ||
765 | extern void sun4v_patch_tlb_handlers(void); | ||
764 | 766 | ||
765 | extern unsigned long cmdline_memory_size; | 767 | extern unsigned long cmdline_memory_size; |
766 | 768 | ||
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h index 8da484c19822..885b6a1dcae4 100644 --- a/include/asm-sparc64/processor.h +++ b/include/asm-sparc64/processor.h | |||
@@ -37,6 +37,9 @@ | |||
37 | #endif | 37 | #endif |
38 | 38 | ||
39 | #define TASK_SIZE ((unsigned long)-VPTE_SIZE) | 39 | #define TASK_SIZE ((unsigned long)-VPTE_SIZE) |
40 | #define TASK_SIZE_OF(tsk) \ | ||
41 | (test_tsk_thread_flag(tsk,TIF_32BIT) ? \ | ||
42 | (1UL << 32UL) : TASK_SIZE) | ||
40 | #ifdef __KERNEL__ | 43 | #ifdef __KERNEL__ |
41 | 44 | ||
42 | #define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE) | 45 | #define STACK_TOP32 ((1UL << 32UL) - PAGE_SIZE) |
diff --git a/include/asm-sparc64/stacktrace.h b/include/asm-sparc64/stacktrace.h new file mode 100644 index 000000000000..6cee39adf6d6 --- /dev/null +++ b/include/asm-sparc64/stacktrace.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _SPARC64_STACKTRACE_H | ||
2 | #define _SPARC64_STACKTRACE_H | ||
3 | |||
4 | extern void stack_trace_flush(void); | ||
5 | |||
6 | #endif /* _SPARC64_STACKTRACE_H */ | ||
diff --git a/include/asm-sparc64/timer.h b/include/asm-sparc64/timer.h index ccbd69448866..5b779fd1f788 100644 --- a/include/asm-sparc64/timer.h +++ b/include/asm-sparc64/timer.h | |||
@@ -1,14 +1,13 @@ | |||
1 | /* $Id: timer.h,v 1.3 2000/05/09 17:40:15 davem Exp $ | 1 | /* timer.h: System timer definitions for sun5. |
2 | * timer.h: System timer definitions for sun5. | ||
3 | * | 2 | * |
4 | * Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1997, 2008 David S. Miller (davem@davemloft.net) |
5 | */ | 4 | */ |
6 | 5 | ||
7 | #ifndef _SPARC64_TIMER_H | 6 | #ifndef _SPARC64_TIMER_H |
8 | #define _SPARC64_TIMER_H | 7 | #define _SPARC64_TIMER_H |
9 | 8 | ||
10 | #include <linux/types.h> | 9 | #include <linux/types.h> |
11 | 10 | #include <linux/init.h> | |
12 | 11 | ||
13 | struct sparc64_tick_ops { | 12 | struct sparc64_tick_ops { |
14 | unsigned long (*get_tick)(void); | 13 | unsigned long (*get_tick)(void); |
@@ -25,5 +24,7 @@ struct sparc64_tick_ops { | |||
25 | extern struct sparc64_tick_ops *tick_ops; | 24 | extern struct sparc64_tick_ops *tick_ops; |
26 | 25 | ||
27 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); | 26 | extern unsigned long sparc64_get_clock_tick(unsigned int cpu); |
27 | extern void __devinit setup_sparc64_timer(void); | ||
28 | extern void __init time_init(void); | ||
28 | 29 | ||
29 | #endif /* _SPARC64_TIMER_H */ | 30 | #endif /* _SPARC64_TIMER_H */ |
diff --git a/include/asm-um/kvm.h b/include/asm-um/kvm.h new file mode 100644 index 000000000000..66aa77094551 --- /dev/null +++ b/include/asm-um/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_UM_H | ||
2 | #define __LINUX_KVM_UM_H | ||
3 | |||
4 | /* um does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-v850/kvm.h b/include/asm-v850/kvm.h new file mode 100644 index 000000000000..3f729b79febc --- /dev/null +++ b/include/asm-v850/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_V850_H | ||
2 | #define __LINUX_KVM_V850_H | ||
3 | |||
4 | /* v850 does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/asm-x86/irqflags.h b/include/asm-x86/irqflags.h index 92021c1ffa3a..0e2292483b35 100644 --- a/include/asm-x86/irqflags.h +++ b/include/asm-x86/irqflags.h | |||
@@ -70,6 +70,26 @@ static inline void raw_local_irq_restore(unsigned long flags) | |||
70 | native_restore_fl(flags); | 70 | native_restore_fl(flags); |
71 | } | 71 | } |
72 | 72 | ||
73 | #ifdef CONFIG_X86_VSMP | ||
74 | |||
75 | /* | ||
76 | * Interrupt control for the VSMP architecture: | ||
77 | */ | ||
78 | |||
79 | static inline void raw_local_irq_disable(void) | ||
80 | { | ||
81 | unsigned long flags = __raw_local_save_flags(); | ||
82 | raw_local_irq_restore((flags & ~X86_EFLAGS_IF) | X86_EFLAGS_AC); | ||
83 | } | ||
84 | |||
85 | static inline void raw_local_irq_enable(void) | ||
86 | { | ||
87 | unsigned long flags = __raw_local_save_flags(); | ||
88 | raw_local_irq_restore((flags | X86_EFLAGS_IF) & (~X86_EFLAGS_AC)); | ||
89 | } | ||
90 | |||
91 | #else | ||
92 | |||
73 | static inline void raw_local_irq_disable(void) | 93 | static inline void raw_local_irq_disable(void) |
74 | { | 94 | { |
75 | native_irq_disable(); | 95 | native_irq_disable(); |
@@ -80,6 +100,8 @@ static inline void raw_local_irq_enable(void) | |||
80 | native_irq_enable(); | 100 | native_irq_enable(); |
81 | } | 101 | } |
82 | 102 | ||
103 | #endif | ||
104 | |||
83 | /* | 105 | /* |
84 | * Used in the idle loop; sti takes one instruction cycle | 106 | * Used in the idle loop; sti takes one instruction cycle |
85 | * to complete: | 107 | * to complete: |
@@ -137,10 +159,17 @@ static inline unsigned long __raw_local_irq_save(void) | |||
137 | #define raw_local_irq_save(flags) \ | 159 | #define raw_local_irq_save(flags) \ |
138 | do { (flags) = __raw_local_irq_save(); } while (0) | 160 | do { (flags) = __raw_local_irq_save(); } while (0) |
139 | 161 | ||
162 | #ifdef CONFIG_X86_VSMP | ||
163 | static inline int raw_irqs_disabled_flags(unsigned long flags) | ||
164 | { | ||
165 | return !(flags & X86_EFLAGS_IF) || (flags & X86_EFLAGS_AC); | ||
166 | } | ||
167 | #else | ||
140 | static inline int raw_irqs_disabled_flags(unsigned long flags) | 168 | static inline int raw_irqs_disabled_flags(unsigned long flags) |
141 | { | 169 | { |
142 | return !(flags & X86_EFLAGS_IF); | 170 | return !(flags & X86_EFLAGS_IF); |
143 | } | 171 | } |
172 | #endif | ||
144 | 173 | ||
145 | static inline int raw_irqs_disabled(void) | 174 | static inline int raw_irqs_disabled(void) |
146 | { | 175 | { |
diff --git a/include/asm-x86/lguest_hcall.h b/include/asm-x86/lguest_hcall.h index 758b9a5d4539..f239e7069cab 100644 --- a/include/asm-x86/lguest_hcall.h +++ b/include/asm-x86/lguest_hcall.h | |||
@@ -27,7 +27,7 @@ | |||
27 | #ifndef __ASSEMBLY__ | 27 | #ifndef __ASSEMBLY__ |
28 | #include <asm/hw_irq.h> | 28 | #include <asm/hw_irq.h> |
29 | 29 | ||
30 | /*G:031 First, how does our Guest contact the Host to ask for privileged | 30 | /*G:031 But first, how does our Guest contact the Host to ask for privileged |
31 | * operations? There are two ways: the direct way is to make a "hypercall", | 31 | * operations? There are two ways: the direct way is to make a "hypercall", |
32 | * to make requests of the Host Itself. | 32 | * to make requests of the Host Itself. |
33 | * | 33 | * |
diff --git a/include/asm-x86/linkage.h b/include/asm-x86/linkage.h index 31739c7d66a9..c048353f4b85 100644 --- a/include/asm-x86/linkage.h +++ b/include/asm-x86/linkage.h | |||
@@ -8,12 +8,45 @@ | |||
8 | 8 | ||
9 | #ifdef CONFIG_X86_32 | 9 | #ifdef CONFIG_X86_32 |
10 | #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) | 10 | #define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0))) |
11 | #define prevent_tail_call(ret) __asm__ ("" : "=r" (ret) : "0" (ret)) | ||
12 | /* | 11 | /* |
13 | * For 32-bit UML - mark functions implemented in assembly that use | 12 | * For 32-bit UML - mark functions implemented in assembly that use |
14 | * regparm input parameters: | 13 | * regparm input parameters: |
15 | */ | 14 | */ |
16 | #define asmregparm __attribute__((regparm(3))) | 15 | #define asmregparm __attribute__((regparm(3))) |
16 | |||
17 | /* | ||
18 | * Make sure the compiler doesn't do anything stupid with the | ||
19 | * arguments on the stack - they are owned by the *caller*, not | ||
20 | * the callee. This just fools gcc into not spilling into them, | ||
21 | * and keeps it from doing tailcall recursion and/or using the | ||
22 | * stack slots for temporaries, since they are live and "used" | ||
23 | * all the way to the end of the function. | ||
24 | * | ||
25 | * NOTE! On x86-64, all the arguments are in registers, so this | ||
26 | * only matters on a 32-bit kernel. | ||
27 | */ | ||
28 | #define asmlinkage_protect(n, ret, args...) \ | ||
29 | __asmlinkage_protect##n(ret, ##args) | ||
30 | #define __asmlinkage_protect_n(ret, args...) \ | ||
31 | __asm__ __volatile__ ("" : "=r" (ret) : "0" (ret), ##args) | ||
32 | #define __asmlinkage_protect0(ret) \ | ||
33 | __asmlinkage_protect_n(ret) | ||
34 | #define __asmlinkage_protect1(ret, arg1) \ | ||
35 | __asmlinkage_protect_n(ret, "g" (arg1)) | ||
36 | #define __asmlinkage_protect2(ret, arg1, arg2) \ | ||
37 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2)) | ||
38 | #define __asmlinkage_protect3(ret, arg1, arg2, arg3) \ | ||
39 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3)) | ||
40 | #define __asmlinkage_protect4(ret, arg1, arg2, arg3, arg4) \ | ||
41 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
42 | "g" (arg4)) | ||
43 | #define __asmlinkage_protect5(ret, arg1, arg2, arg3, arg4, arg5) \ | ||
44 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
45 | "g" (arg4), "g" (arg5)) | ||
46 | #define __asmlinkage_protect6(ret, arg1, arg2, arg3, arg4, arg5, arg6) \ | ||
47 | __asmlinkage_protect_n(ret, "g" (arg1), "g" (arg2), "g" (arg3), \ | ||
48 | "g" (arg4), "g" (arg5), "g" (arg6)) | ||
49 | |||
17 | #endif | 50 | #endif |
18 | 51 | ||
19 | #ifdef CONFIG_X86_ALIGNMENT_16 | 52 | #ifdef CONFIG_X86_ALIGNMENT_16 |
diff --git a/include/asm-x86/mach-rdc321x/gpio.h b/include/asm-x86/mach-rdc321x/gpio.h index db31b929b990..acce0b7d397b 100644 --- a/include/asm-x86/mach-rdc321x/gpio.h +++ b/include/asm-x86/mach-rdc321x/gpio.h | |||
@@ -5,19 +5,20 @@ extern int rdc_gpio_get_value(unsigned gpio); | |||
5 | extern void rdc_gpio_set_value(unsigned gpio, int value); | 5 | extern void rdc_gpio_set_value(unsigned gpio, int value); |
6 | extern int rdc_gpio_direction_input(unsigned gpio); | 6 | extern int rdc_gpio_direction_input(unsigned gpio); |
7 | extern int rdc_gpio_direction_output(unsigned gpio, int value); | 7 | extern int rdc_gpio_direction_output(unsigned gpio, int value); |
8 | 8 | extern int rdc_gpio_request(unsigned gpio, const char *label); | |
9 | extern void rdc_gpio_free(unsigned gpio); | ||
10 | extern void __init rdc321x_gpio_setup(void); | ||
9 | 11 | ||
10 | /* Wrappers for the arch-neutral GPIO API */ | 12 | /* Wrappers for the arch-neutral GPIO API */ |
11 | 13 | ||
12 | static inline int gpio_request(unsigned gpio, const char *label) | 14 | static inline int gpio_request(unsigned gpio, const char *label) |
13 | { | 15 | { |
14 | /* Not yet implemented */ | 16 | return rdc_gpio_request(gpio, label); |
15 | return 0; | ||
16 | } | 17 | } |
17 | 18 | ||
18 | static inline void gpio_free(unsigned gpio) | 19 | static inline void gpio_free(unsigned gpio) |
19 | { | 20 | { |
20 | /* Not yet implemented */ | 21 | rdc_gpio_free(gpio); |
21 | } | 22 | } |
22 | 23 | ||
23 | static inline int gpio_direction_input(unsigned gpio) | 24 | static inline int gpio_direction_input(unsigned gpio) |
diff --git a/include/asm-x86/mach-rdc321x/rdc321x_defs.h b/include/asm-x86/mach-rdc321x/rdc321x_defs.h index 838ba8f64fd3..c8e9c8bed3d0 100644 --- a/include/asm-x86/mach-rdc321x/rdc321x_defs.h +++ b/include/asm-x86/mach-rdc321x/rdc321x_defs.h | |||
@@ -3,4 +3,10 @@ | |||
3 | /* General purpose configuration and data registers */ | 3 | /* General purpose configuration and data registers */ |
4 | #define RDC3210_CFGREG_ADDR 0x0CF8 | 4 | #define RDC3210_CFGREG_ADDR 0x0CF8 |
5 | #define RDC3210_CFGREG_DATA 0x0CFC | 5 | #define RDC3210_CFGREG_DATA 0x0CFC |
6 | #define RDC_MAX_GPIO 0x3A | 6 | |
7 | #define RDC321X_GPIO_CTRL_REG1 0x48 | ||
8 | #define RDC321X_GPIO_CTRL_REG2 0x84 | ||
9 | #define RDC321X_GPIO_DATA_REG1 0x4c | ||
10 | #define RDC321X_GPIO_DATA_REG2 0x88 | ||
11 | |||
12 | #define RDC321X_MAX_GPIO 58 | ||
diff --git a/include/asm-x86/nops.h b/include/asm-x86/nops.h index e3b2bce0aff8..b3930ae539b3 100644 --- a/include/asm-x86/nops.h +++ b/include/asm-x86/nops.h | |||
@@ -73,16 +73,7 @@ | |||
73 | #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n" | 73 | #define P6_NOP7 ".byte 0x0f,0x1f,0x80,0,0,0,0\n" |
74 | #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n" | 74 | #define P6_NOP8 ".byte 0x0f,0x1f,0x84,0x00,0,0,0,0\n" |
75 | 75 | ||
76 | #if defined(CONFIG_MK8) | 76 | #if defined(CONFIG_MK7) |
77 | #define ASM_NOP1 K8_NOP1 | ||
78 | #define ASM_NOP2 K8_NOP2 | ||
79 | #define ASM_NOP3 K8_NOP3 | ||
80 | #define ASM_NOP4 K8_NOP4 | ||
81 | #define ASM_NOP5 K8_NOP5 | ||
82 | #define ASM_NOP6 K8_NOP6 | ||
83 | #define ASM_NOP7 K8_NOP7 | ||
84 | #define ASM_NOP8 K8_NOP8 | ||
85 | #elif defined(CONFIG_MK7) | ||
86 | #define ASM_NOP1 K7_NOP1 | 77 | #define ASM_NOP1 K7_NOP1 |
87 | #define ASM_NOP2 K7_NOP2 | 78 | #define ASM_NOP2 K7_NOP2 |
88 | #define ASM_NOP3 K7_NOP3 | 79 | #define ASM_NOP3 K7_NOP3 |
@@ -100,6 +91,15 @@ | |||
100 | #define ASM_NOP6 P6_NOP6 | 91 | #define ASM_NOP6 P6_NOP6 |
101 | #define ASM_NOP7 P6_NOP7 | 92 | #define ASM_NOP7 P6_NOP7 |
102 | #define ASM_NOP8 P6_NOP8 | 93 | #define ASM_NOP8 P6_NOP8 |
94 | #elif defined(CONFIG_X86_64) | ||
95 | #define ASM_NOP1 K8_NOP1 | ||
96 | #define ASM_NOP2 K8_NOP2 | ||
97 | #define ASM_NOP3 K8_NOP3 | ||
98 | #define ASM_NOP4 K8_NOP4 | ||
99 | #define ASM_NOP5 K8_NOP5 | ||
100 | #define ASM_NOP6 K8_NOP6 | ||
101 | #define ASM_NOP7 K8_NOP7 | ||
102 | #define ASM_NOP8 K8_NOP8 | ||
103 | #else | 103 | #else |
104 | #define ASM_NOP1 GENERIC_NOP1 | 104 | #define ASM_NOP1 GENERIC_NOP1 |
105 | #define ASM_NOP2 GENERIC_NOP2 | 105 | #define ASM_NOP2 GENERIC_NOP2 |
diff --git a/include/asm-x86/pgtable.h b/include/asm-x86/pgtable.h index 174b87738714..9cf472aeb9ce 100644 --- a/include/asm-x86/pgtable.h +++ b/include/asm-x86/pgtable.h | |||
@@ -85,6 +85,7 @@ extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC; | |||
85 | #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW) | 85 | #define __PAGE_KERNEL_RX (__PAGE_KERNEL_EXEC & ~_PAGE_RW) |
86 | #define __PAGE_KERNEL_EXEC_NOCACHE (__PAGE_KERNEL_EXEC | _PAGE_PCD | _PAGE_PWT) | 86 | #define __PAGE_KERNEL_EXEC_NOCACHE (__PAGE_KERNEL_EXEC | _PAGE_PCD | _PAGE_PWT) |
87 | #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT) | 87 | #define __PAGE_KERNEL_NOCACHE (__PAGE_KERNEL | _PAGE_PCD | _PAGE_PWT) |
88 | #define __PAGE_KERNEL_UC_MINUS (__PAGE_KERNEL | _PAGE_PCD) | ||
88 | #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER) | 89 | #define __PAGE_KERNEL_VSYSCALL (__PAGE_KERNEL_RX | _PAGE_USER) |
89 | #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT) | 90 | #define __PAGE_KERNEL_VSYSCALL_NOCACHE (__PAGE_KERNEL_VSYSCALL | _PAGE_PCD | _PAGE_PWT) |
90 | #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) | 91 | #define __PAGE_KERNEL_LARGE (__PAGE_KERNEL | _PAGE_PSE) |
@@ -101,6 +102,7 @@ extern pteval_t __PAGE_KERNEL, __PAGE_KERNEL_EXEC; | |||
101 | #define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC) | 102 | #define PAGE_KERNEL_EXEC MAKE_GLOBAL(__PAGE_KERNEL_EXEC) |
102 | #define PAGE_KERNEL_RX MAKE_GLOBAL(__PAGE_KERNEL_RX) | 103 | #define PAGE_KERNEL_RX MAKE_GLOBAL(__PAGE_KERNEL_RX) |
103 | #define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE) | 104 | #define PAGE_KERNEL_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_NOCACHE) |
105 | #define PAGE_KERNEL_UC_MINUS MAKE_GLOBAL(__PAGE_KERNEL_UC_MINUS) | ||
104 | #define PAGE_KERNEL_EXEC_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_EXEC_NOCACHE) | 106 | #define PAGE_KERNEL_EXEC_NOCACHE MAKE_GLOBAL(__PAGE_KERNEL_EXEC_NOCACHE) |
105 | #define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE) | 107 | #define PAGE_KERNEL_LARGE MAKE_GLOBAL(__PAGE_KERNEL_LARGE) |
106 | #define PAGE_KERNEL_LARGE_EXEC MAKE_GLOBAL(__PAGE_KERNEL_LARGE_EXEC) | 108 | #define PAGE_KERNEL_LARGE_EXEC MAKE_GLOBAL(__PAGE_KERNEL_LARGE_EXEC) |
diff --git a/include/asm-xtensa/kvm.h b/include/asm-xtensa/kvm.h new file mode 100644 index 000000000000..bda4e331e98c --- /dev/null +++ b/include/asm-xtensa/kvm.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __LINUX_KVM_XTENSA_H | ||
2 | #define __LINUX_KVM_XTENSA_H | ||
3 | |||
4 | /* xtensa does not support KVM */ | ||
5 | |||
6 | #endif | ||
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 4108b38ebb16..9cdd12a9e843 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
@@ -195,7 +195,6 @@ unifdef-y += ethtool.h | |||
195 | unifdef-y += eventpoll.h | 195 | unifdef-y += eventpoll.h |
196 | unifdef-y += signalfd.h | 196 | unifdef-y += signalfd.h |
197 | unifdef-y += ext2_fs.h | 197 | unifdef-y += ext2_fs.h |
198 | unifdef-y += ext3_fs.h | ||
199 | unifdef-y += fb.h | 198 | unifdef-y += fb.h |
200 | unifdef-y += fcntl.h | 199 | unifdef-y += fcntl.h |
201 | unifdef-y += filter.h | 200 | unifdef-y += filter.h |
@@ -248,14 +247,13 @@ unifdef-y += isdn.h | |||
248 | unifdef-y += isdnif.h | 247 | unifdef-y += isdnif.h |
249 | unifdef-y += isdn_divertif.h | 248 | unifdef-y += isdn_divertif.h |
250 | unifdef-y += isdn_ppp.h | 249 | unifdef-y += isdn_ppp.h |
251 | unifdef-y += jbd.h | ||
252 | unifdef-y += joystick.h | 250 | unifdef-y += joystick.h |
253 | unifdef-y += kdev_t.h | 251 | unifdef-y += kdev_t.h |
254 | unifdef-y += kd.h | 252 | unifdef-y += kd.h |
255 | unifdef-y += kernelcapi.h | 253 | unifdef-y += kernelcapi.h |
256 | unifdef-y += kernel.h | 254 | unifdef-y += kernel.h |
257 | unifdef-y += keyboard.h | 255 | unifdef-y += keyboard.h |
258 | unifdef-$(CONFIG_HAVE_KVM) += kvm.h | 256 | unifdef-y += kvm.h |
259 | unifdef-y += llc.h | 257 | unifdef-y += llc.h |
260 | unifdef-y += loop.h | 258 | unifdef-y += loop.h |
261 | unifdef-y += lp.h | 259 | unifdef-y += lp.h |
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 69c1edb9fe54..40d54731de7e 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h | |||
@@ -65,6 +65,46 @@ static inline __u32 ror32(__u32 word, unsigned int shift) | |||
65 | return (word >> shift) | (word << (32 - shift)); | 65 | return (word >> shift) | (word << (32 - shift)); |
66 | } | 66 | } |
67 | 67 | ||
68 | /** | ||
69 | * rol16 - rotate a 16-bit value left | ||
70 | * @word: value to rotate | ||
71 | * @shift: bits to roll | ||
72 | */ | ||
73 | static inline __u16 rol16(__u16 word, unsigned int shift) | ||
74 | { | ||
75 | return (word << shift) | (word >> (16 - shift)); | ||
76 | } | ||
77 | |||
78 | /** | ||
79 | * ror16 - rotate a 16-bit value right | ||
80 | * @word: value to rotate | ||
81 | * @shift: bits to roll | ||
82 | */ | ||
83 | static inline __u16 ror16(__u16 word, unsigned int shift) | ||
84 | { | ||
85 | return (word >> shift) | (word << (16 - shift)); | ||
86 | } | ||
87 | |||
88 | /** | ||
89 | * rol8 - rotate an 8-bit value left | ||
90 | * @word: value to rotate | ||
91 | * @shift: bits to roll | ||
92 | */ | ||
93 | static inline __u8 rol8(__u8 word, unsigned int shift) | ||
94 | { | ||
95 | return (word << shift) | (word >> (8 - shift)); | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * ror8 - rotate an 8-bit value right | ||
100 | * @word: value to rotate | ||
101 | * @shift: bits to roll | ||
102 | */ | ||
103 | static inline __u8 ror8(__u8 word, unsigned int shift) | ||
104 | { | ||
105 | return (word >> shift) | (word << (8 - shift)); | ||
106 | } | ||
107 | |||
68 | static inline unsigned fls_long(unsigned long l) | 108 | static inline unsigned fls_long(unsigned long l) |
69 | { | 109 | { |
70 | if (sizeof(l) == 4) | 110 | if (sizeof(l) == 4) |
diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 028ba3b523b1..a6a6035a4e1e 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h | |||
@@ -256,6 +256,7 @@ struct cgroup_subsys { | |||
256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); | 256 | void (*bind)(struct cgroup_subsys *ss, struct cgroup *root); |
257 | int subsys_id; | 257 | int subsys_id; |
258 | int active; | 258 | int active; |
259 | int disabled; | ||
259 | int early_init; | 260 | int early_init; |
260 | #define MAX_CGROUP_TYPE_NAMELEN 32 | 261 | #define MAX_CGROUP_TYPE_NAMELEN 32 |
261 | const char *name; | 262 | const char *name; |
diff --git a/include/linux/compat.h b/include/linux/compat.h index a671dbff7a1f..8fa7857e153b 100644 --- a/include/linux/compat.h +++ b/include/linux/compat.h | |||
@@ -192,8 +192,8 @@ asmlinkage long compat_sys_select(int n, compat_ulong_t __user *inp, | |||
192 | struct compat_timeval __user *tvp); | 192 | struct compat_timeval __user *tvp); |
193 | 193 | ||
194 | asmlinkage long compat_sys_wait4(compat_pid_t pid, | 194 | asmlinkage long compat_sys_wait4(compat_pid_t pid, |
195 | compat_uint_t *stat_addr, int options, | 195 | compat_uint_t __user *stat_addr, int options, |
196 | struct compat_rusage *ru); | 196 | struct compat_rusage __user *ru); |
197 | 197 | ||
198 | #define BITS_PER_COMPAT_LONG (8*sizeof(compat_long_t)) | 198 | #define BITS_PER_COMPAT_LONG (8*sizeof(compat_long_t)) |
199 | 199 | ||
diff --git a/include/linux/cpuidle.h b/include/linux/cpuidle.h index 6b72a4584086..51e6b1e520e6 100644 --- a/include/linux/cpuidle.h +++ b/include/linux/cpuidle.h | |||
@@ -38,8 +38,8 @@ struct cpuidle_state { | |||
38 | unsigned int power_usage; /* in mW */ | 38 | unsigned int power_usage; /* in mW */ |
39 | unsigned int target_residency; /* in US */ | 39 | unsigned int target_residency; /* in US */ |
40 | 40 | ||
41 | unsigned int usage; | 41 | unsigned long long usage; |
42 | unsigned int time; /* in US */ | 42 | unsigned long long time; /* in US */ |
43 | 43 | ||
44 | int (*enter) (struct cpuidle_device *dev, | 44 | int (*enter) (struct cpuidle_device *dev, |
45 | struct cpuidle_state *state); | 45 | struct cpuidle_state *state); |
diff --git a/include/linux/dmaengine.h b/include/linux/dmaengine.h index 261e43a4c873..34d440698293 100644 --- a/include/linux/dmaengine.h +++ b/include/linux/dmaengine.h | |||
@@ -423,7 +423,7 @@ void dma_async_device_unregister(struct dma_device *device); | |||
423 | /* --- Helper iov-locking functions --- */ | 423 | /* --- Helper iov-locking functions --- */ |
424 | 424 | ||
425 | struct dma_page_list { | 425 | struct dma_page_list { |
426 | char *base_address; | 426 | char __user *base_address; |
427 | int nr_pages; | 427 | int nr_pages; |
428 | struct page **pages; | 428 | struct page **pages; |
429 | }; | 429 | }; |
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index 49829988bfa0..897f723bd222 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
@@ -72,6 +72,13 @@ | |||
72 | #define in_softirq() (softirq_count()) | 72 | #define in_softirq() (softirq_count()) |
73 | #define in_interrupt() (irq_count()) | 73 | #define in_interrupt() (irq_count()) |
74 | 74 | ||
75 | /* | ||
76 | * Are we running in atomic context? WARNING: this macro cannot | ||
77 | * always detect atomic context; in particular, it cannot know about | ||
78 | * held spinlocks in non-preemptible kernels. Thus it should not be | ||
79 | * used in the general case to determine whether sleeping is possible. | ||
80 | * Do not use in_atomic() in driver code. | ||
81 | */ | ||
75 | #define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != 0) | 82 | #define in_atomic() ((preempt_count() & ~PREEMPT_ACTIVE) != 0) |
76 | 83 | ||
77 | #ifdef CONFIG_PREEMPT | 84 | #ifdef CONFIG_PREEMPT |
diff --git a/include/linux/hpet.h b/include/linux/hpet.h index 9cd94bfd07e5..2dc29ce6c8e4 100644 --- a/include/linux/hpet.h +++ b/include/linux/hpet.h | |||
@@ -64,7 +64,7 @@ struct hpet { | |||
64 | */ | 64 | */ |
65 | 65 | ||
66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) | 66 | #define Tn_INT_ROUTE_CAP_MASK (0xffffffff00000000ULL) |
67 | #define Tn_INT_ROUTE_CAP_SHIFT (32UL) | 67 | #define Tn_INI_ROUTE_CAP_SHIFT (32UL) |
68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) | 68 | #define Tn_FSB_INT_DELCAP_MASK (0x8000UL) |
69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) | 69 | #define Tn_FSB_INT_DELCAP_SHIFT (15) |
70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) | 70 | #define Tn_FSB_EN_CNF_MASK (0x4000UL) |
diff --git a/include/linux/ide.h b/include/linux/ide.h index a3b69c10d667..bc26b2f27359 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <asm/semaphore.h> | 26 | #include <asm/semaphore.h> |
27 | #include <asm/mutex.h> | 27 | #include <asm/mutex.h> |
28 | 28 | ||
29 | #if defined(CRIS) || defined(FRV) | 29 | #if defined(CONFIG_CRIS) || defined(CONFIG_FRV) |
30 | # define SUPPORT_VLB_SYNC 0 | 30 | # define SUPPORT_VLB_SYNC 0 |
31 | #else | 31 | #else |
32 | # define SUPPORT_VLB_SYNC 1 | 32 | # define SUPPORT_VLB_SYNC 1 |
diff --git a/include/linux/input.h b/include/linux/input.h index 1bdc39a8c76c..cae2c35d1206 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
@@ -1227,12 +1227,13 @@ void input_free_device(struct input_dev *dev); | |||
1227 | 1227 | ||
1228 | static inline struct input_dev *input_get_device(struct input_dev *dev) | 1228 | static inline struct input_dev *input_get_device(struct input_dev *dev) |
1229 | { | 1229 | { |
1230 | return to_input_dev(get_device(&dev->dev)); | 1230 | return dev ? to_input_dev(get_device(&dev->dev)) : NULL; |
1231 | } | 1231 | } |
1232 | 1232 | ||
1233 | static inline void input_put_device(struct input_dev *dev) | 1233 | static inline void input_put_device(struct input_dev *dev) |
1234 | { | 1234 | { |
1235 | put_device(&dev->dev); | 1235 | if (dev) |
1236 | put_device(&dev->dev); | ||
1236 | } | 1237 | } |
1237 | 1238 | ||
1238 | static inline void *input_get_drvdata(struct input_dev *dev) | 1239 | static inline void *input_get_drvdata(struct input_dev *dev) |
diff --git a/include/linux/iocontext.h b/include/linux/iocontext.h index 1b4ccf25b4d2..cac4b364cd40 100644 --- a/include/linux/iocontext.h +++ b/include/linux/iocontext.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define IOCONTEXT_H | 2 | #define IOCONTEXT_H |
3 | 3 | ||
4 | #include <linux/radix-tree.h> | 4 | #include <linux/radix-tree.h> |
5 | #include <linux/rcupdate.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * This is the per-process anticipatory I/O scheduler state. | 8 | * This is the per-process anticipatory I/O scheduler state. |
@@ -54,6 +55,8 @@ struct cfq_io_context { | |||
54 | 55 | ||
55 | void (*dtor)(struct io_context *); /* destructor */ | 56 | void (*dtor)(struct io_context *); /* destructor */ |
56 | void (*exit)(struct io_context *); /* called on task exit */ | 57 | void (*exit)(struct io_context *); /* called on task exit */ |
58 | |||
59 | struct rcu_head rcu_head; | ||
57 | }; | 60 | }; |
58 | 61 | ||
59 | /* | 62 | /* |
diff --git a/include/linux/lguest_launcher.h b/include/linux/lguest_launcher.h index 589be3e1f3ac..e7217dc58f39 100644 --- a/include/linux/lguest_launcher.h +++ b/include/linux/lguest_launcher.h | |||
@@ -16,6 +16,10 @@ | |||
16 | * a new device, we simply need to write a new virtio driver and create support | 16 | * a new device, we simply need to write a new virtio driver and create support |
17 | * for it in the Launcher: this code won't need to change. | 17 | * for it in the Launcher: this code won't need to change. |
18 | * | 18 | * |
19 | * Virtio devices are also used by kvm, so we can simply reuse their optimized | ||
20 | * device drivers. And one day when everyone uses virtio, my plan will be | ||
21 | * complete. Bwahahahah! | ||
22 | * | ||
19 | * Devices are described by a simplified ID, a status byte, and some "config" | 23 | * Devices are described by a simplified ID, a status byte, and some "config" |
20 | * bytes which describe this device's configuration. This is placed by the | 24 | * bytes which describe this device's configuration. This is placed by the |
21 | * Launcher just above the top of physical memory: | 25 | * Launcher just above the top of physical memory: |
@@ -26,7 +30,7 @@ struct lguest_device_desc { | |||
26 | /* The number of virtqueues (first in config array) */ | 30 | /* The number of virtqueues (first in config array) */ |
27 | __u8 num_vq; | 31 | __u8 num_vq; |
28 | /* The number of bytes of feature bits. Multiply by 2: one for host | 32 | /* The number of bytes of feature bits. Multiply by 2: one for host |
29 | * features and one for guest acknowledgements. */ | 33 | * features and one for Guest acknowledgements. */ |
30 | __u8 feature_len; | 34 | __u8 feature_len; |
31 | /* The number of bytes of the config array after virtqueues. */ | 35 | /* The number of bytes of the config array after virtqueues. */ |
32 | __u8 config_len; | 36 | __u8 config_len; |
diff --git a/include/linux/libata.h b/include/linux/libata.h index 269cdba09578..37ee881c42ac 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -295,6 +295,7 @@ enum { | |||
295 | ATA_EH_SOFTRESET = (1 << 1), | 295 | ATA_EH_SOFTRESET = (1 << 1), |
296 | ATA_EH_HARDRESET = (1 << 2), | 296 | ATA_EH_HARDRESET = (1 << 2), |
297 | ATA_EH_ENABLE_LINK = (1 << 3), | 297 | ATA_EH_ENABLE_LINK = (1 << 3), |
298 | ATA_EH_LPM = (1 << 4), /* link power management action */ | ||
298 | 299 | ||
299 | ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, | 300 | ATA_EH_RESET_MASK = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, |
300 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE, | 301 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE, |
@@ -304,7 +305,6 @@ enum { | |||
304 | ATA_EHI_RESUME_LINK = (1 << 1), /* resume link (reset modifier) */ | 305 | ATA_EHI_RESUME_LINK = (1 << 1), /* resume link (reset modifier) */ |
305 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ | 306 | ATA_EHI_NO_AUTOPSY = (1 << 2), /* no autopsy */ |
306 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ | 307 | ATA_EHI_QUIET = (1 << 3), /* be quiet */ |
307 | ATA_EHI_LPM = (1 << 4), /* link power management action */ | ||
308 | 308 | ||
309 | ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */ | 309 | ATA_EHI_DID_SOFTRESET = (1 << 16), /* already soft-reset this port */ |
310 | ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */ | 310 | ATA_EHI_DID_HARDRESET = (1 << 17), /* already soft-reset this port */ |
@@ -350,7 +350,8 @@ enum { | |||
350 | ATAPI_READ = 0, /* READs */ | 350 | ATAPI_READ = 0, /* READs */ |
351 | ATAPI_WRITE = 1, /* WRITEs */ | 351 | ATAPI_WRITE = 1, /* WRITEs */ |
352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ | 352 | ATAPI_READ_CD = 2, /* READ CD [MSF] */ |
353 | ATAPI_MISC = 3, /* the rest */ | 353 | ATAPI_PASS_THRU = 3, /* SAT pass-thru */ |
354 | ATAPI_MISC = 4, /* the rest */ | ||
354 | }; | 355 | }; |
355 | 356 | ||
356 | enum ata_xfer_mask { | 357 | enum ata_xfer_mask { |
@@ -849,6 +850,7 @@ extern unsigned int ata_dev_try_classify(struct ata_device *dev, int present, | |||
849 | */ | 850 | */ |
850 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); | 851 | extern void ata_tf_load(struct ata_port *ap, const struct ata_taskfile *tf); |
851 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); | 852 | extern void ata_tf_read(struct ata_port *ap, struct ata_taskfile *tf); |
853 | extern int atapi_cmd_type(u8 opcode); | ||
852 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, | 854 | extern void ata_tf_to_fis(const struct ata_taskfile *tf, |
853 | u8 pmp, int is_cmd, u8 *fis); | 855 | u8 pmp, int is_cmd, u8 *fis); |
854 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); | 856 | extern void ata_tf_from_fis(const u8 *fis, struct ata_taskfile *tf); |
@@ -1379,27 +1381,6 @@ static inline int ata_try_flush_cache(const struct ata_device *dev) | |||
1379 | ata_id_has_flush_ext(dev->id); | 1381 | ata_id_has_flush_ext(dev->id); |
1380 | } | 1382 | } |
1381 | 1383 | ||
1382 | static inline int atapi_cmd_type(u8 opcode) | ||
1383 | { | ||
1384 | switch (opcode) { | ||
1385 | case GPCMD_READ_10: | ||
1386 | case GPCMD_READ_12: | ||
1387 | return ATAPI_READ; | ||
1388 | |||
1389 | case GPCMD_WRITE_10: | ||
1390 | case GPCMD_WRITE_12: | ||
1391 | case GPCMD_WRITE_AND_VERIFY_10: | ||
1392 | return ATAPI_WRITE; | ||
1393 | |||
1394 | case GPCMD_READ_CD: | ||
1395 | case GPCMD_READ_CD_MSF: | ||
1396 | return ATAPI_READ_CD; | ||
1397 | |||
1398 | default: | ||
1399 | return ATAPI_MISC; | ||
1400 | } | ||
1401 | } | ||
1402 | |||
1403 | static inline unsigned int ac_err_mask(u8 status) | 1384 | static inline unsigned int ac_err_mask(u8 status) |
1404 | { | 1385 | { |
1405 | if (status & (ATA_BUSY | ATA_DRQ)) | 1386 | if (status & (ATA_BUSY | ATA_DRQ)) |
diff --git a/include/linux/linkage.h b/include/linux/linkage.h index 0592936344c4..2119610b24f8 100644 --- a/include/linux/linkage.h +++ b/include/linux/linkage.h | |||
@@ -17,8 +17,24 @@ | |||
17 | # define asmregparm | 17 | # define asmregparm |
18 | #endif | 18 | #endif |
19 | 19 | ||
20 | #ifndef prevent_tail_call | 20 | /* |
21 | # define prevent_tail_call(ret) do { } while (0) | 21 | * This is used by architectures to keep arguments on the stack |
22 | * untouched by the compiler by keeping them live until the end. | ||
23 | * The argument stack may be owned by the assembly-language | ||
24 | * caller, not the callee, and gcc doesn't always understand | ||
25 | * that. | ||
26 | * | ||
27 | * We have the return value, and a maximum of six arguments. | ||
28 | * | ||
29 | * This should always be followed by a "return ret" for the | ||
30 | * protection to work (ie no more work that the compiler might | ||
31 | * end up needing stack temporaries for). | ||
32 | */ | ||
33 | /* Assembly files may be compiled with -traditional .. */ | ||
34 | #ifndef __ASSEMBLY__ | ||
35 | #ifndef asmlinkage_protect | ||
36 | # define asmlinkage_protect(n, ret, args...) do { } while (0) | ||
37 | #endif | ||
22 | #endif | 38 | #endif |
23 | 39 | ||
24 | #ifndef __ALIGN | 40 | #ifndef __ALIGN |
diff --git a/include/linux/mount.h b/include/linux/mount.h index 6d3047d8c91c..5ee2df217cdf 100644 --- a/include/linux/mount.h +++ b/include/linux/mount.h | |||
@@ -61,6 +61,7 @@ struct vfsmount { | |||
61 | atomic_t mnt_count; | 61 | atomic_t mnt_count; |
62 | int mnt_expiry_mark; /* true if marked for expiry */ | 62 | int mnt_expiry_mark; /* true if marked for expiry */ |
63 | int mnt_pinned; | 63 | int mnt_pinned; |
64 | int mnt_ghosts; | ||
64 | }; | 65 | }; |
65 | 66 | ||
66 | static inline struct vfsmount *mntget(struct vfsmount *mnt) | 67 | static inline struct vfsmount *mntget(struct vfsmount *mnt) |
@@ -98,7 +99,6 @@ extern int do_add_mount(struct vfsmount *newmnt, struct nameidata *nd, | |||
98 | int mnt_flags, struct list_head *fslist); | 99 | int mnt_flags, struct list_head *fslist); |
99 | 100 | ||
100 | extern void mark_mounts_for_expiry(struct list_head *mounts); | 101 | extern void mark_mounts_for_expiry(struct list_head *mounts); |
101 | extern void shrink_submounts(struct vfsmount *mountpoint, struct list_head *mounts); | ||
102 | 102 | ||
103 | extern spinlock_t vfsmount_lock; | 103 | extern spinlock_t vfsmount_lock; |
104 | extern dev_t name_to_dev_t(char *name); | 104 | extern dev_t name_to_dev_t(char *name); |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index a2f003239c85..ee81906b5164 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -383,9 +383,11 @@ static inline void __napi_complete(struct napi_struct *n) | |||
383 | 383 | ||
384 | static inline void napi_complete(struct napi_struct *n) | 384 | static inline void napi_complete(struct napi_struct *n) |
385 | { | 385 | { |
386 | local_irq_disable(); | 386 | unsigned long flags; |
387 | |||
388 | local_irq_save(flags); | ||
387 | __napi_complete(n); | 389 | __napi_complete(n); |
388 | local_irq_enable(); | 390 | local_irq_restore(flags); |
389 | } | 391 | } |
390 | 392 | ||
391 | /** | 393 | /** |
@@ -1072,12 +1074,14 @@ static inline int netif_is_multiqueue(const struct net_device *dev) | |||
1072 | } | 1074 | } |
1073 | 1075 | ||
1074 | /* Use this variant when it is known for sure that it | 1076 | /* Use this variant when it is known for sure that it |
1075 | * is executing from interrupt context. | 1077 | * is executing from hardware interrupt context or with hardware interrupts |
1078 | * disabled. | ||
1076 | */ | 1079 | */ |
1077 | extern void dev_kfree_skb_irq(struct sk_buff *skb); | 1080 | extern void dev_kfree_skb_irq(struct sk_buff *skb); |
1078 | 1081 | ||
1079 | /* Use this variant in places where it could be invoked | 1082 | /* Use this variant in places where it could be invoked |
1080 | * either from interrupt or non-interrupt context. | 1083 | * from either hardware interrupt or other context, with hardware interrupts |
1084 | * either disabled or enabled. | ||
1081 | */ | 1085 | */ |
1082 | extern void dev_kfree_skb_any(struct sk_buff *skb); | 1086 | extern void dev_kfree_skb_any(struct sk_buff *skb); |
1083 | 1087 | ||
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index 29dd55838e84..b2f05c230f4b 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
@@ -175,7 +175,7 @@ static inline void pnp_set_card_drvdata(struct pnp_card_link *pcard, void *data) | |||
175 | struct pnp_dev { | 175 | struct pnp_dev { |
176 | struct device dev; /* Driver Model device interface */ | 176 | struct device dev; /* Driver Model device interface */ |
177 | u64 dma_mask; | 177 | u64 dma_mask; |
178 | unsigned char number; /* used as an index, must be unique */ | 178 | unsigned int number; /* used as an index, must be unique */ |
179 | int status; | 179 | int status; |
180 | 180 | ||
181 | struct list_head global_list; /* node in global list of devices */ | 181 | struct list_head global_list; /* node in global list of devices */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index fed07d03364e..6a1e7afb099b 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -1541,6 +1541,12 @@ static inline void idle_task_exit(void) {} | |||
1541 | 1541 | ||
1542 | extern void sched_idle_next(void); | 1542 | extern void sched_idle_next(void); |
1543 | 1543 | ||
1544 | #if defined(CONFIG_NO_HZ) && defined(CONFIG_SMP) | ||
1545 | extern void wake_up_idle_cpu(int cpu); | ||
1546 | #else | ||
1547 | static inline void wake_up_idle_cpu(int cpu) { } | ||
1548 | #endif | ||
1549 | |||
1544 | #ifdef CONFIG_SCHED_DEBUG | 1550 | #ifdef CONFIG_SCHED_DEBUG |
1545 | extern unsigned int sysctl_sched_latency; | 1551 | extern unsigned int sysctl_sched_latency; |
1546 | extern unsigned int sysctl_sched_min_granularity; | 1552 | extern unsigned int sysctl_sched_min_granularity; |
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 576a5f77d3bd..1129ee0a7180 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
@@ -341,6 +341,9 @@ static inline void double_spin_unlock(spinlock_t *l1, spinlock_t *l2, | |||
341 | * atomic_dec_and_lock - lock on reaching reference count zero | 341 | * atomic_dec_and_lock - lock on reaching reference count zero |
342 | * @atomic: the atomic counter | 342 | * @atomic: the atomic counter |
343 | * @lock: the spinlock in question | 343 | * @lock: the spinlock in question |
344 | * | ||
345 | * Decrements @atomic by 1. If the result is 0, returns true and locks | ||
346 | * @lock. Returns false for all other cases. | ||
344 | */ | 347 | */ |
345 | extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); | 348 | extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); |
346 | #define atomic_dec_and_lock(atomic, lock) \ | 349 | #define atomic_dec_and_lock(atomic, lock) \ |
diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 12c18ac1b973..e7d10845b3c1 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h | |||
@@ -41,6 +41,8 @@ struct virtqueue | |||
41 | * Returns NULL or the "data" token handed to add_buf. | 41 | * Returns NULL or the "data" token handed to add_buf. |
42 | * @disable_cb: disable callbacks | 42 | * @disable_cb: disable callbacks |
43 | * vq: the struct virtqueue we're talking about. | 43 | * vq: the struct virtqueue we're talking about. |
44 | * Note that this is not necessarily synchronous, hence unreliable and only | ||
45 | * useful as an optimization. | ||
44 | * @enable_cb: restart callbacks after disable_cb. | 46 | * @enable_cb: restart callbacks after disable_cb. |
45 | * vq: the struct virtqueue we're talking about. | 47 | * vq: the struct virtqueue we're talking about. |
46 | * This re-enables callbacks; it returns "false" if there are pending | 48 | * This re-enables callbacks; it returns "false" if there are pending |
@@ -48,7 +50,8 @@ struct virtqueue | |||
48 | * checking for more work, and enabling callbacks. | 50 | * checking for more work, and enabling callbacks. |
49 | * | 51 | * |
50 | * Locking rules are straightforward: the driver is responsible for | 52 | * Locking rules are straightforward: the driver is responsible for |
51 | * locking. No two operations may be invoked simultaneously. | 53 | * locking. No two operations may be invoked simultaneously, with the exception |
54 | * of @disable_cb. | ||
52 | * | 55 | * |
53 | * All operations can be called in any context. | 56 | * All operations can be called in any context. |
54 | */ | 57 | */ |
diff --git a/include/net/llc.h b/include/net/llc.h index f5024583fc8b..7940da1606e7 100644 --- a/include/net/llc.h +++ b/include/net/llc.h | |||
@@ -65,7 +65,6 @@ struct llc_sap { | |||
65 | 65 | ||
66 | extern struct list_head llc_sap_list; | 66 | extern struct list_head llc_sap_list; |
67 | extern rwlock_t llc_sap_list_lock; | 67 | extern rwlock_t llc_sap_list_lock; |
68 | extern unsigned char llc_station_mac_sa[ETH_ALEN]; | ||
69 | 68 | ||
70 | extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, | 69 | extern int llc_rcv(struct sk_buff *skb, struct net_device *dev, |
71 | struct packet_type *pt, struct net_device *orig_dev); | 70 | struct packet_type *pt, struct net_device *orig_dev); |
diff --git a/include/net/llc_pdu.h b/include/net/llc_pdu.h index 4a8f58b17e43..75b8e2968c9b 100644 --- a/include/net/llc_pdu.h +++ b/include/net/llc_pdu.h | |||
@@ -381,7 +381,7 @@ static inline void llc_pdu_init_as_xid_cmd(struct sk_buff *skb, | |||
381 | xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ | 381 | xid_info->fmt_id = LLC_XID_FMT_ID; /* 0x81 */ |
382 | xid_info->type = svcs_supported; | 382 | xid_info->type = svcs_supported; |
383 | xid_info->rw = rx_window << 1; /* size of receive window */ | 383 | xid_info->rw = rx_window << 1; /* size of receive window */ |
384 | skb_put(skb, 3); | 384 | skb_put(skb, sizeof(struct llc_xid_info)); |
385 | } | 385 | } |
386 | 386 | ||
387 | /** | 387 | /** |
@@ -406,7 +406,7 @@ static inline void llc_pdu_init_as_xid_rsp(struct sk_buff *skb, | |||
406 | xid_info->fmt_id = LLC_XID_FMT_ID; | 406 | xid_info->fmt_id = LLC_XID_FMT_ID; |
407 | xid_info->type = svcs_supported; | 407 | xid_info->type = svcs_supported; |
408 | xid_info->rw = rx_window << 1; | 408 | xid_info->rw = rx_window << 1; |
409 | skb_put(skb, 3); | 409 | skb_put(skb, sizeof(struct llc_xid_info)); |
410 | } | 410 | } |
411 | 411 | ||
412 | /* LLC Type 2 FRMR response information field format */ | 412 | /* LLC Type 2 FRMR response information field format */ |
diff --git a/include/net/llc_sap.h b/include/net/llc_sap.h index 2c56dbece729..ed25bec2f648 100644 --- a/include/net/llc_sap.h +++ b/include/net/llc_sap.h | |||
@@ -1,5 +1,8 @@ | |||
1 | #ifndef LLC_SAP_H | 1 | #ifndef LLC_SAP_H |
2 | #define LLC_SAP_H | 2 | #define LLC_SAP_H |
3 | |||
4 | #include <asm/types.h> | ||
5 | |||
3 | /* | 6 | /* |
4 | * Copyright (c) 1997 by Procom Technology,Inc. | 7 | * Copyright (c) 1997 by Procom Technology,Inc. |
5 | * 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> | 8 | * 2001-2003 by Arnaldo Carvalho de Melo <acme@conectiva.com.br> |
@@ -19,8 +22,8 @@ struct sock; | |||
19 | extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb); | 22 | extern void llc_sap_rtn_pdu(struct llc_sap *sap, struct sk_buff *skb); |
20 | extern void llc_save_primitive(struct sock *sk, struct sk_buff* skb, | 23 | extern void llc_save_primitive(struct sock *sk, struct sk_buff* skb, |
21 | unsigned char prim); | 24 | unsigned char prim); |
22 | extern struct sk_buff *llc_alloc_frame(struct sock *sk, | 25 | extern struct sk_buff *llc_alloc_frame(struct sock *sk, struct net_device *dev, |
23 | struct net_device *dev); | 26 | u8 type, u32 data_size); |
24 | 27 | ||
25 | extern void llc_build_and_send_test_pkt(struct llc_sap *sap, | 28 | extern void llc_build_and_send_test_pkt(struct llc_sap *sap, |
26 | struct sk_buff *skb, | 29 | struct sk_buff *skb, |
diff --git a/include/net/neighbour.h b/include/net/neighbour.h index ebbfb509822e..64a5f0120b52 100644 --- a/include/net/neighbour.h +++ b/include/net/neighbour.h | |||
@@ -218,6 +218,10 @@ extern unsigned long neigh_rand_reach_time(unsigned long base); | |||
218 | extern void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p, | 218 | extern void pneigh_enqueue(struct neigh_table *tbl, struct neigh_parms *p, |
219 | struct sk_buff *skb); | 219 | struct sk_buff *skb); |
220 | extern struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat); | 220 | extern struct pneigh_entry *pneigh_lookup(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev, int creat); |
221 | extern struct pneigh_entry *__pneigh_lookup(struct neigh_table *tbl, | ||
222 | struct net *net, | ||
223 | const void *key, | ||
224 | struct net_device *dev); | ||
221 | extern int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); | 225 | extern int pneigh_delete(struct neigh_table *tbl, struct net *net, const void *key, struct net_device *dev); |
222 | 226 | ||
223 | extern void neigh_app_ns(struct neighbour *n); | 227 | extern void neigh_app_ns(struct neighbour *n); |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 7de4ea3a04d9..4fd3eb2f8ec2 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
@@ -752,6 +752,8 @@ static inline unsigned int tcp_packets_in_flight(const struct tcp_sock *tp) | |||
752 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; | 752 | return tp->packets_out - tcp_left_out(tp) + tp->retrans_out; |
753 | } | 753 | } |
754 | 754 | ||
755 | extern int tcp_limit_reno_sacked(struct tcp_sock *tp); | ||
756 | |||
755 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. | 757 | /* If cwnd > ssthresh, we may raise ssthresh to be half-way to cwnd. |
756 | * The exception is rate halving phase, when cwnd is decreasing towards | 758 | * The exception is rate halving phase, when cwnd is decreasing towards |
757 | * ssthresh. | 759 | * ssthresh. |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 619c53bc3cd2..0d255ae008b6 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
@@ -204,6 +204,7 @@ struct xfrm_state | |||
204 | * transformer. */ | 204 | * transformer. */ |
205 | const struct xfrm_type *type; | 205 | const struct xfrm_type *type; |
206 | struct xfrm_mode *inner_mode; | 206 | struct xfrm_mode *inner_mode; |
207 | struct xfrm_mode *inner_mode_iaf; | ||
207 | struct xfrm_mode *outer_mode; | 208 | struct xfrm_mode *outer_mode; |
208 | 209 | ||
209 | /* Security context */ | 210 | /* Security context */ |
@@ -387,6 +388,27 @@ enum { | |||
387 | extern int xfrm_register_mode(struct xfrm_mode *mode, int family); | 388 | extern int xfrm_register_mode(struct xfrm_mode *mode, int family); |
388 | extern int xfrm_unregister_mode(struct xfrm_mode *mode, int family); | 389 | extern int xfrm_unregister_mode(struct xfrm_mode *mode, int family); |
389 | 390 | ||
391 | static inline int xfrm_af2proto(unsigned int family) | ||
392 | { | ||
393 | switch(family) { | ||
394 | case AF_INET: | ||
395 | return IPPROTO_IPIP; | ||
396 | case AF_INET6: | ||
397 | return IPPROTO_IPV6; | ||
398 | default: | ||
399 | return 0; | ||
400 | } | ||
401 | } | ||
402 | |||
403 | static inline struct xfrm_mode *xfrm_ip2inner_mode(struct xfrm_state *x, int ipproto) | ||
404 | { | ||
405 | if ((ipproto == IPPROTO_IPIP && x->props.family == AF_INET) || | ||
406 | (ipproto == IPPROTO_IPV6 && x->props.family == AF_INET6)) | ||
407 | return x->inner_mode; | ||
408 | else | ||
409 | return x->inner_mode_iaf; | ||
410 | } | ||
411 | |||
390 | struct xfrm_tmpl | 412 | struct xfrm_tmpl |
391 | { | 413 | { |
392 | /* id in template is interpreted as: | 414 | /* id in template is interpreted as: |
@@ -530,6 +552,9 @@ struct xfrm_mode_skb_cb { | |||
530 | __be16 id; | 552 | __be16 id; |
531 | __be16 frag_off; | 553 | __be16 frag_off; |
532 | 554 | ||
555 | /* IP header length (excluding options or extension headers). */ | ||
556 | u8 ihl; | ||
557 | |||
533 | /* TOS for IPv4, class for IPv6. */ | 558 | /* TOS for IPv4, class for IPv6. */ |
534 | u8 tos; | 559 | u8 tos; |
535 | 560 | ||
@@ -539,6 +564,9 @@ struct xfrm_mode_skb_cb { | |||
539 | /* Protocol for IPv4, NH for IPv6. */ | 564 | /* Protocol for IPv4, NH for IPv6. */ |
540 | u8 protocol; | 565 | u8 protocol; |
541 | 566 | ||
567 | /* Option length for IPv4, zero for IPv6. */ | ||
568 | u8 optlen; | ||
569 | |||
542 | /* Used by IPv6 only, zero for IPv4. */ | 570 | /* Used by IPv6 only, zero for IPv4. */ |
543 | u8 flow_lbl[3]; | 571 | u8 flow_lbl[3]; |
544 | }; | 572 | }; |
@@ -1253,6 +1281,7 @@ extern int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, | |||
1253 | extern int xfrm_input_resume(struct sk_buff *skb, int nexthdr); | 1281 | extern int xfrm_input_resume(struct sk_buff *skb, int nexthdr); |
1254 | extern int xfrm_output_resume(struct sk_buff *skb, int err); | 1282 | extern int xfrm_output_resume(struct sk_buff *skb, int err); |
1255 | extern int xfrm_output(struct sk_buff *skb); | 1283 | extern int xfrm_output(struct sk_buff *skb); |
1284 | extern int xfrm_inner_extract_output(struct xfrm_state *x, struct sk_buff *skb); | ||
1256 | extern int xfrm4_extract_header(struct sk_buff *skb); | 1285 | extern int xfrm4_extract_header(struct sk_buff *skb); |
1257 | extern int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb); | 1286 | extern int xfrm4_extract_input(struct xfrm_state *x, struct sk_buff *skb); |
1258 | extern int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi, | 1287 | extern int xfrm4_rcv_encap(struct sk_buff *skb, int nexthdr, __be32 spi, |