diff options
| author | Andy Grover <agrover@groveronline.com> | 2003-02-04 19:22:39 -0800 |
|---|---|---|
| committer | Andy Grover <agrover@groveronline.com> | 2003-02-04 19:22:39 -0800 |
| commit | 263cc27fa141984aed0e6de7474fc813449d02a3 (patch) | |
| tree | b22302cd0039b993cfba9adf39e33280912a8d9f /include | |
| parent | a9b3ee51be65cde06e65cb2915adb89751511623 (diff) | |
| parent | cf5ba9c8989c8451afd1364e46168c180efee124 (diff) | |
Merge groveronline.com:/root/bk/linux-2.5
into groveronline.com:/root/bk/linux-acpi
Diffstat (limited to 'include')
54 files changed, 513 insertions, 195 deletions
diff --git a/include/asm-alpha/core_irongate.h b/include/asm-alpha/core_irongate.h index 4a4e6fa4c0e8..9b9a49feb51b 100644 --- a/include/asm-alpha/core_irongate.h +++ b/include/asm-alpha/core_irongate.h @@ -50,13 +50,14 @@ typedef struct { igcsr32 bacsr10; /* 0x40 - base address chip selects */ igcsr32 bacsr32; /* 0x44 - base address chip selects */ - igcsr32 bacsr54; /* 0x48 - base address chip selects */ + igcsr32 bacsr54_eccms761; /* 0x48 - 751: base addr. chip selects + 761: ECC, mode/status */ igcsr32 rsrvd2[1]; /* 0x4C-0x4F reserved */ igcsr32 drammap; /* 0x50 - address mapping control */ igcsr32 dramtm; /* 0x54 - timing, driver strength */ - igcsr32 dramms; /* 0x58 - ECC, mode/status */ + igcsr32 dramms; /* 0x58 - DRAM mode/status */ igcsr32 rsrvd3[1]; /* 0x5C-0x5F reserved */ @@ -73,7 +74,10 @@ typedef struct { igcsr32 pciarb; /* 0x84 - PCI arbitration control */ igcsr32 pcicfg; /* 0x88 - PCI config status */ - igcsr32 rsrvd6[5]; /* 0x8C-0x9F reserved */ + igcsr32 rsrvd6[4]; /* 0x8C-0x9B reserved */ + + igcsr32 pci_mem; /* 0x9C - PCI top of memory, + 761 only */ /* AGP (bus 1) control registers */ igcsr32 agpcap; /* 0xA0 - AGP Capability Identifier */ @@ -102,6 +106,7 @@ typedef struct { } Irongate1; +extern igcsr32 *IronECC; /* * Memory spaces: diff --git a/include/asm-alpha/elf.h b/include/asm-alpha/elf.h index 9513f35aa8a1..033597e3e0ab 100644 --- a/include/asm-alpha/elf.h +++ b/include/asm-alpha/elf.h @@ -52,53 +52,25 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; #define ELF_PLAT_INIT(_r) _r->r0 = 0 -/* Use the same format as the OSF/1 procfs interface. The register - layout is sane. However, since dump_thread() creates the funky - layout that ECOFF coredumps want, we need to undo that layout here. - Eventually, it would be nice if the ECOFF core-dump had to do the - translation, then ELF_CORE_COPY_REGS() would become trivial and - faster. */ - -#define ELF_CORE_COPY_REGS(_dest,_regs) \ -{ \ - extern void dump_thread(struct pt_regs *, struct user *); \ - struct user _dump; \ - \ - dump_thread(_regs, &_dump); \ - _dest[ 0] = _dump.regs[EF_V0]; \ - _dest[ 1] = _dump.regs[EF_T0]; \ - _dest[ 2] = _dump.regs[EF_T1]; \ - _dest[ 3] = _dump.regs[EF_T2]; \ - _dest[ 4] = _dump.regs[EF_T3]; \ - _dest[ 5] = _dump.regs[EF_T4]; \ - _dest[ 6] = _dump.regs[EF_T5]; \ - _dest[ 7] = _dump.regs[EF_T6]; \ - _dest[ 8] = _dump.regs[EF_T7]; \ - _dest[ 9] = _dump.regs[EF_S0]; \ - _dest[10] = _dump.regs[EF_S1]; \ - _dest[11] = _dump.regs[EF_S2]; \ - _dest[12] = _dump.regs[EF_S3]; \ - _dest[13] = _dump.regs[EF_S4]; \ - _dest[14] = _dump.regs[EF_S5]; \ - _dest[15] = _dump.regs[EF_S6]; \ - _dest[16] = _dump.regs[EF_A0]; \ - _dest[17] = _dump.regs[EF_A1]; \ - _dest[18] = _dump.regs[EF_A2]; \ - _dest[19] = _dump.regs[EF_A3]; \ - _dest[20] = _dump.regs[EF_A4]; \ - _dest[21] = _dump.regs[EF_A5]; \ - _dest[22] = _dump.regs[EF_T8]; \ - _dest[23] = _dump.regs[EF_T9]; \ - _dest[24] = _dump.regs[EF_T10]; \ - _dest[25] = _dump.regs[EF_T11]; \ - _dest[26] = _dump.regs[EF_RA]; \ - _dest[27] = _dump.regs[EF_T12]; \ - _dest[28] = _dump.regs[EF_AT]; \ - _dest[29] = _dump.regs[EF_GP]; \ - _dest[30] = _dump.regs[EF_SP]; \ - _dest[31] = _dump.regs[EF_PC]; /* store PC here */ \ - _dest[32] = _dump.regs[EF_PS]; \ -} +/* The registers are layed out in pt_regs for PAL and syscall + convenience. Re-order them for the linear elf_gregset_t. */ + +extern void dump_elf_thread(elf_greg_t *dest, struct pt_regs *pt, + struct thread_info *ti); +#define ELF_CORE_COPY_REGS(DEST, REGS) \ + dump_elf_thread(DEST, REGS, current_thread_info()); + +/* Similar, but for a thread other than current. */ + +extern int dump_elf_task(elf_greg_t *dest, struct task_struct *task); +#define ELF_CORE_COPY_TASK_REGS(TASK, DEST) \ + dump_elf_task(*(DEST), TASK) + +/* Similar, but for the FP registers. */ + +extern int dump_elf_task_fp(elf_fpreg_t *dest, struct task_struct *task); +#define ELF_CORE_COPY_FPREGS(TASK, DEST) \ + dump_elf_task_fp(*(DEST), TASK) /* This yields a mask that user programs can use to figure out what instruction set this CPU supports. This is trivial on Alpha, diff --git a/include/asm-alpha/kmap_types.h b/include/asm-alpha/kmap_types.h index 10061ab1c9ad..e7e1f7c8d148 100644 --- a/include/asm-alpha/kmap_types.h +++ b/include/asm-alpha/kmap_types.h @@ -23,8 +23,8 @@ D(7) KM_PTE0, D(8) KM_PTE1, D(9) KM_IRQ0, D(10) KM_IRQ1, -D(11) KM_CRYPTO_USER, -D(12) KM_CRYPTO_SOFTIRQ, +D(11) KM_SOFTIRQ0, +D(12) KM_SOFTIRQ1, D(13) KM_TYPE_NR }; diff --git a/include/asm-alpha/topology.h b/include/asm-alpha/topology.h index 074daa9353ae..742b68802fd0 100644 --- a/include/asm-alpha/topology.h +++ b/include/asm-alpha/topology.h @@ -6,7 +6,7 @@ #include <asm/machvec.h> #ifdef CONFIG_NUMA -static inline int __cpu_to_node(int cpu) +static inline int cpu_to_node(int cpu) { int node; @@ -23,13 +23,13 @@ static inline int __cpu_to_node(int cpu) return node; } -static inline int __node_to_cpu_mask(int node) +static inline int node_to_cpumask(int node) { unsigned long node_cpu_mask = 0; int cpu; for(cpu = 0; cpu < NR_CPUS; cpu++) { - if (cpu_online(cpu) && (__cpu_to_node(cpu) == node)) + if (cpu_online(cpu) && (cpu_to_node(cpu) == node)) node_cpu_mask |= 1UL << cpu; } @@ -40,8 +40,11 @@ static inline int __node_to_cpu_mask(int node) return node_cpu_mask; } -# define __node_to_memblk(node) (node) -# define __memblk_to_node(memblk) (memblk) +# define node_to_memblk(node) (node) +# define memblk_to_node(memblk) (memblk) + +/* Cross-node load balancing interval. */ +# define NODE_BALANCE_RATE 10 #else /* CONFIG_NUMA */ # include <asm-generic/topology.h> diff --git a/include/asm-generic/topology.h b/include/asm-generic/topology.h index 990654bc86ec..955763b04857 100644 --- a/include/asm-generic/topology.h +++ b/include/asm-generic/topology.h @@ -29,23 +29,23 @@ /* Other architectures wishing to use this simple topology API should fill in the below functions as appropriate in their own <asm/topology.h> file. */ -#ifndef __cpu_to_node -#define __cpu_to_node(cpu) (0) +#ifndef cpu_to_node +#define cpu_to_node(cpu) (0) #endif -#ifndef __memblk_to_node -#define __memblk_to_node(memblk) (0) +#ifndef memblk_to_node +#define memblk_to_node(memblk) (0) #endif -#ifndef __parent_node -#define __parent_node(node) (0) +#ifndef parent_node +#define parent_node(node) (0) #endif -#ifndef __node_to_first_cpu -#define __node_to_first_cpu(node) (0) +#ifndef node_to_cpumask +#define node_to_cpumask(node) (cpu_online_map) #endif -#ifndef __node_to_cpu_mask -#define __node_to_cpu_mask(node) (cpu_online_map) +#ifndef node_to_first_cpu +#define node_to_first_cpu(node) (0) #endif -#ifndef __node_to_memblk -#define __node_to_memblk(node) (0) +#ifndef node_to_memblk +#define node_to_memblk(node) (0) #endif /* Cross-node load balancing interval. */ diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index 7563b5730aaa..0f09f5b73a69 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -20,10 +20,24 @@ } \ \ /* Kernel symbol table: GPL-only symbols */ \ - __gpl_ksymtab : AT(ADDR(__gpl_ksymtab) - LOAD_OFFSET) { \ - __start___gpl_ksymtab = .; \ - *(__gpl_ksymtab) \ - __stop___gpl_ksymtab = .; \ + __ksymtab_gpl : AT(ADDR(__ksymtab_gpl) - LOAD_OFFSET) { \ + __start___ksymtab_gpl = .; \ + *(__ksymtab_gpl) \ + __stop___ksymtab_gpl = .; \ + } \ + \ + /* Kernel symbol table: Normal symbols */ \ + __kcrctab : AT(ADDR(__kcrctab) - LOAD_OFFSET) { \ + __start___kcrctab = .; \ + *(__kcrctab) \ + __stop___kcrctab = .; \ + } \ + \ + /* Kernel symbol table: GPL-only symbols */ \ + __kcrctab_gpl : AT(ADDR(__kcrctab_gpl) - LOAD_OFFSET) { \ + __start___kcrctab_gpl = .; \ + *(__kcrctab_gpl) \ + __stop___kcrctab_gpl = .; \ } \ \ /* Kernel symbol table: strings */ \ diff --git a/include/asm-i386/apicdef.h b/include/asm-i386/apicdef.h index 47aa0c17c49a..485c1d8a8db5 100644 --- a/include/asm-i386/apicdef.h +++ b/include/asm-i386/apicdef.h @@ -115,7 +115,7 @@ #define APIC_BASE (fix_to_virt(FIX_APIC_BASE)) -#ifdef CONFIG_X86_NUMA +#ifdef CONFIG_NUMA #define MAX_IO_APICS 32 #else #define MAX_IO_APICS 8 diff --git a/include/asm-i386/cpu.h b/include/asm-i386/cpu.h index 50b1d4439a44..b2b79ebda49b 100644 --- a/include/asm-i386/cpu.h +++ b/include/asm-i386/cpu.h @@ -17,7 +17,7 @@ static inline int arch_register_cpu(int num){ struct node *parent = NULL; #ifdef CONFIG_NUMA - parent = &node_devices[__cpu_to_node(num)].node; + parent = &node_devices[cpu_to_node(num)].node; #endif /* CONFIG_NUMA */ return register_cpu(&cpu_devices[num].cpu, num, parent); diff --git a/include/asm-i386/kmap_types.h b/include/asm-i386/kmap_types.h index 9ee55b1dea1f..dda910c4f1ba 100644 --- a/include/asm-i386/kmap_types.h +++ b/include/asm-i386/kmap_types.h @@ -22,8 +22,8 @@ D(8) KM_PTE1, D(9) KM_PTE2, D(10) KM_IRQ0, D(11) KM_IRQ1, -D(12) KM_CRYPTO_USER, -D(13) KM_CRYPTO_SOFTIRQ, +D(12) KM_SOFTIRQ0, +D(13) KM_SOFTIRQ1, D(14) KM_TYPE_NR }; diff --git a/include/asm-i386/memblk.h b/include/asm-i386/memblk.h index a3a23052a93a..bd8187e358bb 100644 --- a/include/asm-i386/memblk.h +++ b/include/asm-i386/memblk.h @@ -14,7 +14,7 @@ struct i386_memblk { extern struct i386_memblk memblk_devices[MAX_NR_MEMBLKS]; static inline int arch_register_memblk(int num){ - int p_node = __memblk_to_node(num); + int p_node = memblk_to_node(num); return register_memblk(&memblk_devices[num].memblk, num, &node_devices[p_node].node); diff --git a/include/asm-i386/mmzone.h b/include/asm-i386/mmzone.h index 6d9f3cf88d66..eae3564e686f 100644 --- a/include/asm-i386/mmzone.h +++ b/include/asm-i386/mmzone.h @@ -57,25 +57,47 @@ extern struct pglist_data *node_data[]; #define node_mem_map(nid) (NODE_DATA(nid)->node_mem_map) #define node_start_pfn(nid) (NODE_DATA(nid)->node_start_pfn) -#define node_end_pfn(nid) (NODE_DATA(nid)->node_start_pfn + \ - NODE_DATA(nid)->node_size) +#define node_end_pfn(nid) \ +({ \ + pg_data_t *__pgdat = NODE_DATA(nid); \ + __pgdat->node_start_pfn + __pgdat->node_size; \ +}) -#define local_mapnr(kvaddr) \ - ( (__pa(kvaddr) >> PAGE_SHIFT) - node_start_pfn(kvaddr_to_nid(kvaddr)) ) +#define local_mapnr(kvaddr) \ +({ \ + unsigned long __pfn = __pa(kvaddr) >> PAGE_SHIFT; \ + (__pfn - node_start_pfn(pfn_to_nid(__pfn))); \ +}) -#define kern_addr_valid(kaddr) test_bit(local_mapnr(kaddr), \ - NODE_DATA(kvaddr_to_nid(kaddr))->valid_addr_bitmap) +#define kern_addr_valid(kaddr) \ +({ \ + unsigned long __kaddr = (unsigned long)(kaddr); \ + pg_data_t *__pgdat = NODE_DATA(kvaddr_to_nid(__kaddr)); \ + test_bit(local_mapnr(__kaddr), __pgdat->valid_addr_bitmap); \ +}) -#define pfn_to_page(pfn) (node_mem_map(pfn_to_nid(pfn)) + node_localnr(pfn, pfn_to_nid(pfn))) -#define page_to_pfn(page) ((page - page_zone(page)->zone_mem_map) + page_zone(page)->zone_start_pfn) +#define pfn_to_page(pfn) \ +({ \ + unsigned long __pfn = pfn; \ + int __node = pfn_to_nid(__pfn); \ + &node_mem_map(__node)[node_localnr(__pfn,__node)]; \ +}) + +#define page_to_pfn(pg) \ +({ \ + struct page *__page = pg; \ + struct zone *__zone = page_zone(__page); \ + (unsigned long)(__page - __zone->zone_mem_map) \ + + __zone->zone_start_pfn; \ +}) #define pmd_page(pmd) (pfn_to_page(pmd_val(pmd) >> PAGE_SHIFT)) /* * pfn_valid should be made as fast as possible, and the current definition * is valid for machines that are NUMA, but still contiguous, which is what * is currently supported. A more generalised, but slower definition would * be something like this - mbligh: - * ( pfn_to_pgdat(pfn) && (pfn < node_end_pfn(pfn_to_nid(pfn))) ) + * ( pfn_to_pgdat(pfn) && ((pfn) < node_end_pfn(pfn_to_nid(pfn))) ) */ -#define pfn_valid(pfn) (pfn < num_physpages) +#define pfn_valid(pfn) ((pfn) < num_physpages) #endif /* CONFIG_DISCONTIGMEM */ #endif /* _ASM_MMZONE_H_ */ diff --git a/include/asm-i386/node.h b/include/asm-i386/node.h index 26836eb7be10..104f10b2bbf7 100644 --- a/include/asm-i386/node.h +++ b/include/asm-i386/node.h @@ -13,7 +13,7 @@ struct i386_node { extern struct i386_node node_devices[MAX_NUMNODES]; static inline int arch_register_node(int num){ - int p_node = __parent_node(num); + int p_node = parent_node(num); struct node *parent = NULL; if (p_node != num) diff --git a/include/asm-i386/pgalloc.h b/include/asm-i386/pgalloc.h index a44e266934f6..640ca76d0ad2 100644 --- a/include/asm-i386/pgalloc.h +++ b/include/asm-i386/pgalloc.h @@ -20,11 +20,11 @@ static inline void pmd_populate(struct mm_struct *mm, pmd_t *pmd, struct page *p * Allocate and free page tables. */ -extern pgd_t *pgd_alloc(struct mm_struct *); -extern void pgd_free(pgd_t *pgd); +pgd_t *pgd_alloc(struct mm_struct *); +void pgd_free(pgd_t *pgd); -extern pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); -extern struct page *pte_alloc_one(struct mm_struct *, unsigned long); +pte_t *pte_alloc_one_kernel(struct mm_struct *, unsigned long); +struct page *pte_alloc_one(struct mm_struct *, unsigned long); static inline void pte_free_kernel(pte_t *pte) { diff --git a/include/asm-i386/pgtable-3level.h b/include/asm-i386/pgtable-3level.h index 0751ebf5d340..f06b393c7071 100644 --- a/include/asm-i386/pgtable-3level.h +++ b/include/asm-i386/pgtable-3level.h @@ -115,6 +115,4 @@ static inline pmd_t pfn_pmd(unsigned long page_nr, pgprot_t pgprot) return __pmd(((unsigned long long)page_nr << PAGE_SHIFT) | pgprot_val(pgprot)); } -extern struct kmem_cache_s *pae_pgd_cachep; - #endif /* _I386_PGTABLE_3LEVEL_H */ diff --git a/include/asm-i386/pgtable.h b/include/asm-i386/pgtable.h index 0213fa88c792..c1c55b2d9682 100644 --- a/include/asm-i386/pgtable.h +++ b/include/asm-i386/pgtable.h @@ -41,22 +41,13 @@ extern unsigned long empty_zero_page[1024]; #ifndef __ASSEMBLY__ #if CONFIG_X86_PAE # include <asm/pgtable-3level.h> - -/* - * Need to initialise the X86 PAE caches - */ -extern void pgtable_cache_init(void); - #else # include <asm/pgtable-2level.h> +#endif -/* - * No page table caches to initialise - */ -#define pgtable_cache_init() do { } while (0) +void pgtable_cache_init(void); #endif -#endif #define __beep() asm("movb $0x3,%al; outb %al,$0x61") diff --git a/include/asm-i386/topology.h b/include/asm-i386/topology.h index 53d8a01ef8a7..be697216b1e3 100644 --- a/include/asm-i386/topology.h +++ b/include/asm-i386/topology.h @@ -34,32 +34,32 @@ extern volatile unsigned long node_2_cpu_mask[]; extern volatile int cpu_2_node[]; /* Returns the number of the node containing CPU 'cpu' */ -static inline int __cpu_to_node(int cpu) +static inline int cpu_to_node(int cpu) { return cpu_2_node[cpu]; } /* Returns the number of the node containing MemBlk 'memblk' */ -#define __memblk_to_node(memblk) (memblk) +#define memblk_to_node(memblk) (memblk) /* Returns the number of the node containing Node 'node'. This architecture is flat, so it is a pretty simple function! */ -#define __parent_node(node) (node) +#define parent_node(node) (node) /* Returns a bitmask of CPUs on Node 'node'. */ -static inline unsigned long __node_to_cpu_mask(int node) +static inline unsigned long node_to_cpumask(int node) { return node_2_cpu_mask[node]; } /* Returns the number of the first CPU on Node 'node'. */ -static inline int __node_to_first_cpu(int node) +static inline int node_to_first_cpu(int node) { - return __ffs(__node_to_cpu_mask(node)); + return __ffs(node_to_cpumask(node)); } /* Returns the number of the first MemBlk on Node 'node' */ -#define __node_to_memblk(node) (node) +#define node_to_memblk(node) (node) /* Cross-node load balancing interval. */ #define NODE_BALANCE_RATE 100 diff --git a/include/asm-i386/unistd.h b/include/asm-i386/unistd.h index fb5a97ec22f5..d21b3a8a4f4e 100644 --- a/include/asm-i386/unistd.h +++ b/include/asm-i386/unistd.h @@ -255,6 +255,8 @@ #define __NR_io_getevents 247 #define __NR_io_submit 248 #define __NR_io_cancel 249 +#define __NR_fadvise64 250 + #define __NR_exit_group 252 #define __NR_lookup_dcookie 253 #define __NR_epoll_create 254 diff --git a/include/asm-ia64/kmap_types.h b/include/asm-ia64/kmap_types.h index 77187f614170..d54e19055e6c 100644 --- a/include/asm-ia64/kmap_types.h +++ b/include/asm-ia64/kmap_types.h @@ -21,8 +21,8 @@ D(7) KM_PTE0, D(8) KM_PTE1, D(9) KM_IRQ0, D(10) KM_IRQ1, -D(11) KM_CRYPTO_USER, -D(12) KM_CRYPTO_SOFTIRQ, +D(11) KM_SOFTIRQ0, +D(12) KM_SOFTIRQ1, D(13) KM_TYPE_NR }; diff --git a/include/asm-ia64/topology.h b/include/asm-ia64/topology.h index 22a5aaca8d21..b154e116980e 100644 --- a/include/asm-ia64/topology.h +++ b/include/asm-ia64/topology.h @@ -21,25 +21,25 @@ /* * Returns the number of the node containing CPU 'cpu' */ -#define __cpu_to_node(cpu) (int)(cpu_to_node_map[cpu]) +#define cpu_to_node(cpu) (int)(cpu_to_node_map[cpu]) /* * Returns a bitmask of CPUs on Node 'node'. */ -#define __node_to_cpu_mask(node) (node_to_cpu_mask[node]) +#define node_to_cpumask(node) (node_to_cpumask[node]) #else -#define __cpu_to_node(cpu) (0) -#define __node_to_cpu_mask(node) (phys_cpu_present_map) +#define cpu_to_node(cpu) (0) +#define node_to_cpumask(node) (phys_cpu_present_map) #endif /* * Returns the number of the node containing MemBlk 'memblk' */ #ifdef CONFIG_ACPI_NUMA -#define __memblk_to_node(memblk) (node_memblk[memblk].nid) +#define memblk_to_node(memblk) (node_memblk[memblk].nid) #else -#define __memblk_to_node(memblk) (memblk) +#define memblk_to_node(memblk) (memblk) #endif /* @@ -47,18 +47,18 @@ * Not implemented here. Multi-level hierarchies detected with * the help of node_distance(). */ -#define __parent_node(nid) (nid) +#define parent_node(nid) (nid) /* * Returns the number of the first CPU on Node 'node'. */ -#define __node_to_first_cpu(node) (__ffs(__node_to_cpu_mask(node))) +#define node_to_first_cpu(node) (__ffs(node_to_cpumask(node))) /* * Returns the number of the first MemBlk on Node 'node' * Should be fixed when IA64 discontigmem goes in. */ -#define __node_to_memblk(node) (node) +#define node_to_memblk(node) (node) /* Cross-node load balancing interval. */ #define NODE_BALANCE_RATE 10 diff --git a/include/asm-mips64/topology.h b/include/asm-mips64/topology.h index fe5988686b1d..04b0168e8736 100644 --- a/include/asm-mips64/topology.h +++ b/include/asm-mips64/topology.h @@ -3,6 +3,6 @@ #include <asm/mmzone.h> -#define __cpu_to_node(cpu) (cputocnode(cpu)) +#define cpu_to_node(cpu) (cputocnode(cpu)) #endif /* _ASM_MIPS64_TOPOLOGY_H */ diff --git a/include/asm-parisc/bitops.h b/include/asm-parisc/bitops.h index 99e163032f14..c2eed7aa218b 100644 --- a/include/asm-parisc/bitops.h +++ b/include/asm-parisc/bitops.h @@ -257,7 +257,14 @@ static __inline__ int ffs(int x) * hweightN: returns the hamming weight (i.e. the number * of bits set) of a N-bit word */ - +#define hweight64(x) \ +({ \ + unsigned long __x = (x); \ + unsigned int __w; \ + __w = generic_hweight32((unsigned int) __x); \ + __w += generic_hweight32((unsigned int) (__x>>32)); \ + __w; \ +}) #define hweight32(x) generic_hweight32(x) #define hweight16(x) generic_hweight16(x) #define hweight8(x) generic_hweight8(x) diff --git a/include/asm-parisc/compat.h b/include/asm-parisc/compat.h index 6b146922ea10..4cbe08f1b22e 100644 --- a/include/asm-parisc/compat.h +++ b/include/asm-parisc/compat.h @@ -72,4 +72,24 @@ struct compat_flock { compat_pid_t l_pid; }; +struct compat_statfs { + s32 f_type; + s32 f_bsize; + s32 f_blocks; + s32 f_bfree; + s32 f_bavail; + s32 f_files; + s32 f_ffree; + __kernel_fsid_t f_fsid; + s32 f_namelen; + s32 f_spare[6]; +}; + +typedef u32 compat_old_sigset_t; /* at least 32 bits */ + +#define _COMPAT_NSIG 64 +#define _COMPAT_NSIG_BPW BITS_PER_LONG + +typedef u32 compat_sigset_word; + #endif /* _ASM_PARISC_COMPAT_H */ diff --git a/include/asm-parisc/dma-mapping.h b/include/asm-parisc/dma-mapping.h index 2428762027b3..a4c2bf437b61 100644 --- a/include/asm-parisc/dma-mapping.h +++ b/include/asm-parisc/dma-mapping.h @@ -203,7 +203,6 @@ parisc_walk_tree(struct device *dev) struct parisc_device; struct ioc; void * ccio_get_iommu(const struct parisc_device *dev); -struct pci_dev * ccio_get_fake(const struct parisc_device *dev); int ccio_request_resource(const struct parisc_device *dev, struct resource *res); int ccio_allocate_resource(const struct parisc_device *dev, @@ -213,7 +212,6 @@ int ccio_allocate_resource(const struct parisc_device *dev, void *alignf_data); #else /* !CONFIG_IOMMU_CCIO */ #define ccio_get_iommu(dev) NULL -#define ccio_get_fake(dev) NULL #define ccio_request_resource(dev, res) request_resource(&iomem_resource, res) #define ccio_allocate_resource(dev, res, size, min, max, align, alignf, data) \ allocate_resource(&iomem_resource, res, size, min, max, \ diff --git a/include/asm-parisc/module.h b/include/asm-parisc/module.h index f6c2466621f4..acf6770cd5d3 100644 --- a/include/asm-parisc/module.h +++ b/include/asm-parisc/module.h @@ -7,10 +7,14 @@ #define Elf_Shdr Elf64_Shdr #define Elf_Sym Elf64_Sym #define Elf_Ehdr Elf64_Ehdr +#define Elf_Addr Elf64_Addr +#define Elf_Rela Elf64_Rela #else #define Elf_Shdr Elf32_Shdr #define Elf_Sym Elf32_Sym #define Elf_Ehdr Elf32_Ehdr +#define Elf_Addr Elf32_Addr +#define Elf_Rela Elf32_Rela #endif #define module_map(x) vmalloc(x) @@ -20,6 +24,10 @@ struct mod_arch_specific { + unsigned long got_offset; + unsigned long fdesc_offset, fdesc_count; + unsigned long stub_offset; + unsigned long stub_count; }; #endif /* _ASM_PARISC_MODULE_H */ diff --git a/include/asm-parisc/smp.h b/include/asm-parisc/smp.h index b43525324dc1..cda89e45e05f 100644 --- a/include/asm-parisc/smp.h +++ b/include/asm-parisc/smp.h @@ -12,6 +12,7 @@ #define PDC_OS_BOOT_RENDEZVOUS_HI 0x28 #ifndef ASSEMBLY +#include <linux/bitops.h> #include <linux/threads.h> /* for NR_CPUS */ typedef unsigned long address_t; @@ -53,7 +54,7 @@ extern unsigned long cpu_present_mask; #define cpu_online(cpu) (cpu_online_map & (1<<(cpu))) #define cpu_possible(cpu) (cpu_present_mask & (1<<(cpu))) - + extern inline unsigned int num_online_cpus(void) { return hweight32(cpu_online_map); diff --git a/include/asm-ppc/kmap_types.h b/include/asm-ppc/kmap_types.h index 1a4813527e74..5ffc886ddabb 100644 --- a/include/asm-ppc/kmap_types.h +++ b/include/asm-ppc/kmap_types.h @@ -14,8 +14,8 @@ enum km_type { KM_PTE1, KM_IRQ0, KM_IRQ1, - KM_CRYPTO_USER, - KM_CRYPTO_SOFTIRQ, + KM_SOFTIRQ0, + KM_SOFTIRQ1, KM_TYPE_NR }; diff --git a/include/asm-ppc64/kmap_types.h b/include/asm-ppc64/kmap_types.h index f8422429758a..fd1574648223 100644 --- a/include/asm-ppc64/kmap_types.h +++ b/include/asm-ppc64/kmap_types.h @@ -14,8 +14,8 @@ enum km_type { KM_PTE1, KM_IRQ0, KM_IRQ1, - KM_CRYPTO_USER, - KM_CRYPTO_SOFTIRQ, + KM_SOFTIRQ0, + KM_SOFTIRQ1, KM_TYPE_NR }; diff --git a/include/asm-ppc64/topology.h b/include/asm-ppc64/topology.h index c3b4266c2ebf..ecc6cab2895e 100644 --- a/include/asm-ppc64/topology.h +++ b/include/asm-ppc64/topology.h @@ -5,7 +5,7 @@ #ifdef CONFIG_NUMA -static inline int __cpu_to_node(int cpu) +static inline int cpu_to_node(int cpu) { int node; @@ -19,7 +19,7 @@ static inline int __cpu_to_node(int cpu) return node; } -static inline int __node_to_first_cpu(int node) +static inline int node_to_first_cpu(int node) { int cpu; @@ -31,7 +31,7 @@ static inline int __node_to_first_cpu(int node) return -1; } -static inline unsigned long __node_to_cpu_mask(int node) +static inline unsigned long node_to_cpumask(int node) { int cpu; unsigned long mask = 0UL; @@ -51,12 +51,7 @@ static inline unsigned long __node_to_cpu_mask(int node) #else /* !CONFIG_NUMA */ -#define __cpu_to_node(cpu) (0) -#define __memblk_to_node(memblk) (0) -#define __parent_node(nid) (0) -#define __node_to_first_cpu(node) (0) -#define __node_to_cpu_mask(node) (cpu_online_map) -#define __node_to_memblk(node) (0) +#include <asm-generic/topology.h> #endif /* CONFIG_NUMA */ diff --git a/include/asm-s390/kmap_types.h b/include/asm-s390/kmap_types.h index f8422429758a..fd1574648223 100644 --- a/include/asm-s390/kmap_types.h +++ b/include/asm-s390/kmap_types.h @@ -14,8 +14,8 @@ enum km_type { KM_PTE1, KM_IRQ0, KM_IRQ1, - KM_CRYPTO_USER, - KM_CRYPTO_SOFTIRQ, + KM_SOFTIRQ0, + KM_SOFTIRQ1, KM_TYPE_NR }; diff --git a/include/asm-sparc/delay.h b/include/asm-sparc/delay.h index e3994705a3eb..04dd4468abaa 100644 --- a/include/asm-sparc/delay.h +++ b/include/asm-sparc/delay.h @@ -21,5 +21,6 @@ extern __inline__ void __delay(unsigned long loops) /* This is too messy with inline asm on the Sparc. */ extern void udelay(unsigned long usecs); +extern void ndelay(unsigned long usecs); #endif /* defined(__SPARC_DELAY_H) */ diff --git a/include/asm-sparc/kmap_types.h b/include/asm-sparc/kmap_types.h index 05eeec6d17f3..e215f7104974 100644 --- a/include/asm-sparc/kmap_types.h +++ b/include/asm-sparc/kmap_types.h @@ -13,8 +13,8 @@ enum km_type { KM_PTE1, KM_IRQ0, KM_IRQ1, - KM_CRYPTO_USER, - KM_CRYPTO_SOFTIRQ, + KM_SOFTIRQ0, + KM_SOFTIRQ1, KM_TYPE_NR }; diff --git a/include/asm-sparc64/delay.h b/include/asm-sparc64/delay.h index 90bf4b469138..4157717dd736 100644 --- a/include/asm-sparc64/delay.h +++ b/include/asm-sparc64/delay.h @@ -45,6 +45,19 @@ static __inline__ void __udelay(unsigned long usecs, unsigned long lps) __delay(usecs * HZ); } +extern __inline__ void __ndelay(unsigned long usecs, unsigned long lps) +{ + usecs *= 0x0000000000000005UL; /* 2**32 / 10000 */ + + __asm__ __volatile__( +" mulx %1, %2, %0\n" +" srlx %0, 32, %0\n" + : "=r" (usecs) + : "r" (usecs), "r" (lps)); + + __delay(usecs * HZ); +} + #ifdef CONFIG_SMP #define __udelay_val cpu_data[smp_processor_id()].udelay_val #else @@ -52,6 +65,7 @@ static __inline__ void __udelay(unsigned long usecs, unsigned long lps) #endif #define udelay(usecs) __udelay((usecs),__udelay_val) +#define ndelay(usecs) __ndelay((usecs),__udelay_val) #endif /* !__ASSEMBLY__ */ diff --git a/include/asm-sparc64/kmap_types.h b/include/asm-sparc64/kmap_types.h index 26c28fb7c8b7..34c1d3d9a3b0 100644 --- a/include/asm-sparc64/kmap_types.h +++ b/include/asm-sparc64/kmap_types.h @@ -17,8 +17,8 @@ enum km_type { KM_PTE1, KM_IRQ0, KM_IRQ1, - KM_CRYPTO_USER, - KM_CRYPTO_SOFTIRQ, + KM_SOFTIRQ0, + KM_SOFTIRQ1, KM_TYPE_NR }; diff --git a/include/asm-x86_64/kmap_types.h b/include/asm-x86_64/kmap_types.h index e87ef2e0f74d..7486338c6cea 100644 --- a/include/asm-x86_64/kmap_types.h +++ b/include/asm-x86_64/kmap_types.h @@ -11,8 +11,8 @@ enum km_type { KM_BIO_DST_IRQ, KM_IRQ0, KM_IRQ1, - KM_CRYPTO_USER, - KM_CRYPTO_SOFTIRQ, + KM_SOFTIRQ0, + KM_SOFTIRQ1, KM_TYPE_NR }; diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 90171e65e989..c599ea36233b 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h @@ -292,7 +292,7 @@ extern unsigned long blk_max_low_pfn, blk_max_pfn; #define BLK_BOUNCE_ISA (ISA_DMA_THRESHOLD) extern int init_emergency_isa_pool(void); -inline void blk_queue_bounce(request_queue_t *q, struct bio **bio); +extern void blk_queue_bounce(request_queue_t *q, struct bio **bio); #define rq_for_each_bio(bio, rq) \ if ((rq->bio)) \ diff --git a/include/linux/crypto.h b/include/linux/crypto.h index 5c29e2b58011..5178882ec4d1 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h @@ -131,9 +131,13 @@ struct cipher_tfm { int (*cit_setkey)(struct crypto_tfm *tfm, const u8 *key, unsigned int keylen); int (*cit_encrypt)(struct crypto_tfm *tfm, - struct scatterlist *sg, unsigned int nsg); + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes); int (*cit_decrypt)(struct crypto_tfm *tfm, - struct scatterlist *sg, unsigned int nsg); + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes); void (*cit_xor_block)(u8 *dst, const u8 *src); }; @@ -274,19 +278,21 @@ static inline int crypto_cipher_setkey(struct crypto_tfm *tfm, } static inline int crypto_cipher_encrypt(struct crypto_tfm *tfm, - struct scatterlist *sg, - unsigned int nsg) + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes) { BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER); - return tfm->crt_cipher.cit_encrypt(tfm, sg, nsg); + return tfm->crt_cipher.cit_encrypt(tfm, dst, src, nbytes); } static inline int crypto_cipher_decrypt(struct crypto_tfm *tfm, - struct scatterlist *sg, - unsigned int nsg) + struct scatterlist *dst, + struct scatterlist *src, + unsigned int nbytes) { BUG_ON(crypto_tfm_alg_type(tfm) != CRYPTO_ALG_TYPE_CIPHER); - return tfm->crt_cipher.cit_decrypt(tfm, sg, nsg); + return tfm->crt_cipher.cit_decrypt(tfm, dst, src, nbytes); } static inline void crypto_cipher_set_iv(struct crypto_tfm *tfm, diff --git a/include/linux/elf.h b/include/linux/elf.h index bef237b527bd..1330ef61c75c 100644 --- a/include/linux/elf.h +++ b/include/linux/elf.h @@ -519,6 +519,174 @@ typedef struct { #define EF_ALPHA_32BIT 1 /* All addresses are below 2GB */ +/* HPPA specific definitions. */ + +/* Legal values for e_flags field of Elf32_Ehdr. */ + +#define EF_PARISC_TRAPNIL 0x00010000 /* Trap nil pointer dereference. */ +#define EF_PARISC_EXT 0x00020000 /* Program uses arch. extensions. */ +#define EF_PARISC_LSB 0x00040000 /* Program expects little endian. */ +#define EF_PARISC_WIDE 0x00080000 /* Program expects wide mode. */ +#define EF_PARISC_NO_KABP 0x00100000 /* No kernel assisted branch + prediction. */ +#define EF_PARISC_LAZYSWAP 0x00400000 /* Allow lazy swapping. */ +#define EF_PARISC_ARCH 0x0000ffff /* Architecture version. */ + +/* Defined values for `e_flags & EF_PARISC_ARCH' are: */ + +#define EFA_PARISC_1_0 0x020b /* PA-RISC 1.0 big-endian. */ +#define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */ +#define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. */ + +/* Additional section indeces. */ + +#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tenatively declared + symbols in ANSI C. */ +#define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. */ + +/* Legal values for sh_type field of Elf32_Shdr. */ + +#define SHT_PARISC_EXT 0x70000000 /* Contains product specific ext. */ +#define SHT_PARISC_UNWIND 0x70000001 /* Unwind information. */ +#define SHT_PARISC_DOC 0x70000002 /* Debug info for optimized code. */ + +/* Legal values for sh_flags field of Elf32_Shdr. */ + +#define SHF_PARISC_SHORT 0x20000000 /* Section with short addressing. */ +#define SHF_PARISC_HUGE 0x40000000 /* Section far from gp. */ +#define SHF_PARISC_SBP 0x80000000 /* Static branch prediction code. */ + +/* Legal values for ST_TYPE subfield of st_info (symbol type). */ + +#define STT_PARISC_MILLICODE 13 /* Millicode function entry point. */ + +#define STT_HP_OPAQUE (STT_LOOS + 0x1) +#define STT_HP_STUB (STT_LOOS + 0x2) + +/* HPPA relocs. */ + +#define R_PARISC_NONE 0 /* No reloc. */ +#define R_PARISC_DIR32 1 /* Direct 32-bit reference. */ +#define R_PARISC_DIR21L 2 /* Left 21 bits of eff. address. */ +#define R_PARISC_DIR17R 3 /* Right 17 bits of eff. address. */ +#define R_PARISC_DIR17F 4 /* 17 bits of eff. address. */ +#define R_PARISC_DIR14R 6 /* Right 14 bits of eff. address. */ +#define R_PARISC_PCREL32 9 /* 32-bit rel. address. */ +#define R_PARISC_PCREL21L 10 /* Left 21 bits of rel. address. */ +#define R_PARISC_PCREL17R 11 /* Right 17 bits of rel. address. */ +#define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */ +#define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */ +#define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */ +#define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */ +#define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */ +#define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */ +#define R_PARISC_LTOFF21L 34 /* LT-relative, left 21 bits. */ +#define R_PARISC_LTOFF14R 38 /* LT-relative, right 14 bits. */ +#define R_PARISC_SECREL32 41 /* 32 bits section rel. address. */ +#define R_PARISC_SEGBASE 48 /* No relocation, set segment base. */ +#define R_PARISC_SEGREL32 49 /* 32 bits segment rel. address. */ +#define R_PARISC_PLTOFF21L 50 /* PLT rel. address, left 21 bits. */ +#define R_PARISC_PLTOFF14R 54 /* PLT rel. address, right 14 bits. */ +#define R_PARISC_LTOFF_FPTR32 57 /* 32 bits LT-rel. function pointer. */ +#define R_PARISC_LTOFF_FPTR21L 58 /* LT-rel. fct ptr, left 21 bits. */ +#define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */ +#define R_PARISC_FPTR64 64 /* 64 bits function address. */ +#define R_PARISC_PLABEL32 65 /* 32 bits function address. */ +#define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */ +#define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */ +#define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */ +#define R_PARISC_PCREL14DR 76 /* PC rel. address, right 14 bits. */ +#define R_PARISC_PCREL16F 77 /* 16 bits PC-rel. address. */ +#define R_PARISC_PCREL16WF 78 /* 16 bits PC-rel. address. */ +#define R_PARISC_PCREL16DF 79 /* 16 bits PC-rel. address. */ +#define R_PARISC_DIR64 80 /* 64 bits of eff. address. */ +#define R_PARISC_DIR14WR 83 /* 14 bits of eff. address. */ +#define R_PARISC_DIR14DR 84 /* 14 bits of eff. address. */ +#define R_PARISC_DIR16F 85 /* 16 bits of eff. address. */ +#define R_PARISC_DIR16WF 86 /* 16 bits of eff. address. */ +#define R_PARISC_DIR16DF 87 /* 16 bits of eff. address. */ +#define R_PARISC_GPREL64 88 /* 64 bits of GP-rel. address. */ +#define R_PARISC_GPREL14WR 91 /* GP-rel. address, right 14 bits. */ +#define R_PARISC_GPREL14DR 92 /* GP-rel. address, right 14 bits. */ +#define R_PARISC_GPREL16F 93 /* 16 bits GP-rel. address. */ +#define R_PARISC_GPREL16WF 94 /* 16 bits GP-rel. address. */ +#define R_PARISC_GPREL16DF 95 /* 16 bits GP-rel. address. */ +#define R_PARISC_LTOFF64 96 /* 64 bits LT-rel. address. */ +#define R_PARISC_LTOFF14WR 99 /* LT-rel. address, right 14 bits. */ +#define R_PARISC_LTOFF14DR 100 /* LT-rel. address, right 14 bits. */ +#define R_PARISC_LTOFF16F 101 /* 16 bits LT-rel. address. */ +#define R_PARISC_LTOFF16WF 102 /* 16 bits LT-rel. address. */ +#define R_PARISC_LTOFF16DF 103 /* 16 bits LT-rel. address. */ +#define R_PARISC_SECREL64 104 /* 64 bits section rel. address. */ +#define R_PARISC_SEGREL64 112 /* 64 bits segment rel. address. */ +#define R_PARISC_PLTOFF14WR 115 /* PLT-rel. address, right 14 bits. */ +#define R_PARISC_PLTOFF14DR 116 /* PLT-rel. address, right 14 bits. */ +#define R_PARISC_PLTOFF16F 117 /* 16 bits LT-rel. address. */ +#define R_PARISC_PLTOFF16WF 118 /* 16 bits PLT-rel. address. */ +#define R_PARISC_PLTOFF16DF 119 /* 16 bits PLT-rel. address. */ +#define R_PARISC_LTOFF_FPTR64 120 /* 64 bits LT-rel. function ptr. */ +#define R_PARISC_LTOFF_FPTR14WR 123 /* LT-rel. fct. ptr., right 14 bits. */ +#define R_PARISC_LTOFF_FPTR14DR 124 /* LT-rel. fct. ptr., right 14 bits. */ +#define R_PARISC_LTOFF_FPTR16F 125 /* 16 bits LT-rel. function ptr. */ +#define R_PARISC_LTOFF_FPTR16WF 126 /* 16 bits LT-rel. function ptr. */ +#define R_PARISC_LTOFF_FPTR16DF 127 /* 16 bits LT-rel. function ptr. */ +#define R_PARISC_LORESERVE 128 +#define R_PARISC_COPY 128 /* Copy relocation. */ +#define R_PARISC_IPLT 129 /* Dynamic reloc, imported PLT */ +#define R_PARISC_EPLT 130 /* Dynamic reloc, exported PLT */ +#define R_PARISC_TPREL32 153 /* 32 bits TP-rel. address. */ +#define R_PARISC_TPREL21L 154 /* TP-rel. address, left 21 bits. */ +#define R_PARISC_TPREL14R 158 /* TP-rel. address, right 14 bits. */ +#define R_PARISC_LTOFF_TP21L 162 /* LT-TP-rel. address, left 21 bits. */ +#define R_PARISC_LTOFF_TP14R 166 /* LT-TP-rel. address, right 14 bits.*/ +#define R_PARISC_LTOFF_TP14F 167 /* 14 bits LT-TP-rel. address. */ +#define R_PARISC_TPREL64 216 /* 64 bits TP-rel. address. */ +#define R_PARISC_TPREL14WR 219 /* TP-rel. address, right 14 bits. */ +#define R_PARISC_TPREL14DR 220 /* TP-rel. address, right 14 bits. */ +#define R_PARISC_TPREL16F 221 /* 16 bits TP-rel. address. */ +#define R_PARISC_TPREL16WF 222 /* 16 bits TP-rel. address. */ +#define R_PARISC_TPREL16DF 223 /* 16 bits TP-rel. address. */ +#define R_PARISC_LTOFF_TP64 224 /* 64 bits LT-TP-rel. address. */ +#define R_PARISC_LTOFF_TP14WR 227 /* LT-TP-rel. address, right 14 bits.*/ +#define R_PARISC_LTOFF_TP14DR 228 /* LT-TP-rel. address, right 14 bits.*/ +#define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */ +#define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */ +#define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */ +#define R_PARISC_HIRESERVE 255 + +/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */ + +#define PT_HP_TLS (PT_LOOS + 0x0) +#define PT_HP_CORE_NONE (PT_LOOS + 0x1) +#define PT_HP_CORE_VERSION (PT_LOOS + 0x2) +#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3) +#define PT_HP_CORE_COMM (PT_LOOS + 0x4) +#define PT_HP_CORE_PROC (PT_LOOS + 0x5) +#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6) +#define PT_HP_CORE_STACK (PT_LOOS + 0x7) +#define PT_HP_CORE_SHM (PT_LOOS + 0x8) +#define PT_HP_CORE_MMF (PT_LOOS + 0x9) +#define PT_HP_PARALLEL (PT_LOOS + 0x10) +#define PT_HP_FASTBIND (PT_LOOS + 0x11) +#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12) +#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13) +#define PT_HP_STACK (PT_LOOS + 0x14) + +#define PT_PARISC_ARCHEXT 0x70000000 +#define PT_PARISC_UNWIND 0x70000001 + +/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr. */ + +#define PF_PARISC_SBP 0x08000000 + +#define PF_HP_PAGE_SIZE 0x00100000 +#define PF_HP_FAR_SHARED 0x00200000 +#define PF_HP_NEAR_SHARED 0x00400000 +#define PF_HP_CODE 0x01000000 +#define PF_HP_MODIFY 0x02000000 +#define PF_HP_LAZYSWAP 0x04000000 +#define PF_HP_SBP 0x08000000 + typedef struct elf32_rel { Elf32_Addr r_offset; diff --git a/include/linux/fadvise.h b/include/linux/fadvise.h new file mode 100644 index 000000000000..6fc656dfb93d --- /dev/null +++ b/include/linux/fadvise.h @@ -0,0 +1,11 @@ +#ifndef FADVISE_H_INCLUDED +#define FADVISE_H_INCLUDED + +#define POSIX_FADV_NORMAL 0 /* No further special treatment. */ +#define POSIX_FADV_RANDOM 1 /* Expect random page references. */ +#define POSIX_FADV_SEQUENTIAL 2 /* Expect sequential page references. */ +#define POSIX_FADV_WILLNEED 3 /* Will need these pages. */ +#define POSIX_FADV_DONTNEED 4 /* Don't need these pages. */ +#define POSIX_FADV_NOREUSE 5 /* Data will be accessed once. */ + +#endif /* FADVISE_H_INCLUDED */ diff --git a/include/linux/fs.h b/include/linux/fs.h index 76b32526394f..9a17c9819ae9 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1102,7 +1102,9 @@ extern int full_check_disk_change(struct block_device *); extern int __check_disk_change(dev_t); extern int invalidate_inodes(struct super_block *); extern int invalidate_device(kdev_t, int); -extern void invalidate_inode_pages(struct address_space *mapping); +unsigned long invalidate_mapping_pages(struct address_space *mapping, + pgoff_t start, pgoff_t end); +unsigned long invalidate_inode_pages(struct address_space *mapping); extern void invalidate_inode_pages2(struct address_space *mapping); extern void write_inode_now(struct inode *, int); extern int filemap_fdatawrite(struct address_space *); diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 54bf03eaf3e7..c9fb5039e753 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h @@ -14,20 +14,17 @@ /* Action modifiers - doesn't change the zoning */ #define __GFP_WAIT 0x10 /* Can wait and reschedule? */ #define __GFP_HIGH 0x20 /* Should access emergency pools? */ -#define __GFP_IO 0x40 /* Can start low memory physical IO? */ -#define __GFP_HIGHIO 0x80 /* Can start high mem physical IO? */ -#define __GFP_FS 0x100 /* Can call down to low-level FS? */ -#define __GFP_COLD 0x200 /* Cache-cold page required */ -#define __GFP_NOWARN 0x400 /* Suppress page allocation failure warning */ - -#define GFP_NOHIGHIO ( __GFP_WAIT | __GFP_IO) -#define GFP_NOIO ( __GFP_WAIT) -#define GFP_NOFS ( __GFP_WAIT | __GFP_IO | __GFP_HIGHIO) +#define __GFP_IO 0x40 /* Can start physical IO? */ +#define __GFP_FS 0x80 /* Can call down to low-level FS? */ +#define __GFP_COLD 0x100 /* Cache-cold page required */ +#define __GFP_NOWARN 0x200 /* Suppress page allocation failure warning */ + #define GFP_ATOMIC (__GFP_HIGH) -#define GFP_USER ( __GFP_WAIT | __GFP_IO | __GFP_HIGHIO | __GFP_FS) -#define GFP_HIGHUSER ( __GFP_WAIT | __GFP_IO | __GFP_HIGHIO | __GFP_FS | __GFP_HIGHMEM) -#define GFP_KERNEL ( __GFP_WAIT | __GFP_IO | __GFP_HIGHIO | __GFP_FS) -#define GFP_KSWAPD ( __GFP_WAIT | __GFP_IO | __GFP_HIGHIO | __GFP_FS) +#define GFP_NOIO (__GFP_WAIT) +#define GFP_NOFS (__GFP_WAIT | __GFP_IO) +#define GFP_KERNEL (__GFP_WAIT | __GFP_IO | __GFP_FS) +#define GFP_USER (__GFP_WAIT | __GFP_IO | __GFP_FS) +#define GFP_HIGHUSER (__GFP_WAIT | __GFP_IO | __GFP_FS | __GFP_HIGHMEM) /* Flag - indicates that the buffer will be suitable for DMA. Ignored on some platforms, used as appropriate on others */ diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 3bf94e2205bd..325d91ba012a 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h @@ -18,7 +18,6 @@ void zap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long); void unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long); int hugetlb_prefault(struct address_space *, struct vm_area_struct *); void huge_page_release(struct page *); -void hugetlb_release_key(struct hugetlb_key *); int hugetlb_report_meminfo(char *); int is_hugepage_mem_enough(size_t); diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h index 7367127511b3..c81b51bab1e3 100644 --- a/include/linux/jiffies.h +++ b/include/linux/jiffies.h @@ -2,15 +2,35 @@ #define _LINUX_JIFFIES_H #include <linux/types.h> +#include <linux/spinlock.h> +#include <asm/system.h> #include <asm/param.h> /* for HZ */ /* * The 64-bit value is not volatile - you MUST NOT read it - * without holding read_lock_irq(&xtime_lock) + * without holding read_lock_irq(&xtime_lock). + * get_jiffies_64() will do this for you as appropriate. */ extern u64 jiffies_64; extern unsigned long volatile jiffies; +static inline u64 get_jiffies_64(void) +{ +#if BITS_PER_LONG < 64 + extern rwlock_t xtime_lock; + unsigned long flags; + u64 tmp; + + read_lock_irqsave(&xtime_lock, flags); + tmp = jiffies_64; + read_unlock_irqrestore(&xtime_lock, flags); + return tmp; +#else + return (u64)jiffies; +#endif +} + + /* * These inlines deal with timer wrapping correctly. You are * strongly encouraged to use them diff --git a/include/linux/mm.h b/include/linux/mm.h index 50eb18eb0488..d2b99c852301 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -491,7 +491,9 @@ extern int do_munmap(struct mm_struct *, unsigned long, size_t); extern unsigned long do_brk(unsigned long, unsigned long); -static inline void __vma_unlink(struct mm_struct * mm, struct vm_area_struct * vma, struct vm_area_struct * prev) +static inline void +__vma_unlink(struct mm_struct *mm, struct vm_area_struct *vma, + struct vm_area_struct *prev) { prev->vm_next = vma->vm_next; rb_erase(&vma->vm_rb, &mm->mm_rb); @@ -499,7 +501,8 @@ static inline void __vma_unlink(struct mm_struct * mm, struct vm_area_struct * v mm->mmap_cache = prev; } -static inline int can_vma_merge(struct vm_area_struct * vma, unsigned long vm_flags) +static inline int +can_vma_merge(struct vm_area_struct *vma, unsigned long vm_flags) { if (!vma->vm_file && vma->vm_flags == vm_flags) return 1; diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index bcb57ed21a8d..8db7ca4df8f2 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h @@ -257,7 +257,7 @@ static inline struct zone *next_zone(struct zone *zone) #include <asm/topology.h> /* Returns the number of the current Node. */ -#define numa_node_id() (__cpu_to_node(smp_processor_id())) +#define numa_node_id() (cpu_to_node(smp_processor_id())) #ifndef CONFIG_DISCONTIGMEM extern struct pglist_data contig_page_data; diff --git a/include/linux/module.h b/include/linux/module.h index 5b2fb9d19be3..53b4d2ea5987 100644 --- a/include/linux/module.h +++ b/include/linux/module.h @@ -33,12 +33,19 @@ #endif #define MODULE_NAME_LEN (64 - sizeof(unsigned long)) + struct kernel_symbol { unsigned long value; const char *name; }; +struct modversion_info +{ + unsigned long crc; + char name[MODULE_NAME_LEN]; +}; + /* These are either module local, or the kernel's dummy ones. */ extern int init_module(void); extern void cleanup_module(void); @@ -92,7 +99,7 @@ extern const struct gtype##_id __mod_##gtype##_table \ */ #define MODULE_LICENSE(license) \ static const char __module_license[] \ - __attribute__((section(".init.license"))) = license + __attribute__((section(".init.license"), unused)) = license #else /* !MODULE */ @@ -119,6 +126,7 @@ struct kernel_symbol_group unsigned int num_syms; const struct kernel_symbol *syms; + const unsigned long *crcs; }; /* Given an address, look for it in the exception tables */ @@ -134,29 +142,52 @@ struct exception_table #ifdef CONFIG_MODULES + /* Get/put a kernel symbol (calls must be symmetric) */ void *__symbol_get(const char *symbol); void *__symbol_get_gpl(const char *symbol); #define symbol_get(x) ((typeof(&x))(__symbol_get(MODULE_SYMBOL_PREFIX #x))) +#ifdef __GENKSYMS__ + +/* genksyms doesn't handle GPL-only symbols yet */ +#define EXPORT_SYMBOL_GPL EXPORT_SYMBOL + +#else + +#ifdef CONFIG_MODVERSIONS +/* Mark the CRC weak since genksyms apparently decides not to + * generate a checksums for some symbols */ +#define __CRC_SYMBOL(sym, sec) \ + extern void *__crc_##sym __attribute__((weak)); \ + static const unsigned long __kcrctab_##sym \ + __attribute__((section("__kcrctab" sec), unused)) \ + = (unsigned long) &__crc_##sym; +#else +#define __CRC_SYMBOL(sym, sec) +#endif + /* For every exported symbol, place a struct in the __ksymtab section */ -#define EXPORT_SYMBOL(sym) \ +#define __EXPORT_SYMBOL(sym, sec) \ + __CRC_SYMBOL(sym, sec) \ static const char __kstrtab_##sym[] \ __attribute__((section("__ksymtab_strings"))) \ = MODULE_SYMBOL_PREFIX #sym; \ static const struct kernel_symbol __ksymtab_##sym \ - __attribute__((section("__ksymtab"))) \ + __attribute__((section("__ksymtab" sec), unused)) \ = { (unsigned long)&sym, __kstrtab_##sym } -#define EXPORT_SYMBOL_NOVERS(sym) EXPORT_SYMBOL(sym) +#define EXPORT_SYMBOL(sym) \ + __EXPORT_SYMBOL(sym, "") #define EXPORT_SYMBOL_GPL(sym) \ - static const char __kstrtab_##sym[] \ - __attribute__((section("__ksymtab_strings"))) \ - = MODULE_SYMBOL_PREFIX #sym; \ - static const struct kernel_symbol __ksymtab_##sym \ - __attribute__((section("__gpl_ksymtab"))) \ - = { (unsigned long)&sym, __kstrtab_##sym } + __EXPORT_SYMBOL(sym, "_gpl") + +#endif + +/* We don't mangle the actual symbol anymore, so no need for + * special casing EXPORT_SYMBOL_NOVERS */ +#define EXPORT_SYMBOL_NOVERS(sym) EXPORT_SYMBOL(sym) struct module_ref { diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index a50e09ff79ea..0327a8421c9d 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h @@ -97,15 +97,20 @@ struct page_state { unsigned long pswpin; /* swap reads */ unsigned long pswpout; /* swap writes */ unsigned long pgalloc; /* page allocations */ + unsigned long pgfree; /* page freeings */ unsigned long pgactivate; /* pages moved inactive->active */ unsigned long pgdeactivate; /* pages moved active->inactive */ unsigned long pgfault; /* faults (major+minor) */ unsigned long pgmajfault; /* faults (major only) */ + unsigned long pgscan; /* pages scanned by page reclaim */ unsigned long pgrefill; /* inspected in refill_inactive_zone */ unsigned long pgsteal; /* total pages reclaimed */ + unsigned long pginodesteal; /* pages reclaimed via inode freeing */ unsigned long kswapd_steal; /* pages reclaimed by kswapd */ + + unsigned long kswapd_inodesteal;/* reclaimed via kswapd inode freeing */ unsigned long pageoutrun; /* kswapd's calls to page reclaim */ unsigned long allocstall; /* direct reclaim calls */ unsigned long pgrotated; /* pages rotated to tail of the LRU */ diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 94f9d488c2f7..86016d76a3a1 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h @@ -582,7 +582,10 @@ #define PCI_DEVICE_ID_SI_7016 0x7016 #define PCI_VENDOR_ID_HP 0x103c -#define PCI_DEVICE_ID_HP_DONNER_GFX 0x1008 +#define PCI_DEVICE_ID_HP_VISUALIZE_EG 0x1005 +#define PCI_DEVICE_ID_HP_VISUALIZE_FX6 0x1006 +#define PCI_DEVICE_ID_HP_VISUALIZE_FX4 0x1008 +#define PCI_DEVICE_ID_HP_VISUALIZE_FX2 0x100a #define PCI_DEVICE_ID_HP_TACHYON 0x1028 #define PCI_DEVICE_ID_HP_TACHLITE 0x1029 #define PCI_DEVICE_ID_HP_J2585A 0x1030 @@ -591,6 +594,7 @@ #define PCI_DEVICE_ID_HP_DIVA_TOSCA1 0x1049 #define PCI_DEVICE_ID_HP_DIVA_TOSCA2 0x104A #define PCI_DEVICE_ID_HP_DIVA_MAESTRO 0x104B +#define PCI_DEVICE_ID_HP_VISUALIZE_FXE 0x108b #define PCI_DEVICE_ID_HP_DIVA_HALFDOME 0x1223 #define PCI_DEVICE_ID_HP_DIVA_KEYSTONE 0x1226 #define PCI_DEVICE_ID_HP_DIVA_POWERBAR 0x1227 diff --git a/include/linux/sched.h b/include/linux/sched.h index 15a951d2d27e..3a1367bacd1c 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h @@ -343,7 +343,7 @@ struct task_struct { unsigned long it_real_incr, it_prof_incr, it_virt_incr; struct timer_list real_timer; unsigned long utime, stime, cutime, cstime; - unsigned long start_time; + u64 start_time; /* mm fault and swap info: this can arguably be seen as either mm-specific or thread-specific */ unsigned long min_flt, maj_flt, nswap, cmin_flt, cmaj_flt, cnswap; /* process credentials */ diff --git a/include/linux/slab.h b/include/linux/slab.h index 997bc710bfb0..220a672af798 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h @@ -17,13 +17,12 @@ typedef struct kmem_cache_s kmem_cache_t; /* flags for kmem_cache_alloc() */ #define SLAB_NOFS GFP_NOFS #define SLAB_NOIO GFP_NOIO -#define SLAB_NOHIGHIO GFP_NOHIGHIO #define SLAB_ATOMIC GFP_ATOMIC #define SLAB_USER GFP_USER #define SLAB_KERNEL GFP_KERNEL #define SLAB_DMA GFP_DMA -#define SLAB_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_HIGHIO|__GFP_FS|__GFP_COLD|__GFP_NOWARN) +#define SLAB_LEVEL_MASK (__GFP_WAIT|__GFP_HIGH|__GFP_IO|__GFP_FS|__GFP_COLD|__GFP_NOWARN) #define SLAB_NO_GROW 0x00001000UL /* don't grow a cache */ /* flags to pass to kmem_cache_create(). diff --git a/include/linux/times.h b/include/linux/times.h index 1174e9f88ea2..9895fd31bd5f 100644 --- a/include/linux/times.h +++ b/include/linux/times.h @@ -2,7 +2,30 @@ #define _LINUX_TIMES_H #ifdef __KERNEL__ +#include <asm/div64.h> +#include <asm/types.h> + +#if (HZ % USER_HZ)==0 # define jiffies_to_clock_t(x) ((x) / (HZ / USER_HZ)) +#else +# define jiffies_to_clock_t(x) ((clock_t) jiffies_64_to_clock_t((u64) x)) +#endif + +static inline u64 jiffies_64_to_clock_t(u64 x) +{ +#if (HZ % USER_HZ)==0 + do_div(x, HZ / USER_HZ); +#else + /* + * There are better ways that don't overflow early, + * but even this doesn't overflow in hundreds of years + * in 64 bits, so.. + */ + x *= USER_HZ; + do_div(x, HZ); +#endif + return x; +} #endif struct tms { diff --git a/include/linux/usb.h b/include/linux/usb.h index 9f465bfd8179..cb5c0db14aa1 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h @@ -554,7 +554,6 @@ extern int usb_disabled(void); #define URB_NO_FSBR 0x0020 /* UHCI-specific */ #define URB_ZERO_PACKET 0x0040 /* Finish bulk OUTs with short packet */ #define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt needed */ -#define URB_TIMEOUT_KILLED 0x1000 /* only set by HCD! */ struct usb_iso_packet_descriptor { unsigned int offset; diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index bac8b2e3e666..7458d1f49472 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h @@ -163,6 +163,7 @@ struct xfrm_usersa_info { struct xfrm_usersa_id { xfrm_address_t saddr; __u32 spi; + __u16 family; __u8 proto; }; diff --git a/include/net/route.h b/include/net/route.h index ae62dc4e5683..ba15b5140798 100644 --- a/include/net/route.h +++ b/include/net/route.h @@ -167,7 +167,7 @@ static inline int ip_route_connect(struct rtable **rp, u32 dst, ip_rt_put(*rp); *rp = NULL; } - return ip_route_output_flow(rp, &fl, sk, 1); + return ip_route_output_flow(rp, &fl, sk, 0); } static inline int ip_route_newports(struct rtable **rp, u16 sport, u16 dport, diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 82d2187eeb2a..0f331126faa4 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h @@ -105,7 +105,6 @@ struct xfrm_state u16 family; xfrm_address_t saddr; int header_len; - int trailer_len; } props; struct xfrm_lifetime_cfg lft; |
