diff options
-rw-r--r-- | MAINTAINERS | 9 | ||||
-rw-r--r-- | arch/parisc/Makefile | 3 | ||||
-rw-r--r-- | arch/parisc/configs/default_defconfig (renamed from arch/parisc/defconfig) | 0 | ||||
-rw-r--r-- | arch/parisc/kernel/firmware.c | 27 | ||||
-rw-r--r-- | arch/parisc/kernel/hardware.c | 13 | ||||
-rw-r--r-- | arch/parisc/kernel/head.S | 7 | ||||
-rw-r--r-- | arch/parisc/kernel/pdc_cons.c | 30 | ||||
-rw-r--r-- | arch/parisc/kernel/syscall_table.S | 5 | ||||
-rw-r--r-- | arch/parisc/kernel/traps.c | 25 | ||||
-rw-r--r-- | drivers/parisc/pdc_stable.c | 6 | ||||
-rw-r--r-- | drivers/parisc/sba_iommu.c | 4 | ||||
-rw-r--r-- | include/asm-parisc/elf.h | 22 | ||||
-rw-r--r-- | include/asm-parisc/fixmap.h | 9 | ||||
-rw-r--r-- | include/asm-parisc/futex.h | 10 | ||||
-rw-r--r-- | include/asm-parisc/pdc.h | 3 | ||||
-rw-r--r-- | include/asm-parisc/pgalloc.h | 4 | ||||
-rw-r--r-- | include/asm-parisc/pgtable.h | 8 | ||||
-rw-r--r-- | include/asm-parisc/unistd.h | 5 |
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 | |||
266 | W: http://www.lesswatts.org/projects/acpi/ | 266 | W: http://www.lesswatts.org/projects/acpi/ |
267 | S: Maintained | 267 | S: Maintained |
268 | 268 | ||
269 | AD1889 ALSA SOUND DRIVER | ||
270 | P: Kyle McMartin | ||
271 | M: kyle@parisc-linux.org | ||
272 | P: Thibaut Varene | ||
273 | M: T-Bone@parisc-linux.org | ||
274 | W: http://wiki.parisc-linux.org/AD1889 | ||
275 | L: linux-parisc@vger.kernel.org | ||
276 | S: Maintained | ||
277 | |||
269 | ADM1025 HARDWARE MONITOR DRIVER | 278 | ADM1025 HARDWARE MONITOR DRIVER |
270 | P: Jean Delvare | 279 | P: Jean Delvare |
271 | M: khali@linux-fr.org | 280 | M: 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 | |||
20 | KBUILD_DEFCONFIG := default_defconfig | ||
21 | |||
19 | NM = sh $(srctree)/arch/parisc/nm | 22 | NM = sh $(srctree)/arch/parisc/nm |
20 | CHECKFLAGS += -D__hppa__=1 | 23 | CHECKFLAGS += -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 */ | ||
1084 | static int __attribute__((aligned(8))) iodc_retbuf[32]; | ||
1085 | static 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 | */ |
1094 | int pdc_iodc_print(unsigned char *str, unsigned count) | 1097 | int 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 | |||
1135 | print: | ||
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 | */ |
1143 | int pdc_iodc_getc(void) | 1152 | int 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 |
27 | ENTRY(boot_args) | 28 | ENTRY(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 */ |
32 | END(boot_args) | 33 | END(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: | |||
343 | ENDPROC(stext) | 344 | ENDPROC(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 | ||
55 | static spinlock_t pdc_console_lock = SPIN_LOCK_UNLOCKED; | ||
55 | 56 | ||
56 | static void pdc_console_write(struct console *co, const char *s, unsigned count) | 57 | static 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 | ||
61 | void pdc_printf(const char *fmt, ...) | 69 | int 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 | ||
74 | int pdc_console_poll_key(struct console *co) | 78 | return c; |
75 | { | ||
76 | return pdc_iodc_getc(); | ||
77 | } | 79 | } |
78 | 80 | ||
79 | static int pdc_console_setup(struct console *co, char *options) | 81 | static 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 @@ | |||
51 | DEFINE_SPINLOCK(pa_dbit_lock); | 51 | DEFINE_SPINLOCK(pa_dbit_lock); |
52 | #endif | 52 | #endif |
53 | 53 | ||
54 | void parisc_show_stack(struct task_struct *t, unsigned long *sp, | ||
55 | struct pt_regs *regs); | ||
56 | |||
54 | static int printbinary(char *buf, unsigned long x, int nbits) | 57 | static 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 | ||
184 | void show_stack(struct task_struct *task, unsigned long *s) | 189 | void 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 | ||
191 | HERE: | 204 | HERE: |
@@ -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 | ||
220 | show_stack: | ||
207 | do_show_stack(&info); | 221 | do_show_stack(&info); |
208 | } | 222 | } |
209 | 223 | ||
224 | void show_stack(struct task_struct *t, unsigned long *sp) | ||
225 | { | ||
226 | return parisc_show_stack(t, sp, NULL); | ||
227 | } | ||
228 | |||
210 | int is_valid_bugaddr(unsigned long iaoq) | 229 | int 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 | ||
317 | unsigned long ptr_to_pide(struct ioc *ioc, unsigned long *res_ptr, | 317 | static 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 | ||
229 | typedef unsigned long elf_greg_t; | 229 | typedef 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__ |
24 | extern 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); | |||
645 | void pdc_io_reset(void); | 645 | void pdc_io_reset(void); |
646 | void pdc_io_reset_devices(void); | 646 | void pdc_io_reset_devices(void); |
647 | int pdc_iodc_getc(void); | 647 | int pdc_iodc_getc(void); |
648 | int pdc_iodc_print(unsigned char *str, unsigned count); | 648 | int pdc_iodc_print(const unsigned char *str, unsigned count); |
649 | void pdc_printf(const char *fmt, ...); | ||
650 | 649 | ||
651 | void pdc_emergency_unlock(void); | 650 | void pdc_emergency_unlock(void); |
652 | int pdc_sti_call(unsigned long func, unsigned long flags, | 651 | int 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 | ||
141 | static inline void pte_free_kernel(struct mm_struct *mm, struct page *pte) | 141 | static 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__ | ||
120 | extern 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 */ |