diff options
Diffstat (limited to 'arch/parisc')
-rw-r--r-- | arch/parisc/include/asm/mmzone.h | 4 | ||||
-rw-r--r-- | arch/parisc/include/asm/pci.h | 5 | ||||
-rw-r--r-- | arch/parisc/kernel/hardware.c | 1 | ||||
-rw-r--r-- | arch/parisc/kernel/pacache.S | 76 | ||||
-rw-r--r-- | arch/parisc/kernel/pci.c | 27 | ||||
-rw-r--r-- | arch/parisc/mm/init.c | 2 |
6 files changed, 74 insertions, 41 deletions
diff --git a/arch/parisc/include/asm/mmzone.h b/arch/parisc/include/asm/mmzone.h index cc50d33b7b88..b6b34a0987e7 100644 --- a/arch/parisc/include/asm/mmzone.h +++ b/arch/parisc/include/asm/mmzone.h | |||
@@ -27,7 +27,7 @@ extern struct node_map_data node_data[]; | |||
27 | 27 | ||
28 | #define PFNNID_SHIFT (30 - PAGE_SHIFT) | 28 | #define PFNNID_SHIFT (30 - PAGE_SHIFT) |
29 | #define PFNNID_MAP_MAX 512 /* support 512GB */ | 29 | #define PFNNID_MAP_MAX 512 /* support 512GB */ |
30 | extern unsigned char pfnnid_map[PFNNID_MAP_MAX]; | 30 | extern signed char pfnnid_map[PFNNID_MAP_MAX]; |
31 | 31 | ||
32 | #ifndef CONFIG_64BIT | 32 | #ifndef CONFIG_64BIT |
33 | #define pfn_is_io(pfn) ((pfn & (0xf0000000UL >> PAGE_SHIFT)) == (0xf0000000UL >> PAGE_SHIFT)) | 33 | #define pfn_is_io(pfn) ((pfn & (0xf0000000UL >> PAGE_SHIFT)) == (0xf0000000UL >> PAGE_SHIFT)) |
@@ -46,7 +46,7 @@ static inline int pfn_to_nid(unsigned long pfn) | |||
46 | i = pfn >> PFNNID_SHIFT; | 46 | i = pfn >> PFNNID_SHIFT; |
47 | BUG_ON(i >= ARRAY_SIZE(pfnnid_map)); | 47 | BUG_ON(i >= ARRAY_SIZE(pfnnid_map)); |
48 | 48 | ||
49 | return (int)pfnnid_map[i]; | 49 | return pfnnid_map[i]; |
50 | } | 50 | } |
51 | 51 | ||
52 | static inline int pfn_valid(int pfn) | 52 | static inline int pfn_valid(int pfn) |
diff --git a/arch/parisc/include/asm/pci.h b/arch/parisc/include/asm/pci.h index 3234f492d575..465154076d23 100644 --- a/arch/parisc/include/asm/pci.h +++ b/arch/parisc/include/asm/pci.h | |||
@@ -225,4 +225,9 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) | |||
225 | return channel ? 15 : 14; | 225 | return channel ? 15 : 14; |
226 | } | 226 | } |
227 | 227 | ||
228 | #define HAVE_PCI_MMAP | ||
229 | |||
230 | extern int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | ||
231 | enum pci_mmap_state mmap_state, int write_combine); | ||
232 | |||
228 | #endif /* __ASM_PARISC_PCI_H */ | 233 | #endif /* __ASM_PARISC_PCI_H */ |
diff --git a/arch/parisc/kernel/hardware.c b/arch/parisc/kernel/hardware.c index 9e2d2e408529..872275659d98 100644 --- a/arch/parisc/kernel/hardware.c +++ b/arch/parisc/kernel/hardware.c | |||
@@ -1205,6 +1205,7 @@ static struct hp_hardware hp_hardware_list[] = { | |||
1205 | {HPHW_FIO, 0x004, 0x00320, 0x0, "Metheus Frame Buffer"}, | 1205 | {HPHW_FIO, 0x004, 0x00320, 0x0, "Metheus Frame Buffer"}, |
1206 | {HPHW_FIO, 0x004, 0x00340, 0x0, "BARCO CX4500 VME Grphx Cnsl"}, | 1206 | {HPHW_FIO, 0x004, 0x00340, 0x0, "BARCO CX4500 VME Grphx Cnsl"}, |
1207 | {HPHW_FIO, 0x004, 0x00360, 0x0, "Hughes TOG VME FDDI"}, | 1207 | {HPHW_FIO, 0x004, 0x00360, 0x0, "Hughes TOG VME FDDI"}, |
1208 | {HPHW_FIO, 0x076, 0x000AD, 0x00, "Crestone Peak RS-232"}, | ||
1208 | {HPHW_IOA, 0x185, 0x0000B, 0x00, "Java BC Summit Port"}, | 1209 | {HPHW_IOA, 0x185, 0x0000B, 0x00, "Java BC Summit Port"}, |
1209 | {HPHW_IOA, 0x1FF, 0x0000B, 0x00, "Hitachi Ghostview Summit Port"}, | 1210 | {HPHW_IOA, 0x1FF, 0x0000B, 0x00, "Hitachi Ghostview Summit Port"}, |
1210 | {HPHW_IOA, 0x580, 0x0000B, 0x10, "U2-IOA BC Runway Port"}, | 1211 | {HPHW_IOA, 0x580, 0x0000B, 0x10, "U2-IOA BC Runway Port"}, |
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 36d7f402e48e..b743a80eaba0 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -860,7 +860,7 @@ ENTRY(flush_dcache_page_asm) | |||
860 | #endif | 860 | #endif |
861 | 861 | ||
862 | ldil L%dcache_stride, %r1 | 862 | ldil L%dcache_stride, %r1 |
863 | ldw R%dcache_stride(%r1), %r1 | 863 | ldw R%dcache_stride(%r1), r31 |
864 | 864 | ||
865 | #ifdef CONFIG_64BIT | 865 | #ifdef CONFIG_64BIT |
866 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 | 866 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 |
@@ -868,26 +868,26 @@ ENTRY(flush_dcache_page_asm) | |||
868 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 | 868 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 |
869 | #endif | 869 | #endif |
870 | add %r28, %r25, %r25 | 870 | add %r28, %r25, %r25 |
871 | sub %r25, %r1, %r25 | 871 | sub %r25, r31, %r25 |
872 | 872 | ||
873 | 873 | ||
874 | 1: fdc,m %r1(%r28) | 874 | 1: fdc,m r31(%r28) |
875 | fdc,m %r1(%r28) | 875 | fdc,m r31(%r28) |
876 | fdc,m %r1(%r28) | 876 | fdc,m r31(%r28) |
877 | fdc,m %r1(%r28) | 877 | fdc,m r31(%r28) |
878 | fdc,m %r1(%r28) | 878 | fdc,m r31(%r28) |
879 | fdc,m %r1(%r28) | 879 | fdc,m r31(%r28) |
880 | fdc,m %r1(%r28) | 880 | fdc,m r31(%r28) |
881 | fdc,m %r1(%r28) | 881 | fdc,m r31(%r28) |
882 | fdc,m %r1(%r28) | 882 | fdc,m r31(%r28) |
883 | fdc,m %r1(%r28) | 883 | fdc,m r31(%r28) |
884 | fdc,m %r1(%r28) | 884 | fdc,m r31(%r28) |
885 | fdc,m %r1(%r28) | 885 | fdc,m r31(%r28) |
886 | fdc,m %r1(%r28) | 886 | fdc,m r31(%r28) |
887 | fdc,m %r1(%r28) | 887 | fdc,m r31(%r28) |
888 | fdc,m %r1(%r28) | 888 | fdc,m r31(%r28) |
889 | cmpb,COND(<<) %r28, %r25,1b | 889 | cmpb,COND(<<) %r28, %r25,1b |
890 | fdc,m %r1(%r28) | 890 | fdc,m r31(%r28) |
891 | 891 | ||
892 | sync | 892 | sync |
893 | 893 | ||
@@ -936,7 +936,7 @@ ENTRY(flush_icache_page_asm) | |||
936 | #endif | 936 | #endif |
937 | 937 | ||
938 | ldil L%icache_stride, %r1 | 938 | ldil L%icache_stride, %r1 |
939 | ldw R%icache_stride(%r1), %r1 | 939 | ldw R%icache_stride(%r1), %r31 |
940 | 940 | ||
941 | #ifdef CONFIG_64BIT | 941 | #ifdef CONFIG_64BIT |
942 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 | 942 | depdi,z 1, 63-PAGE_SHIFT,1, %r25 |
@@ -944,28 +944,28 @@ ENTRY(flush_icache_page_asm) | |||
944 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 | 944 | depwi,z 1, 31-PAGE_SHIFT,1, %r25 |
945 | #endif | 945 | #endif |
946 | add %r28, %r25, %r25 | 946 | add %r28, %r25, %r25 |
947 | sub %r25, %r1, %r25 | 947 | sub %r25, %r31, %r25 |
948 | 948 | ||
949 | 949 | ||
950 | /* fic only has the type 26 form on PA1.1, requiring an | 950 | /* fic only has the type 26 form on PA1.1, requiring an |
951 | * explicit space specification, so use %sr4 */ | 951 | * explicit space specification, so use %sr4 */ |
952 | 1: fic,m %r1(%sr4,%r28) | 952 | 1: fic,m %r31(%sr4,%r28) |
953 | fic,m %r1(%sr4,%r28) | 953 | fic,m %r31(%sr4,%r28) |
954 | fic,m %r1(%sr4,%r28) | 954 | fic,m %r31(%sr4,%r28) |
955 | fic,m %r1(%sr4,%r28) | 955 | fic,m %r31(%sr4,%r28) |
956 | fic,m %r1(%sr4,%r28) | 956 | fic,m %r31(%sr4,%r28) |
957 | fic,m %r1(%sr4,%r28) | 957 | fic,m %r31(%sr4,%r28) |
958 | fic,m %r1(%sr4,%r28) | 958 | fic,m %r31(%sr4,%r28) |
959 | fic,m %r1(%sr4,%r28) | 959 | fic,m %r31(%sr4,%r28) |
960 | fic,m %r1(%sr4,%r28) | 960 | fic,m %r31(%sr4,%r28) |
961 | fic,m %r1(%sr4,%r28) | 961 | fic,m %r31(%sr4,%r28) |
962 | fic,m %r1(%sr4,%r28) | 962 | fic,m %r31(%sr4,%r28) |
963 | fic,m %r1(%sr4,%r28) | 963 | fic,m %r31(%sr4,%r28) |
964 | fic,m %r1(%sr4,%r28) | 964 | fic,m %r31(%sr4,%r28) |
965 | fic,m %r1(%sr4,%r28) | 965 | fic,m %r31(%sr4,%r28) |
966 | fic,m %r1(%sr4,%r28) | 966 | fic,m %r31(%sr4,%r28) |
967 | cmpb,COND(<<) %r28, %r25,1b | 967 | cmpb,COND(<<) %r28, %r25,1b |
968 | fic,m %r1(%sr4,%r28) | 968 | fic,m %r31(%sr4,%r28) |
969 | 969 | ||
970 | sync | 970 | sync |
971 | 971 | ||
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index 60309051875e..64f2764a8cef 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c | |||
@@ -220,6 +220,33 @@ resource_size_t pcibios_align_resource(void *data, const struct resource *res, | |||
220 | } | 220 | } |
221 | 221 | ||
222 | 222 | ||
223 | int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, | ||
224 | enum pci_mmap_state mmap_state, int write_combine) | ||
225 | { | ||
226 | unsigned long prot; | ||
227 | |||
228 | /* | ||
229 | * I/O space can be accessed via normal processor loads and stores on | ||
230 | * this platform but for now we elect not to do this and portable | ||
231 | * drivers should not do this anyway. | ||
232 | */ | ||
233 | if (mmap_state == pci_mmap_io) | ||
234 | return -EINVAL; | ||
235 | |||
236 | if (write_combine) | ||
237 | return -EINVAL; | ||
238 | |||
239 | /* | ||
240 | * Ignore write-combine; for now only return uncached mappings. | ||
241 | */ | ||
242 | prot = pgprot_val(vma->vm_page_prot); | ||
243 | prot |= _PAGE_NO_CACHE; | ||
244 | vma->vm_page_prot = __pgprot(prot); | ||
245 | |||
246 | return remap_pfn_range(vma, vma->vm_start, vma->vm_pgoff, | ||
247 | vma->vm_end - vma->vm_start, vma->vm_page_prot); | ||
248 | } | ||
249 | |||
223 | /* | 250 | /* |
224 | * A driver is enabling the device. We make sure that all the appropriate | 251 | * A driver is enabling the device. We make sure that all the appropriate |
225 | * bits are set to allow the device to operate as the driver is expecting. | 252 | * bits are set to allow the device to operate as the driver is expecting. |
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c index 1c965642068b..505b56c6b9b9 100644 --- a/arch/parisc/mm/init.c +++ b/arch/parisc/mm/init.c | |||
@@ -47,7 +47,7 @@ pte_t pg0[PT_INITIAL * PTRS_PER_PTE] __attribute__ ((__section__ (".data..vm0.pt | |||
47 | 47 | ||
48 | #ifdef CONFIG_DISCONTIGMEM | 48 | #ifdef CONFIG_DISCONTIGMEM |
49 | struct node_map_data node_data[MAX_NUMNODES] __read_mostly; | 49 | struct node_map_data node_data[MAX_NUMNODES] __read_mostly; |
50 | unsigned char pfnnid_map[PFNNID_MAP_MAX] __read_mostly; | 50 | signed char pfnnid_map[PFNNID_MAP_MAX] __read_mostly; |
51 | #endif | 51 | #endif |
52 | 52 | ||
53 | static struct resource data_resource = { | 53 | static struct resource data_resource = { |