aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS9
-rw-r--r--arch/parisc/Makefile3
-rw-r--r--arch/parisc/configs/default_defconfig (renamed from arch/parisc/defconfig)0
-rw-r--r--arch/parisc/kernel/firmware.c27
-rw-r--r--arch/parisc/kernel/hardware.c13
-rw-r--r--arch/parisc/kernel/head.S7
-rw-r--r--arch/parisc/kernel/pdc_cons.c30
-rw-r--r--arch/parisc/kernel/syscall_table.S5
-rw-r--r--arch/parisc/kernel/traps.c25
-rw-r--r--drivers/parisc/pdc_stable.c6
-rw-r--r--drivers/parisc/sba_iommu.c4
-rw-r--r--include/asm-parisc/elf.h22
-rw-r--r--include/asm-parisc/fixmap.h9
-rw-r--r--include/asm-parisc/futex.h10
-rw-r--r--include/asm-parisc/pdc.h3
-rw-r--r--include/asm-parisc/pgalloc.h4
-rw-r--r--include/asm-parisc/pgtable.h8
-rw-r--r--include/asm-parisc/unistd.h5
18 files changed, 125 insertions, 65 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index 0f95a4a787a6..6d628fb6ee01 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -266,6 +266,15 @@ L: linux-acpi@vger.kernel.org
266W: http://www.lesswatts.org/projects/acpi/ 266W: http://www.lesswatts.org/projects/acpi/
267S: Maintained 267S: Maintained
268 268
269AD1889 ALSA SOUND DRIVER
270P: Kyle McMartin
271M: kyle@parisc-linux.org
272P: Thibaut Varene
273M: T-Bone@parisc-linux.org
274W: http://wiki.parisc-linux.org/AD1889
275L: linux-parisc@vger.kernel.org
276S: Maintained
277
269ADM1025 HARDWARE MONITOR DRIVER 278ADM1025 HARDWARE MONITOR DRIVER
270P: Jean Delvare 279P: Jean Delvare
271M: khali@linux-fr.org 280M: khali@linux-fr.org
diff --git a/arch/parisc/Makefile b/arch/parisc/Makefile
index e574de4efb36..5ddad7bd60ac 100644
--- a/arch/parisc/Makefile
+++ b/arch/parisc/Makefile
@@ -16,6 +16,9 @@
16# Modified for PA-RISC Linux by Paul Lahaie, Alex deVries, 16# Modified for PA-RISC Linux by Paul Lahaie, Alex deVries,
17# Mike Shaver, Helge Deller and Martin K. Petersen 17# Mike Shaver, Helge Deller and Martin K. Petersen
18# 18#
19
20KBUILD_DEFCONFIG := default_defconfig
21
19NM = sh $(srctree)/arch/parisc/nm 22NM = sh $(srctree)/arch/parisc/nm
20CHECKFLAGS += -D__hppa__=1 23CHECKFLAGS += -D__hppa__=1
21 24
diff --git a/arch/parisc/defconfig b/arch/parisc/configs/default_defconfig
index 448a757b06c6..448a757b06c6 100644
--- a/arch/parisc/defconfig
+++ b/arch/parisc/configs/default_defconfig
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c
index 4ab83d56974d..7177a6cd1b7f 100644
--- a/arch/parisc/kernel/firmware.c
+++ b/arch/parisc/kernel/firmware.c
@@ -1080,6 +1080,9 @@ void pdc_io_reset_devices(void)
1080 spin_unlock_irqrestore(&pdc_lock, flags); 1080 spin_unlock_irqrestore(&pdc_lock, flags);
1081} 1081}
1082 1082
1083/* locked by pdc_console_lock */
1084static int __attribute__((aligned(8))) iodc_retbuf[32];
1085static char __attribute__((aligned(64))) iodc_dbuf[4096];
1083 1086
1084/** 1087/**
1085 * pdc_iodc_print - Console print using IODC. 1088 * pdc_iodc_print - Console print using IODC.
@@ -1091,24 +1094,20 @@ void pdc_io_reset_devices(void)
1091 * Since the HP console requires CR+LF to perform a 'newline', we translate 1094 * Since the HP console requires CR+LF to perform a 'newline', we translate
1092 * "\n" to "\r\n". 1095 * "\n" to "\r\n".
1093 */ 1096 */
1094int pdc_iodc_print(unsigned char *str, unsigned count) 1097int pdc_iodc_print(const unsigned char *str, unsigned count)
1095{ 1098{
1096 /* XXX Should we spinlock posx usage */
1097 static int posx; /* for simple TAB-Simulation... */ 1099 static int posx; /* for simple TAB-Simulation... */
1098 int __attribute__((aligned(8))) iodc_retbuf[32];
1099 char __attribute__((aligned(64))) iodc_dbuf[4096];
1100 unsigned int i; 1100 unsigned int i;
1101 unsigned long flags; 1101 unsigned long flags;
1102 1102
1103 memset(iodc_dbuf, 0, 4096); 1103 for (i = 0; i < count && i < 79;) {
1104 for (i = 0; i < count && i < 2048;) {
1105 switch(str[i]) { 1104 switch(str[i]) {
1106 case '\n': 1105 case '\n':
1107 iodc_dbuf[i+0] = '\r'; 1106 iodc_dbuf[i+0] = '\r';
1108 iodc_dbuf[i+1] = '\n'; 1107 iodc_dbuf[i+1] = '\n';
1109 i += 2; 1108 i += 2;
1110 posx = 0; 1109 posx = 0;
1111 break; 1110 goto print;
1112 case '\t': 1111 case '\t':
1113 while (posx & 7) { 1112 while (posx & 7) {
1114 iodc_dbuf[i] = ' '; 1113 iodc_dbuf[i] = ' ';
@@ -1124,6 +1123,16 @@ int pdc_iodc_print(unsigned char *str, unsigned count)
1124 } 1123 }
1125 } 1124 }
1126 1125
1126 /* if we're at the end of line, and not already inserting a newline,
1127 * insert one anyway. iodc console doesn't claim to support >79 char
1128 * lines. don't account for this in the return value.
1129 */
1130 if (i == 79 && iodc_dbuf[i-1] != '\n') {
1131 iodc_dbuf[i+0] = '\r';
1132 iodc_dbuf[i+1] = '\n';
1133 }
1134
1135print:
1127 spin_lock_irqsave(&pdc_lock, flags); 1136 spin_lock_irqsave(&pdc_lock, flags);
1128 real32_call(PAGE0->mem_cons.iodc_io, 1137 real32_call(PAGE0->mem_cons.iodc_io,
1129 (unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT, 1138 (unsigned long)PAGE0->mem_cons.hpa, ENTRY_IO_COUT,
@@ -1142,11 +1151,9 @@ int pdc_iodc_print(unsigned char *str, unsigned count)
1142 */ 1151 */
1143int pdc_iodc_getc(void) 1152int pdc_iodc_getc(void)
1144{ 1153{
1145 unsigned long flags;
1146 static int __attribute__((aligned(8))) iodc_retbuf[32];
1147 static char __attribute__((aligned(64))) iodc_dbuf[4096];
1148 int ch; 1154 int ch;
1149 int status; 1155 int status;
1156 unsigned long flags;
1150 1157
1151 /* Bail if no console input device. */ 1158 /* Bail if no console input device. */
1152 if (!PAGE0->mem_kbd.iodc_io) 1159 if (!PAGE0->mem_kbd.iodc_io)
diff --git a/arch/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c
index 84b9611a9228..f48a640b55fb 100644
--- a/arch/parisc/kernel/hardware.c
+++ b/arch/parisc/kernel/hardware.c
@@ -274,7 +274,18 @@ static struct hp_hardware hp_hardware_list[] __devinitdata = {
274 {HPHW_NPROC,0x887,0x4,0x91,"Storm Peak Slow"}, 274 {HPHW_NPROC,0x887,0x4,0x91,"Storm Peak Slow"},
275 {HPHW_NPROC,0x888,0x4,0x91,"Storm Peak Fast DC-"}, 275 {HPHW_NPROC,0x888,0x4,0x91,"Storm Peak Fast DC-"},
276 {HPHW_NPROC,0x889,0x4,0x91,"Storm Peak Fast"}, 276 {HPHW_NPROC,0x889,0x4,0x91,"Storm Peak Fast"},
277 {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak"}, 277 {HPHW_NPROC,0x88A,0x4,0x91,"Crestone Peak Slow"},
278 {HPHW_NPROC,0x88C,0x4,0x91,"Orca Mako+"},
279 {HPHW_NPROC,0x88D,0x4,0x91,"Rainier/Medel Mako+ Slow"},
280 {HPHW_NPROC,0x88E,0x4,0x91,"Rainier/Medel Mako+ Fast"},
281 {HPHW_NPROC,0x894,0x4,0x91,"Mt. Hamilton Fast Mako+"},
282 {HPHW_NPROC,0x895,0x4,0x91,"Storm Peak Slow Mako+"},
283 {HPHW_NPROC,0x896,0x4,0x91,"Storm Peak Fast Mako+"},
284 {HPHW_NPROC,0x897,0x4,0x91,"Storm Peak DC- Slow Mako+"},
285 {HPHW_NPROC,0x898,0x4,0x91,"Storm Peak DC- Fast Mako+"},
286 {HPHW_NPROC,0x899,0x4,0x91,"Mt. Hamilton Slow Mako+"},
287 {HPHW_NPROC,0x89B,0x4,0x91,"Crestone Peak Mako+ Slow"},
288 {HPHW_NPROC,0x89C,0x4,0x91,"Crestone Peak Mako+ Fast"},
278 {HPHW_A_DIRECT, 0x004, 0x0000D, 0x00, "Arrakis MUX"}, 289 {HPHW_A_DIRECT, 0x004, 0x0000D, 0x00, "Arrakis MUX"},
279 {HPHW_A_DIRECT, 0x005, 0x0000D, 0x00, "Dyun Kiuh MUX"}, 290 {HPHW_A_DIRECT, 0x005, 0x0000D, 0x00, "Dyun Kiuh MUX"},
280 {HPHW_A_DIRECT, 0x006, 0x0000D, 0x00, "Baat Kiuh AP/MUX (40299B)"}, 291 {HPHW_A_DIRECT, 0x006, 0x0000D, 0x00, "Baat Kiuh AP/MUX (40299B)"},
diff --git a/arch/parisc/kernel/head.S b/arch/parisc/kernel/head.S
index a7b8859488bb..ec2482dc1beb 100644
--- a/arch/parisc/kernel/head.S
+++ b/arch/parisc/kernel/head.S
@@ -20,10 +20,11 @@
20#include <asm/pgtable.h> 20#include <asm/pgtable.h>
21 21
22#include <linux/linkage.h> 22#include <linux/linkage.h>
23#include <linux/init.h>
23 24
24 .level LEVEL 25 .level LEVEL
25 26
26 .data 27 __INITDATA
27ENTRY(boot_args) 28ENTRY(boot_args)
28 .word 0 /* arg0 */ 29 .word 0 /* arg0 */
29 .word 0 /* arg1 */ 30 .word 0 /* arg1 */
@@ -31,7 +32,7 @@ ENTRY(boot_args)
31 .word 0 /* arg3 */ 32 .word 0 /* arg3 */
32END(boot_args) 33END(boot_args)
33 34
34 .text 35 .section .text.head
35 .align 4 36 .align 4
36 .import init_thread_union,data 37 .import init_thread_union,data
37 .import fault_vector_20,code /* IVA parisc 2.0 32 bit */ 38 .import fault_vector_20,code /* IVA parisc 2.0 32 bit */
@@ -343,7 +344,7 @@ smp_slave_stext:
343ENDPROC(stext) 344ENDPROC(stext)
344 345
345#ifndef CONFIG_64BIT 346#ifndef CONFIG_64BIT
346 .data 347 .section .data.read_mostly
347 348
348 .align 4 349 .align 4
349 .export $global$,data 350 .export $global$,data
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c
index 33b1f84441b1..ccb68090781e 100644
--- a/arch/parisc/kernel/pdc_cons.c
+++ b/arch/parisc/kernel/pdc_cons.c
@@ -52,28 +52,30 @@
52#include <linux/tty.h> 52#include <linux/tty.h>
53#include <asm/pdc.h> /* for iodc_call() proto and friends */ 53#include <asm/pdc.h> /* for iodc_call() proto and friends */
54 54
55static spinlock_t pdc_console_lock = SPIN_LOCK_UNLOCKED;
55 56
56static void pdc_console_write(struct console *co, const char *s, unsigned count) 57static void pdc_console_write(struct console *co, const char *s, unsigned count)
57{ 58{
58 pdc_iodc_print(s, count); 59 int i = 0;
60 unsigned long flags;
61
62 spin_lock_irqsave(&pdc_console_lock, flags);
63 do {
64 i += pdc_iodc_print(s + i, count - i);
65 } while (i < count);
66 spin_unlock_irqrestore(&pdc_console_lock, flags);
59} 67}
60 68
61void pdc_printf(const char *fmt, ...) 69int pdc_console_poll_key(struct console *co)
62{ 70{
63 va_list args; 71 int c;
64 char buf[1024]; 72 unsigned long flags;
65 int i, len;
66
67 va_start(args, fmt);
68 len = vscnprintf(buf, sizeof(buf), fmt, args);
69 va_end(args);
70 73
71 pdc_iodc_print(buf, len); 74 spin_lock_irqsave(&pdc_console_lock, flags);
72} 75 c = pdc_iodc_getc();
76 spin_unlock_irqrestore(&pdc_console_lock, flags);
73 77
74int pdc_console_poll_key(struct console *co) 78 return c;
75{
76 return pdc_iodc_getc();
77} 79}
78 80
79static int pdc_console_setup(struct console *co, char *options) 81static int pdc_console_setup(struct console *co, char *options)
diff --git a/arch/parisc/kernel/syscall_table.S b/arch/parisc/kernel/syscall_table.S
index 117438e9eb2a..6b5ac38f5a99 100644
--- a/arch/parisc/kernel/syscall_table.S
+++ b/arch/parisc/kernel/syscall_table.S
@@ -401,9 +401,12 @@
401 ENTRY_COMP(kexec_load) /* 300 */ 401 ENTRY_COMP(kexec_load) /* 300 */
402 ENTRY_COMP(utimensat) 402 ENTRY_COMP(utimensat)
403 ENTRY_COMP(signalfd) 403 ENTRY_COMP(signalfd)
404 ENTRY_COMP(timerfd) 404 ENTRY_SAME(ni_syscall) /* was timerfd */
405 ENTRY_SAME(eventfd) 405 ENTRY_SAME(eventfd)
406 ENTRY_COMP(fallocate) /* 305 */ 406 ENTRY_COMP(fallocate) /* 305 */
407 ENTRY_SAME(timerfd_create)
408 ENTRY_COMP(timerfd_settime)
409 ENTRY_COMP(timerfd_gettime)
407 410
408 /* Nothing yet */ 411 /* Nothing yet */
409 412
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c
index 99fd56939afa..9dc6dc42f9cf 100644
--- a/arch/parisc/kernel/traps.c
+++ b/arch/parisc/kernel/traps.c
@@ -51,6 +51,9 @@
51DEFINE_SPINLOCK(pa_dbit_lock); 51DEFINE_SPINLOCK(pa_dbit_lock);
52#endif 52#endif
53 53
54void parisc_show_stack(struct task_struct *t, unsigned long *sp,
55 struct pt_regs *regs);
56
54static int printbinary(char *buf, unsigned long x, int nbits) 57static int printbinary(char *buf, unsigned long x, int nbits)
55{ 58{
56 unsigned long mask = 1UL << (nbits - 1); 59 unsigned long mask = 1UL << (nbits - 1);
@@ -148,6 +151,8 @@ void show_regs(struct pt_regs *regs)
148 print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]); 151 print_symbol(" IAOQ[1]: %s\n", regs->iaoq[1]);
149 printk(level); 152 printk(level);
150 print_symbol(" RP(r2): %s\n", regs->gr[2]); 153 print_symbol(" RP(r2): %s\n", regs->gr[2]);
154
155 parisc_show_stack(current, NULL, regs);
151} 156}
152 157
153 158
@@ -181,11 +186,19 @@ static void do_show_stack(struct unwind_frame_info *info)
181 printk("\n"); 186 printk("\n");
182} 187}
183 188
184void show_stack(struct task_struct *task, unsigned long *s) 189void parisc_show_stack(struct task_struct *task, unsigned long *sp,
190 struct pt_regs *regs)
185{ 191{
186 struct unwind_frame_info info; 192 struct unwind_frame_info info;
193 struct task_struct *t;
194
195 t = task ? task : current;
196 if (regs) {
197 unwind_frame_init(&info, t, regs);
198 goto show_stack;
199 }
187 200
188 if (!task) { 201 if (t == current) {
189 unsigned long sp; 202 unsigned long sp;
190 203
191HERE: 204HERE:
@@ -201,12 +214,18 @@ HERE:
201 unwind_frame_init(&info, current, &r); 214 unwind_frame_init(&info, current, &r);
202 } 215 }
203 } else { 216 } else {
204 unwind_frame_init_from_blocked_task(&info, task); 217 unwind_frame_init_from_blocked_task(&info, t);
205 } 218 }
206 219
220show_stack:
207 do_show_stack(&info); 221 do_show_stack(&info);
208} 222}
209 223
224void show_stack(struct task_struct *t, unsigned long *sp)
225{
226 return parisc_show_stack(t, sp, NULL);
227}
228
210int is_valid_bugaddr(unsigned long iaoq) 229int is_valid_bugaddr(unsigned long iaoq)
211{ 230{
212 return 1; 231 return 1;
diff --git a/drivers/parisc/pdc_stable.c b/drivers/parisc/pdc_stable.c
index de34aa9d3136..f9f9a5f1bbd0 100644
--- a/drivers/parisc/pdc_stable.c
+++ b/drivers/parisc/pdc_stable.c
@@ -829,7 +829,7 @@ static ssize_t pdcs_autoboot_write(struct kobject *kobj,
829 struct kobj_attribute *attr, 829 struct kobj_attribute *attr,
830 const char *buf, size_t count) 830 const char *buf, size_t count)
831{ 831{
832 return pdcs_auto_write(kset, attr, buf, count, PF_AUTOBOOT); 832 return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOBOOT);
833} 833}
834 834
835/** 835/**
@@ -845,7 +845,7 @@ static ssize_t pdcs_autosearch_write(struct kobject *kobj,
845 struct kobj_attribute *attr, 845 struct kobj_attribute *attr,
846 const char *buf, size_t count) 846 const char *buf, size_t count)
847{ 847{
848 return pdcs_auto_write(kset, attr, buf, count, PF_AUTOSEARCH); 848 return pdcs_auto_write(kobj, attr, buf, count, PF_AUTOSEARCH);
849} 849}
850 850
851/** 851/**
@@ -1066,7 +1066,7 @@ pdc_stable_init(void)
1066 } 1066 }
1067 1067
1068 /* Don't forget the root entries */ 1068 /* Don't forget the root entries */
1069 error = sysfs_create_group(stable_kobj, pdcs_attr_group); 1069 error = sysfs_create_group(stable_kobj, &pdcs_attr_group);
1070 1070
1071 /* register the paths kset as a child of the stable kset */ 1071 /* register the paths kset as a child of the stable kset */
1072 paths_kset = kset_create_and_add("paths", NULL, stable_kobj); 1072 paths_kset = kset_create_and_add("paths", NULL, stable_kobj);
diff --git a/drivers/parisc/sba_iommu.c b/drivers/parisc/sba_iommu.c
index bdbe780e21c5..8c4d2c13d5f2 100644
--- a/drivers/parisc/sba_iommu.c
+++ b/drivers/parisc/sba_iommu.c
@@ -314,8 +314,8 @@ sba_dump_sg( struct ioc *ioc, struct scatterlist *startsg, int nents)
314#define RESMAP_MASK(n) (~0UL << (BITS_PER_LONG - (n))) 314#define RESMAP_MASK(n) (~0UL << (BITS_PER_LONG - (n)))
315#define RESMAP_IDX_MASK (sizeof(unsigned long) - 1) 315#define RESMAP_IDX_MASK (sizeof(unsigned long) - 1)
316 316
317unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr, 317static unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr,
318 unsigned int bitshiftcnt) 318 unsigned int bitshiftcnt)
319{ 319{
320 return (((unsigned long)res_ptr - (unsigned long)ioc->res_map) << 3) 320 return (((unsigned long)res_ptr - (unsigned long)ioc->res_map) << 3)
321 + bitshiftcnt; 321 + bitshiftcnt;
diff --git a/include/asm-parisc/elf.h b/include/asm-parisc/elf.h
index ce0c0d844c7d..d0a4a8262818 100644
--- a/include/asm-parisc/elf.h
+++ b/include/asm-parisc/elf.h
@@ -204,7 +204,7 @@ typedef struct elf64_fdesc {
204/* 204/*
205 * The following definitions are those for 32-bit ELF binaries on a 32-bit 205 * The following definitions are those for 32-bit ELF binaries on a 32-bit
206 * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries 206 * kernel and for 64-bit binaries on a 64-bit kernel. To run 32-bit binaries
207 * on a 64-bit kernel, arch/parisc64/kernel/binfmt_elf32.c defines these 207 * on a 64-bit kernel, arch/parisc/kernel/binfmt_elf32.c defines these
208 * macros appropriately and then #includes binfmt_elf.c, which then includes 208 * macros appropriately and then #includes binfmt_elf.c, which then includes
209 * this file. 209 * this file.
210 */ 210 */
@@ -216,26 +216,25 @@ typedef struct elf64_fdesc {
216 * Note that this header file is used by default in fs/binfmt_elf.c. So 216 * Note that this header file is used by default in fs/binfmt_elf.c. So
217 * the following macros are for the default case. However, for the 64 217 * the following macros are for the default case. However, for the 64
218 * bit kernel we also support 32 bit parisc binaries. To do that 218 * bit kernel we also support 32 bit parisc binaries. To do that
219 * arch/parisc64/kernel/binfmt_elf32.c defines its own set of these 219 * arch/parisc/kernel/binfmt_elf32.c defines its own set of these
220 * macros, and then it includes fs/binfmt_elf.c to provide an alternate 220 * macros, and then it includes fs/binfmt_elf.c to provide an alternate
221 * elf binary handler for 32 bit binaries (on the 64 bit kernel). 221 * elf binary handler for 32 bit binaries (on the 64 bit kernel).
222 */ 222 */
223#ifdef CONFIG_64BIT 223#ifdef CONFIG_64BIT
224#define ELF_CLASS ELFCLASS64 224#define ELF_CLASS ELFCLASS64
225#else 225#else
226#define ELF_CLASS ELFCLASS32 226#define ELF_CLASS ELFCLASS32
227#endif 227#endif
228 228
229typedef unsigned long elf_greg_t; 229typedef unsigned long elf_greg_t;
230 230
231/* This yields a string that ld.so will use to load implementation 231/*
232 specific libraries for optimization. This is more specific in 232 * This yields a string that ld.so will use to load implementation
233 intent than poking at uname or /proc/cpuinfo. 233 * specific libraries for optimization. This is more specific in
234 234 * intent than poking at uname or /proc/cpuinfo.
235 For the moment, we have only optimizations for the Intel generations, 235 */
236 but that could change... */
237 236
238#define ELF_PLATFORM ("PARISC\0" /*+((boot_cpu_data.x86-3)*5) */) 237#define ELF_PLATFORM ("PARISC\0")
239 238
240#define SET_PERSONALITY(ex, ibcs2) \ 239#define SET_PERSONALITY(ex, ibcs2) \
241 current->personality = PER_LINUX; \ 240 current->personality = PER_LINUX; \
@@ -310,7 +309,7 @@ struct pt_regs; /* forward declaration... */
310#define ELF_OSABI ELFOSABI_LINUX 309#define ELF_OSABI ELFOSABI_LINUX
311 310
312/* %r23 is set by ld.so to a pointer to a function which might be 311/* %r23 is set by ld.so to a pointer to a function which might be
313 registered using atexit. This provides a mean for the dynamic 312 registered using atexit. This provides a means for the dynamic
314 linker to call DT_FINI functions for shared libraries that have 313 linker to call DT_FINI functions for shared libraries that have
315 been loaded before the code runs. 314 been loaded before the code runs.
316 315
@@ -339,6 +338,5 @@ struct pt_regs; /* forward declaration... */
339 but it's not easy, and we've already done it here. */ 338 but it's not easy, and we've already done it here. */
340 339
341#define ELF_HWCAP 0 340#define ELF_HWCAP 0
342/* (boot_cpu_data.x86_capability) */
343 341
344#endif 342#endif
diff --git a/include/asm-parisc/fixmap.h b/include/asm-parisc/fixmap.h
index a5caf4b122b7..de3fe3a18229 100644
--- a/include/asm-parisc/fixmap.h
+++ b/include/asm-parisc/fixmap.h
@@ -20,4 +20,11 @@
20#define KERNEL_MAP_START (GATEWAY_PAGE_SIZE) 20#define KERNEL_MAP_START (GATEWAY_PAGE_SIZE)
21#define KERNEL_MAP_END (TMPALIAS_MAP_START) 21#define KERNEL_MAP_END (TMPALIAS_MAP_START)
22 22
23#endif 23#ifndef __ASSEMBLY__
24extern void *vmalloc_start;
25#define PCXL_DMA_MAP_SIZE (8*1024*1024)
26#define VMALLOC_START ((unsigned long)vmalloc_start)
27#define VMALLOC_END (KERNEL_MAP_END)
28#endif /*__ASSEMBLY__*/
29
30#endif /*_ASM_FIXMAP_H*/
diff --git a/include/asm-parisc/futex.h b/include/asm-parisc/futex.h
index dbee6e60aa81..fdc6d055ef7f 100644
--- a/include/asm-parisc/futex.h
+++ b/include/asm-parisc/futex.h
@@ -56,6 +56,12 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
56 int err = 0; 56 int err = 0;
57 int uval; 57 int uval;
58 58
59 /* futex.c wants to do a cmpxchg_inatomic on kernel NULL, which is
60 * our gateway page, and causes no end of trouble...
61 */
62 if (segment_eq(KERNEL_DS, get_fs()) && !uaddr)
63 return -EFAULT;
64
59 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int))) 65 if (!access_ok(VERIFY_WRITE, uaddr, sizeof(int)))
60 return -EFAULT; 66 return -EFAULT;
61 67
@@ -67,5 +73,5 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
67 return uval; 73 return uval;
68} 74}
69 75
70#endif 76#endif /*__KERNEL__*/
71#endif 77#endif /*_ASM_PARISC_FUTEX_H*/
diff --git a/include/asm-parisc/pdc.h b/include/asm-parisc/pdc.h
index deda8c311373..9eaa794c3e4a 100644
--- a/include/asm-parisc/pdc.h
+++ b/include/asm-parisc/pdc.h
@@ -645,8 +645,7 @@ int pdc_soft_power_button(int sw_control);
645void pdc_io_reset(void); 645void pdc_io_reset(void);
646void pdc_io_reset_devices(void); 646void pdc_io_reset_devices(void);
647int pdc_iodc_getc(void); 647int pdc_iodc_getc(void);
648int pdc_iodc_print(unsigned char *str, unsigned count); 648int pdc_iodc_print(const unsigned char *str, unsigned count);
649void pdc_printf(const char *fmt, ...);
650 649
651void pdc_emergency_unlock(void); 650void pdc_emergency_unlock(void);
652int pdc_sti_call(unsigned long func, unsigned long flags, 651int pdc_sti_call(unsigned long func, unsigned long flags,
diff --git a/include/asm-parisc/pgalloc.h b/include/asm-parisc/pgalloc.h
index 3996dfc30a3f..fc987a1c12a8 100644
--- a/include/asm-parisc/pgalloc.h
+++ b/include/asm-parisc/pgalloc.h
@@ -138,10 +138,10 @@ static inline void pte_free_kernel(struct mm_struct *mm, pte_t *pte)
138 free_page((unsigned long)pte); 138 free_page((unsigned long)pte);
139} 139}
140 140
141static inline void pte_free_kernel(struct mm_struct *mm, struct page *pte) 141static inline void pte_free(struct mm_struct *mm, struct page *pte)
142{ 142{
143 pgtable_page_dtor(pte); 143 pgtable_page_dtor(pte);
144 pte_free_kernel(page_address((pte)); 144 pte_free_kernel(mm, page_address(pte));
145} 145}
146 146
147#define check_pgt_cache() do { } while (0) 147#define check_pgt_cache() do { } while (0)
diff --git a/include/asm-parisc/pgtable.h b/include/asm-parisc/pgtable.h
index cd0fa4f73320..dc86adbec916 100644
--- a/include/asm-parisc/pgtable.h
+++ b/include/asm-parisc/pgtable.h
@@ -116,14 +116,6 @@
116 116
117#define FIRST_USER_ADDRESS 0 117#define FIRST_USER_ADDRESS 0
118 118
119#ifndef __ASSEMBLY__
120extern void *vmalloc_start;
121#define PCXL_DMA_MAP_SIZE (8*1024*1024)
122#define VMALLOC_START ((unsigned long)vmalloc_start)
123/* this is a fixmap remnant, see fixmap.h */
124#define VMALLOC_END (KERNEL_MAP_END)
125#endif
126
127/* NB: The tlb miss handlers make certain assumptions about the order */ 119/* NB: The tlb miss handlers make certain assumptions about the order */
128/* of the following bits, so be careful (One example, bits 25-31 */ 120/* of the following bits, so be careful (One example, bits 25-31 */
129/* are moved together in one instruction). */ 121/* are moved together in one instruction). */
diff --git a/include/asm-parisc/unistd.h b/include/asm-parisc/unistd.h
index 081b4ae61866..a7d857f0e4f4 100644
--- a/include/asm-parisc/unistd.h
+++ b/include/asm-parisc/unistd.h
@@ -798,8 +798,11 @@
798#define __NR_timerfd (__NR_Linux + 303) 798#define __NR_timerfd (__NR_Linux + 303)
799#define __NR_eventfd (__NR_Linux + 304) 799#define __NR_eventfd (__NR_Linux + 304)
800#define __NR_fallocate (__NR_Linux + 305) 800#define __NR_fallocate (__NR_Linux + 305)
801#define __NR_timerfd_create (__NR_Linux + 306)
802#define __NR_timerfd_settime (__NR_Linux + 307)
803#define __NR_timerfd_gettime (__NR_Linux + 308)
801 804
802#define __NR_Linux_syscalls (__NR_fallocate + 1) 805#define __NR_Linux_syscalls (__NR_timerfd_gettime + 1)
803 806
804 807
805#define __IGNORE_select /* newselect */ 808#define __IGNORE_select /* newselect */