diff options
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/include/asm/hardware.h | 3 | ||||
-rw-r--r-- | arch/parisc/include/asm/page.h | 6 | ||||
-rw-r--r-- | arch/parisc/include/asm/pdc.h | 7 | ||||
-rw-r--r-- | arch/parisc/include/asm/pgtable.h | 2 | ||||
-rw-r--r-- | arch/parisc/include/asm/prefetch.h | 7 | ||||
-rw-r--r-- | arch/parisc/include/asm/spinlock.h | 2 | ||||
-rw-r--r-- | arch/parisc/kernel/entry.S | 4 | ||||
-rw-r--r-- | arch/parisc/kernel/pacache.S | 38 | ||||
-rw-r--r-- | arch/parisc/kernel/pdc_cons.c | 3 | ||||
-rw-r--r-- | arch/parisc/kernel/smp.c | 8 | ||||
-rw-r--r-- | arch/parisc/kernel/time.c | 1 |
11 files changed, 52 insertions, 29 deletions
diff --git a/arch/parisc/include/asm/hardware.h b/arch/parisc/include/asm/hardware.h index 4e9626836bab..d1d864b81bae 100644 --- a/arch/parisc/include/asm/hardware.h +++ b/arch/parisc/include/asm/hardware.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define _PARISC_HARDWARE_H | 2 | #define _PARISC_HARDWARE_H |
3 | 3 | ||
4 | #include <linux/mod_devicetable.h> | 4 | #include <linux/mod_devicetable.h> |
5 | #include <asm/pdc.h> | ||
6 | 5 | ||
7 | #define HWTYPE_ANY_ID PA_HWTYPE_ANY_ID | 6 | #define HWTYPE_ANY_ID PA_HWTYPE_ANY_ID |
8 | #define HVERSION_ANY_ID PA_HVERSION_ANY_ID | 7 | #define HVERSION_ANY_ID PA_HVERSION_ANY_ID |
@@ -95,12 +94,14 @@ struct bc_module { | |||
95 | #define HPHW_MC 15 | 94 | #define HPHW_MC 15 |
96 | #define HPHW_FAULTY 31 | 95 | #define HPHW_FAULTY 31 |
97 | 96 | ||
97 | struct parisc_device_id; | ||
98 | 98 | ||
99 | /* hardware.c: */ | 99 | /* hardware.c: */ |
100 | extern const char *parisc_hardware_description(struct parisc_device_id *id); | 100 | extern const char *parisc_hardware_description(struct parisc_device_id *id); |
101 | extern enum cpu_type parisc_get_cpu_type(unsigned long hversion); | 101 | extern enum cpu_type parisc_get_cpu_type(unsigned long hversion); |
102 | 102 | ||
103 | struct pci_dev; | 103 | struct pci_dev; |
104 | struct hardware_path; | ||
104 | 105 | ||
105 | /* drivers.c: */ | 106 | /* drivers.c: */ |
106 | extern struct parisc_device *alloc_pa_dev(unsigned long hpa, | 107 | extern struct parisc_device *alloc_pa_dev(unsigned long hpa, |
diff --git a/arch/parisc/include/asm/page.h b/arch/parisc/include/asm/page.h index a84cc1f925f6..4e0e7dbf0f3f 100644 --- a/arch/parisc/include/asm/page.h +++ b/arch/parisc/include/asm/page.h | |||
@@ -160,5 +160,11 @@ extern int npmem_ranges; | |||
160 | 160 | ||
161 | #include <asm-generic/memory_model.h> | 161 | #include <asm-generic/memory_model.h> |
162 | #include <asm-generic/getorder.h> | 162 | #include <asm-generic/getorder.h> |
163 | #include <asm/pdc.h> | ||
164 | |||
165 | #define PAGE0 ((struct zeropage *)__PAGE_OFFSET) | ||
166 | |||
167 | /* DEFINITION OF THE ZERO-PAGE (PAG0) */ | ||
168 | /* based on work by Jason Eckhardt (jason@equator.com) */ | ||
163 | 169 | ||
164 | #endif /* _PARISC_PAGE_H */ | 170 | #endif /* _PARISC_PAGE_H */ |
diff --git a/arch/parisc/include/asm/pdc.h b/arch/parisc/include/asm/pdc.h index 4ca510b3c6f8..7f0f2d23059d 100644 --- a/arch/parisc/include/asm/pdc.h +++ b/arch/parisc/include/asm/pdc.h | |||
@@ -343,8 +343,6 @@ | |||
343 | 343 | ||
344 | #ifdef __KERNEL__ | 344 | #ifdef __KERNEL__ |
345 | 345 | ||
346 | #include <asm/page.h> /* for __PAGE_OFFSET */ | ||
347 | |||
348 | extern int pdc_type; | 346 | extern int pdc_type; |
349 | 347 | ||
350 | /* Values for pdc_type */ | 348 | /* Values for pdc_type */ |
@@ -677,11 +675,6 @@ static inline char * os_id_to_string(u16 os_id) { | |||
677 | 675 | ||
678 | #endif /* __KERNEL__ */ | 676 | #endif /* __KERNEL__ */ |
679 | 677 | ||
680 | #define PAGE0 ((struct zeropage *)__PAGE_OFFSET) | ||
681 | |||
682 | /* DEFINITION OF THE ZERO-PAGE (PAG0) */ | ||
683 | /* based on work by Jason Eckhardt (jason@equator.com) */ | ||
684 | |||
685 | /* flags of the device_path */ | 678 | /* flags of the device_path */ |
686 | #define PF_AUTOBOOT 0x80 | 679 | #define PF_AUTOBOOT 0x80 |
687 | #define PF_AUTOSEARCH 0x40 | 680 | #define PF_AUTOSEARCH 0x40 |
diff --git a/arch/parisc/include/asm/pgtable.h b/arch/parisc/include/asm/pgtable.h index 22dadeb58695..ee99f2339356 100644 --- a/arch/parisc/include/asm/pgtable.h +++ b/arch/parisc/include/asm/pgtable.h | |||
@@ -44,6 +44,8 @@ struct vm_area_struct; | |||
44 | 44 | ||
45 | #endif /* !__ASSEMBLY__ */ | 45 | #endif /* !__ASSEMBLY__ */ |
46 | 46 | ||
47 | #include <asm/page.h> | ||
48 | |||
47 | #define pte_ERROR(e) \ | 49 | #define pte_ERROR(e) \ |
48 | printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e)) | 50 | printk("%s:%d: bad pte %08lx.\n", __FILE__, __LINE__, pte_val(e)) |
49 | #define pmd_ERROR(e) \ | 51 | #define pmd_ERROR(e) \ |
diff --git a/arch/parisc/include/asm/prefetch.h b/arch/parisc/include/asm/prefetch.h index c5edc60c059f..1ee7c82672c1 100644 --- a/arch/parisc/include/asm/prefetch.h +++ b/arch/parisc/include/asm/prefetch.h | |||
@@ -21,7 +21,12 @@ | |||
21 | #define ARCH_HAS_PREFETCH | 21 | #define ARCH_HAS_PREFETCH |
22 | static inline void prefetch(const void *addr) | 22 | static inline void prefetch(const void *addr) |
23 | { | 23 | { |
24 | __asm__("ldw 0(%0), %%r0" : : "r" (addr)); | 24 | __asm__( |
25 | #ifndef CONFIG_PA20 | ||
26 | /* Need to avoid prefetch of NULL on PA7300LC */ | ||
27 | " extrw,u,= %0,31,32,%%r0\n" | ||
28 | #endif | ||
29 | " ldw 0(%0), %%r0" : : "r" (addr)); | ||
25 | } | 30 | } |
26 | 31 | ||
27 | /* LDD is a PA2.0 addition. */ | 32 | /* LDD is a PA2.0 addition. */ |
diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h index 804aa28ab1d6..3516e0b27044 100644 --- a/arch/parisc/include/asm/spinlock.h +++ b/arch/parisc/include/asm/spinlock.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SPINLOCK_H | 1 | #ifndef __ASM_SPINLOCK_H |
2 | #define __ASM_SPINLOCK_H | 2 | #define __ASM_SPINLOCK_H |
3 | 3 | ||
4 | #include <asm/barrier.h> | ||
5 | #include <asm/ldcw.h> | ||
4 | #include <asm/processor.h> | 6 | #include <asm/processor.h> |
5 | #include <asm/spinlock_types.h> | 7 | #include <asm/spinlock_types.h> |
6 | 8 | ||
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index 6f0594439143..535034217021 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -581,7 +581,11 @@ | |||
581 | */ | 581 | */ |
582 | cmpiclr,= 0x01,\tmp,%r0 | 582 | cmpiclr,= 0x01,\tmp,%r0 |
583 | ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot | 583 | ldi (_PAGE_DIRTY|_PAGE_READ|_PAGE_WRITE),\prot |
584 | #ifdef CONFIG_64BIT | ||
584 | depd,z \prot,8,7,\prot | 585 | depd,z \prot,8,7,\prot |
586 | #else | ||
587 | depw,z \prot,8,7,\prot | ||
588 | #endif | ||
585 | /* | 589 | /* |
586 | * OK, it is in the temp alias region, check whether "from" or "to". | 590 | * OK, it is in the temp alias region, check whether "from" or "to". |
587 | * Check "subtle" note in pacache.S re: r23/r26. | 591 | * Check "subtle" note in pacache.S re: r23/r26. |
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 93ff3d90edd1..5d7218ad885c 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -692,7 +692,7 @@ ENTRY(flush_icache_page_asm) | |||
692 | 692 | ||
693 | /* Purge any old translation */ | 693 | /* Purge any old translation */ |
694 | 694 | ||
695 | pitlb (%sr0,%r28) | 695 | pitlb (%sr4,%r28) |
696 | 696 | ||
697 | ldil L%icache_stride, %r1 | 697 | ldil L%icache_stride, %r1 |
698 | ldw R%icache_stride(%r1), %r1 | 698 | ldw R%icache_stride(%r1), %r1 |
@@ -706,27 +706,29 @@ ENTRY(flush_icache_page_asm) | |||
706 | sub %r25, %r1, %r25 | 706 | sub %r25, %r1, %r25 |
707 | 707 | ||
708 | 708 | ||
709 | 1: fic,m %r1(%r28) | 709 | /* fic only has the type 26 form on PA1.1, requiring an |
710 | fic,m %r1(%r28) | 710 | * explicit space specification, so use %sr4 */ |
711 | fic,m %r1(%r28) | 711 | 1: fic,m %r1(%sr4,%r28) |
712 | fic,m %r1(%r28) | 712 | fic,m %r1(%sr4,%r28) |
713 | fic,m %r1(%r28) | 713 | fic,m %r1(%sr4,%r28) |
714 | fic,m %r1(%r28) | 714 | fic,m %r1(%sr4,%r28) |
715 | fic,m %r1(%r28) | 715 | fic,m %r1(%sr4,%r28) |
716 | fic,m %r1(%r28) | 716 | fic,m %r1(%sr4,%r28) |
717 | fic,m %r1(%r28) | 717 | fic,m %r1(%sr4,%r28) |
718 | fic,m %r1(%r28) | 718 | fic,m %r1(%sr4,%r28) |
719 | fic,m %r1(%r28) | 719 | fic,m %r1(%sr4,%r28) |
720 | fic,m %r1(%r28) | 720 | fic,m %r1(%sr4,%r28) |
721 | fic,m %r1(%r28) | 721 | fic,m %r1(%sr4,%r28) |
722 | fic,m %r1(%r28) | 722 | fic,m %r1(%sr4,%r28) |
723 | fic,m %r1(%r28) | 723 | fic,m %r1(%sr4,%r28) |
724 | fic,m %r1(%sr4,%r28) | ||
725 | fic,m %r1(%sr4,%r28) | ||
724 | cmpb,COND(<<) %r28, %r25,1b | 726 | cmpb,COND(<<) %r28, %r25,1b |
725 | fic,m %r1(%r28) | 727 | fic,m %r1(%sr4,%r28) |
726 | 728 | ||
727 | sync | 729 | sync |
728 | bv %r0(%r2) | 730 | bv %r0(%r2) |
729 | pitlb (%sr0,%r25) | 731 | pitlb (%sr4,%r25) |
730 | .exit | 732 | .exit |
731 | 733 | ||
732 | .procend | 734 | .procend |
diff --git a/arch/parisc/kernel/pdc_cons.c b/arch/parisc/kernel/pdc_cons.c index 4f004596a6e7..47341aa208f2 100644 --- a/arch/parisc/kernel/pdc_cons.c +++ b/arch/parisc/kernel/pdc_cons.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <linux/init.h> | 50 | #include <linux/init.h> |
51 | #include <linux/major.h> | 51 | #include <linux/major.h> |
52 | #include <linux/tty.h> | 52 | #include <linux/tty.h> |
53 | #include <asm/page.h> /* for PAGE0 */ | ||
53 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ | 54 | #include <asm/pdc.h> /* for iodc_call() proto and friends */ |
54 | 55 | ||
55 | static DEFINE_SPINLOCK(pdc_console_lock); | 56 | static DEFINE_SPINLOCK(pdc_console_lock); |
@@ -104,7 +105,7 @@ static int pdc_console_tty_open(struct tty_struct *tty, struct file *filp) | |||
104 | 105 | ||
105 | static void pdc_console_tty_close(struct tty_struct *tty, struct file *filp) | 106 | static void pdc_console_tty_close(struct tty_struct *tty, struct file *filp) |
106 | { | 107 | { |
107 | if (!tty->count) { | 108 | if (tty->count == 1) { |
108 | del_timer_sync(&pdc_console_timer); | 109 | del_timer_sync(&pdc_console_timer); |
109 | tty_port_tty_set(&tty_port, NULL); | 110 | tty_port_tty_set(&tty_port, NULL); |
110 | } | 111 | } |
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 0bb1d63907f8..4dc7b7942b4c 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <linux/delay.h> | 31 | #include <linux/delay.h> |
32 | #include <linux/bitops.h> | 32 | #include <linux/bitops.h> |
33 | #include <linux/ftrace.h> | 33 | #include <linux/ftrace.h> |
34 | #include <linux/cpu.h> | ||
34 | 35 | ||
35 | #include <linux/atomic.h> | 36 | #include <linux/atomic.h> |
36 | #include <asm/current.h> | 37 | #include <asm/current.h> |
@@ -295,8 +296,13 @@ smp_cpu_init(int cpunum) | |||
295 | 296 | ||
296 | printk(KERN_CRIT "CPU#%d already initialized!\n", cpunum); | 297 | printk(KERN_CRIT "CPU#%d already initialized!\n", cpunum); |
297 | machine_halt(); | 298 | machine_halt(); |
298 | } | 299 | } |
300 | |||
301 | notify_cpu_starting(cpunum); | ||
302 | |||
303 | ipi_call_lock(); | ||
299 | set_cpu_online(cpunum, true); | 304 | set_cpu_online(cpunum, true); |
305 | ipi_call_unlock(); | ||
300 | 306 | ||
301 | /* Initialise the idle task for this CPU */ | 307 | /* Initialise the idle task for this CPU */ |
302 | atomic_inc(&init_mm.mm_count); | 308 | atomic_inc(&init_mm.mm_count); |
diff --git a/arch/parisc/kernel/time.c b/arch/parisc/kernel/time.c index 7c0774397b89..70e105d62423 100644 --- a/arch/parisc/kernel/time.c +++ b/arch/parisc/kernel/time.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/io.h> | 30 | #include <asm/io.h> |
31 | #include <asm/irq.h> | 31 | #include <asm/irq.h> |
32 | #include <asm/page.h> | ||
32 | #include <asm/param.h> | 33 | #include <asm/param.h> |
33 | #include <asm/pdc.h> | 34 | #include <asm/pdc.h> |
34 | #include <asm/led.h> | 35 | #include <asm/led.h> |