diff options
Diffstat (limited to 'include/asm-sh')
-rw-r--r-- | include/asm-sh/bugs.h | 2 | ||||
-rw-r--r-- | include/asm-sh/cpu-sh4/freq.h | 4 | ||||
-rw-r--r-- | include/asm-sh/cpu-sh5/cacheflush.h | 6 | ||||
-rw-r--r-- | include/asm-sh/cpu-sh5/mmu_context.h | 6 | ||||
-rw-r--r-- | include/asm-sh/hp6xx.h | 28 | ||||
-rw-r--r-- | include/asm-sh/io.h | 22 | ||||
-rw-r--r-- | include/asm-sh/io_trapped.h | 58 | ||||
-rw-r--r-- | include/asm-sh/ioctls.h | 4 | ||||
-rw-r--r-- | include/asm-sh/irq.h | 4 | ||||
-rw-r--r-- | include/asm-sh/mmu_context_64.h | 3 | ||||
-rw-r--r-- | include/asm-sh/page.h | 7 | ||||
-rw-r--r-- | include/asm-sh/pgtable_64.h | 13 | ||||
-rw-r--r-- | include/asm-sh/processor.h | 2 | ||||
-rw-r--r-- | include/asm-sh/r7780rp.h | 3 | ||||
-rw-r--r-- | include/asm-sh/rts7751r2d.h | 3 | ||||
-rw-r--r-- | include/asm-sh/system.h | 5 | ||||
-rw-r--r-- | include/asm-sh/system_32.h | 3 | ||||
-rw-r--r-- | include/asm-sh/termbits.h | 5 | ||||
-rw-r--r-- | include/asm-sh/termios.h | 6 | ||||
-rw-r--r-- | include/asm-sh/tlb.h | 1 | ||||
-rw-r--r-- | include/asm-sh/uaccess.h | 29 | ||||
-rw-r--r-- | include/asm-sh/uaccess_32.h | 24 | ||||
-rw-r--r-- | include/asm-sh/uaccess_64.h | 19 | ||||
-rw-r--r-- | include/asm-sh/unistd_32.h | 6 | ||||
-rw-r--r-- | include/asm-sh/unistd_64.h | 6 |
25 files changed, 170 insertions, 99 deletions
diff --git a/include/asm-sh/bugs.h b/include/asm-sh/bugs.h index def8128b8b78..cfda7d5bf026 100644 --- a/include/asm-sh/bugs.h +++ b/include/asm-sh/bugs.h | |||
@@ -39,7 +39,7 @@ static void __init check_bugs(void) | |||
39 | *p++ = '4'; | 39 | *p++ = '4'; |
40 | *p++ = 'a'; | 40 | *p++ = 'a'; |
41 | break; | 41 | break; |
42 | case CPU_SH7343 ... CPU_SH7722: | 42 | case CPU_SH7343 ... CPU_SH7366: |
43 | *p++ = '4'; | 43 | *p++ = '4'; |
44 | *p++ = 'a'; | 44 | *p++ = 'a'; |
45 | *p++ = 'l'; | 45 | *p++ = 'l'; |
diff --git a/include/asm-sh/cpu-sh4/freq.h b/include/asm-sh/cpu-sh4/freq.h index 1ac10b9a078f..ec028c649215 100644 --- a/include/asm-sh/cpu-sh4/freq.h +++ b/include/asm-sh/cpu-sh4/freq.h | |||
@@ -10,12 +10,14 @@ | |||
10 | #ifndef __ASM_CPU_SH4_FREQ_H | 10 | #ifndef __ASM_CPU_SH4_FREQ_H |
11 | #define __ASM_CPU_SH4_FREQ_H | 11 | #define __ASM_CPU_SH4_FREQ_H |
12 | 12 | ||
13 | #if defined(CONFIG_CPU_SUBTYPE_SH7722) | 13 | #if defined(CONFIG_CPU_SUBTYPE_SH7722) || defined(CONFIG_CPU_SUBTYPE_SH7366) |
14 | #define FRQCR 0xa4150000 | 14 | #define FRQCR 0xa4150000 |
15 | #define VCLKCR 0xa4150004 | 15 | #define VCLKCR 0xa4150004 |
16 | #define SCLKACR 0xa4150008 | 16 | #define SCLKACR 0xa4150008 |
17 | #define SCLKBCR 0xa415000c | 17 | #define SCLKBCR 0xa415000c |
18 | #if defined(CONFIG_CPU_SUBTYPE_SH7722) | ||
18 | #define IrDACLKCR 0xa4150010 | 19 | #define IrDACLKCR 0xa4150010 |
20 | #endif | ||
19 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ | 21 | #elif defined(CONFIG_CPU_SUBTYPE_SH7763) || \ |
20 | defined(CONFIG_CPU_SUBTYPE_SH7780) | 22 | defined(CONFIG_CPU_SUBTYPE_SH7780) |
21 | #define FRQCR 0xffc80000 | 23 | #define FRQCR 0xffc80000 |
diff --git a/include/asm-sh/cpu-sh5/cacheflush.h b/include/asm-sh/cpu-sh5/cacheflush.h index 98edb5b1da32..5a11f0b7e66a 100644 --- a/include/asm-sh/cpu-sh5/cacheflush.h +++ b/include/asm-sh/cpu-sh5/cacheflush.h | |||
@@ -3,15 +3,13 @@ | |||
3 | 3 | ||
4 | #ifndef __ASSEMBLY__ | 4 | #ifndef __ASSEMBLY__ |
5 | 5 | ||
6 | #include <asm/page.h> | ||
7 | |||
8 | struct vm_area_struct; | 6 | struct vm_area_struct; |
9 | struct page; | 7 | struct page; |
10 | struct mm_struct; | 8 | struct mm_struct; |
11 | 9 | ||
12 | extern void flush_cache_all(void); | 10 | extern void flush_cache_all(void); |
13 | extern void flush_cache_mm(struct mm_struct *mm); | 11 | extern void flush_cache_mm(struct mm_struct *mm); |
14 | extern void flush_cache_sigtramp(unsigned long start, unsigned long end); | 12 | extern void flush_cache_sigtramp(unsigned long vaddr); |
15 | extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, | 13 | extern void flush_cache_range(struct vm_area_struct *vma, unsigned long start, |
16 | unsigned long end); | 14 | unsigned long end); |
17 | extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); | 15 | extern void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn); |
@@ -27,7 +25,7 @@ extern void flush_icache_user_range(struct vm_area_struct *vma, | |||
27 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 25 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
28 | 26 | ||
29 | #define flush_icache_page(vma, page) do { } while (0) | 27 | #define flush_icache_page(vma, page) do { } while (0) |
30 | #define p3_cache_init() do { } while (0) | 28 | void p3_cache_init(void); |
31 | 29 | ||
32 | #endif /* __ASSEMBLY__ */ | 30 | #endif /* __ASSEMBLY__ */ |
33 | 31 | ||
diff --git a/include/asm-sh/cpu-sh5/mmu_context.h b/include/asm-sh/cpu-sh5/mmu_context.h index df857fc09960..68a1d2cff457 100644 --- a/include/asm-sh/cpu-sh5/mmu_context.h +++ b/include/asm-sh/cpu-sh5/mmu_context.h | |||
@@ -16,12 +16,6 @@ | |||
16 | /* This has to be a common function because the next location to fill | 16 | /* This has to be a common function because the next location to fill |
17 | * information is shared. */ | 17 | * information is shared. */ |
18 | extern void __do_tlb_refill(unsigned long address, unsigned long long is_text_not_data, pte_t *pte); | 18 | extern void __do_tlb_refill(unsigned long address, unsigned long long is_text_not_data, pte_t *pte); |
19 | |||
20 | /* Profiling counter. */ | ||
21 | #ifdef CONFIG_SH64_PROC_TLB | ||
22 | extern unsigned long long calls_to_do_fast_page_fault; | ||
23 | #endif | ||
24 | |||
25 | #endif /* __ASSEMBLY__ */ | 19 | #endif /* __ASSEMBLY__ */ |
26 | 20 | ||
27 | #endif /* __ASM_SH_CPU_SH5_MMU_CONTEXT_H */ | 21 | #endif /* __ASM_SH_CPU_SH5_MMU_CONTEXT_H */ |
diff --git a/include/asm-sh/hp6xx.h b/include/asm-sh/hp6xx.h index 53ca5643d9c7..0d4165a32dcd 100644 --- a/include/asm-sh/hp6xx.h +++ b/include/asm-sh/hp6xx.h | |||
@@ -10,9 +10,9 @@ | |||
10 | * | 10 | * |
11 | */ | 11 | */ |
12 | 12 | ||
13 | #define HP680_BTN_IRQ 32 /* IRQ0_IRQ */ | 13 | #define HP680_BTN_IRQ 32 /* IRQ0_IRQ */ |
14 | #define HP680_TS_IRQ 35 /* IRQ3_IRQ */ | 14 | #define HP680_TS_IRQ 35 /* IRQ3_IRQ */ |
15 | #define HP680_HD64461_IRQ 36 /* IRQ4_IRQ */ | 15 | #define HP680_HD64461_IRQ 36 /* IRQ4_IRQ */ |
16 | 16 | ||
17 | #define DAC_LCD_BRIGHTNESS 0 | 17 | #define DAC_LCD_BRIGHTNESS 0 |
18 | #define DAC_SPEAKER_VOLUME 1 | 18 | #define DAC_SPEAKER_VOLUME 1 |
@@ -55,26 +55,4 @@ | |||
55 | #define PJDR 0xa4000130 | 55 | #define PJDR 0xa4000130 |
56 | #define PKDR 0xa4000132 | 56 | #define PKDR 0xa4000132 |
57 | 57 | ||
58 | static inline void hp6xx_led_red(int on) | ||
59 | { | ||
60 | u16 v16; | ||
61 | v16 = ctrl_inw(CONFIG_HD64461_IOBASE + HD64461_GPBDR - 0x10000); | ||
62 | if (on) | ||
63 | ctrl_outw(v16 & (~HD64461_GPBDR_LED_RED), CONFIG_HD64461_IOBASE + HD64461_GPBDR - 0x10000); | ||
64 | else | ||
65 | ctrl_outw(v16 | HD64461_GPBDR_LED_RED, CONFIG_HD64461_IOBASE + HD64461_GPBDR - 0x10000); | ||
66 | } | ||
67 | |||
68 | static inline void hp6xx_led_green(int on) | ||
69 | { | ||
70 | u8 v8; | ||
71 | |||
72 | v8 = ctrl_inb(PKDR); | ||
73 | if (on) | ||
74 | ctrl_outb(v8 & (~PKDR_LED_GREEN), PKDR); | ||
75 | else | ||
76 | ctrl_outb(v8 | PKDR_LED_GREEN, PKDR); | ||
77 | } | ||
78 | |||
79 | |||
80 | #endif /* __ASM_SH_HP6XX_H */ | 58 | #endif /* __ASM_SH_HP6XX_H */ |
diff --git a/include/asm-sh/io.h b/include/asm-sh/io.h index 94900c089519..356e50d06745 100644 --- a/include/asm-sh/io.h +++ b/include/asm-sh/io.h | |||
@@ -38,6 +38,7 @@ | |||
38 | */ | 38 | */ |
39 | #define __IO_PREFIX generic | 39 | #define __IO_PREFIX generic |
40 | #include <asm/io_generic.h> | 40 | #include <asm/io_generic.h> |
41 | #include <asm/io_trapped.h> | ||
41 | 42 | ||
42 | #define maybebadio(port) \ | 43 | #define maybebadio(port) \ |
43 | printk(KERN_ERR "bad PC-like io %s:%u for port 0x%lx at 0x%08x\n", \ | 44 | printk(KERN_ERR "bad PC-like io %s:%u for port 0x%lx at 0x%08x\n", \ |
@@ -181,13 +182,13 @@ __BUILD_MEMORY_STRING(w, u16) | |||
181 | #define iowrite32(v,a) writel((v),(a)) | 182 | #define iowrite32(v,a) writel((v),(a)) |
182 | #define iowrite32be(v,a) __raw_writel(cpu_to_be32((v)),(a)) | 183 | #define iowrite32be(v,a) __raw_writel(cpu_to_be32((v)),(a)) |
183 | 184 | ||
184 | #define ioread8_rep(a,d,c) insb((a),(d),(c)) | 185 | #define ioread8_rep(a, d, c) readsb((a), (d), (c)) |
185 | #define ioread16_rep(a,d,c) insw((a),(d),(c)) | 186 | #define ioread16_rep(a, d, c) readsw((a), (d), (c)) |
186 | #define ioread32_rep(a,d,c) insl((a),(d),(c)) | 187 | #define ioread32_rep(a, d, c) readsl((a), (d), (c)) |
187 | 188 | ||
188 | #define iowrite8_rep(a,s,c) outsb((a),(s),(c)) | 189 | #define iowrite8_rep(a, s, c) writesb((a), (s), (c)) |
189 | #define iowrite16_rep(a,s,c) outsw((a),(s),(c)) | 190 | #define iowrite16_rep(a, s, c) writesw((a), (s), (c)) |
190 | #define iowrite32_rep(a,s,c) outsl((a),(s),(c)) | 191 | #define iowrite32_rep(a, s, c) writesl((a), (s), (c)) |
191 | 192 | ||
192 | #define mmiowb() wmb() /* synco on SH-4A, otherwise a nop */ | 193 | #define mmiowb() wmb() /* synco on SH-4A, otherwise a nop */ |
193 | 194 | ||
@@ -207,6 +208,8 @@ static inline void __set_io_port_base(unsigned long pbase) | |||
207 | generic_io_base = pbase; | 208 | generic_io_base = pbase; |
208 | } | 209 | } |
209 | 210 | ||
211 | #define __ioport_map(p, n) sh_mv.mv_ioport_map((p), (n)) | ||
212 | |||
210 | /* We really want to try and get these to memcpy etc */ | 213 | /* We really want to try and get these to memcpy etc */ |
211 | extern void memcpy_fromio(void *, volatile void __iomem *, unsigned long); | 214 | extern void memcpy_fromio(void *, volatile void __iomem *, unsigned long); |
212 | extern void memcpy_toio(volatile void __iomem *, const void *, unsigned long); | 215 | extern void memcpy_toio(volatile void __iomem *, const void *, unsigned long); |
@@ -309,7 +312,14 @@ __ioremap_mode(unsigned long offset, unsigned long size, unsigned long flags) | |||
309 | { | 312 | { |
310 | #ifdef CONFIG_SUPERH32 | 313 | #ifdef CONFIG_SUPERH32 |
311 | unsigned long last_addr = offset + size - 1; | 314 | unsigned long last_addr = offset + size - 1; |
315 | #endif | ||
316 | void __iomem *ret; | ||
312 | 317 | ||
318 | ret = __ioremap_trapped(offset, size); | ||
319 | if (ret) | ||
320 | return ret; | ||
321 | |||
322 | #ifdef CONFIG_SUPERH32 | ||
313 | /* | 323 | /* |
314 | * For P1 and P2 space this is trivial, as everything is already | 324 | * For P1 and P2 space this is trivial, as everything is already |
315 | * mapped. Uncached access for P1 addresses are done through P2. | 325 | * mapped. Uncached access for P1 addresses are done through P2. |
diff --git a/include/asm-sh/io_trapped.h b/include/asm-sh/io_trapped.h new file mode 100644 index 000000000000..f1251d4f0ba9 --- /dev/null +++ b/include/asm-sh/io_trapped.h | |||
@@ -0,0 +1,58 @@ | |||
1 | #ifndef __ASM_SH_IO_TRAPPED_H | ||
2 | #define __ASM_SH_IO_TRAPPED_H | ||
3 | |||
4 | #include <linux/list.h> | ||
5 | #include <linux/ioport.h> | ||
6 | #include <asm/page.h> | ||
7 | |||
8 | #define IO_TRAPPED_MAGIC 0xfeedbeef | ||
9 | |||
10 | struct trapped_io { | ||
11 | unsigned int magic; | ||
12 | struct resource *resource; | ||
13 | unsigned int num_resources; | ||
14 | unsigned int minimum_bus_width; | ||
15 | struct list_head list; | ||
16 | void __iomem *virt_base; | ||
17 | } __aligned(PAGE_SIZE); | ||
18 | |||
19 | #ifdef CONFIG_IO_TRAPPED | ||
20 | int register_trapped_io(struct trapped_io *tiop); | ||
21 | int handle_trapped_io(struct pt_regs *regs, unsigned long address); | ||
22 | |||
23 | void __iomem *match_trapped_io_handler(struct list_head *list, | ||
24 | unsigned long offset, | ||
25 | unsigned long size); | ||
26 | |||
27 | #ifdef CONFIG_HAS_IOMEM | ||
28 | extern struct list_head trapped_mem; | ||
29 | |||
30 | static inline void __iomem * | ||
31 | __ioremap_trapped(unsigned long offset, unsigned long size) | ||
32 | { | ||
33 | return match_trapped_io_handler(&trapped_mem, offset, size); | ||
34 | } | ||
35 | #else | ||
36 | #define __ioremap_trapped(offset, size) NULL | ||
37 | #endif | ||
38 | |||
39 | #ifdef CONFIG_HAS_IOPORT | ||
40 | extern struct list_head trapped_io; | ||
41 | |||
42 | static inline void __iomem * | ||
43 | __ioport_map_trapped(unsigned long offset, unsigned long size) | ||
44 | { | ||
45 | return match_trapped_io_handler(&trapped_io, offset, size); | ||
46 | } | ||
47 | #else | ||
48 | #define __ioport_map_trapped(offset, size) NULL | ||
49 | #endif | ||
50 | |||
51 | #else | ||
52 | #define register_trapped_io(tiop) (-1) | ||
53 | #define handle_trapped_io(tiop, address) 0 | ||
54 | #define __ioremap_trapped(offset, size) NULL | ||
55 | #define __ioport_map_trapped(offset, size) NULL | ||
56 | #endif | ||
57 | |||
58 | #endif /* __ASM_SH_IO_TRAPPED_H */ | ||
diff --git a/include/asm-sh/ioctls.h b/include/asm-sh/ioctls.h index 35805df010a0..c212c371a4a5 100644 --- a/include/asm-sh/ioctls.h +++ b/include/asm-sh/ioctls.h | |||
@@ -78,6 +78,10 @@ | |||
78 | #define TIOCSBRK _IO('T', 39) /* 0x5427 */ /* BSD compatibility */ | 78 | #define TIOCSBRK _IO('T', 39) /* 0x5427 */ /* BSD compatibility */ |
79 | #define TIOCCBRK _IO('T', 40) /* 0x5428 */ /* BSD compatibility */ | 79 | #define TIOCCBRK _IO('T', 40) /* 0x5428 */ /* BSD compatibility */ |
80 | #define TIOCGSID _IOR('T', 41, pid_t) /* 0x5429 */ /* Return the session ID of FD */ | 80 | #define TIOCGSID _IOR('T', 41, pid_t) /* 0x5429 */ /* Return the session ID of FD */ |
81 | #define TCGETS2 _IOR('T', 42, struct termios2) | ||
82 | #define TCSETS2 _IOW('T', 43, struct termios2) | ||
83 | #define TCSETSW2 _IOW('T', 44, struct termios2) | ||
84 | #define TCSETSF2 _IOW('T', 45, struct termios2) | ||
81 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ | 85 | #define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ |
82 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ | 86 | #define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ |
83 | 87 | ||
diff --git a/include/asm-sh/irq.h b/include/asm-sh/irq.h index 11850f65c922..ca66e5df69dc 100644 --- a/include/asm-sh/irq.h +++ b/include/asm-sh/irq.h | |||
@@ -50,4 +50,8 @@ extern void irq_ctx_exit(int cpu); | |||
50 | # define irq_ctx_exit(cpu) do { } while (0) | 50 | # define irq_ctx_exit(cpu) do { } while (0) |
51 | #endif | 51 | #endif |
52 | 52 | ||
53 | #ifdef CONFIG_CPU_SH5 | ||
54 | #include <asm/cpu/irq.h> | ||
55 | #endif | ||
56 | |||
53 | #endif /* __ASM_SH_IRQ_H */ | 57 | #endif /* __ASM_SH_IRQ_H */ |
diff --git a/include/asm-sh/mmu_context_64.h b/include/asm-sh/mmu_context_64.h index 020be744b088..9649f1c07caf 100644 --- a/include/asm-sh/mmu_context_64.h +++ b/include/asm-sh/mmu_context_64.h | |||
@@ -66,6 +66,9 @@ static inline void set_asid(unsigned long asid) | |||
66 | : "=r" (sr), "=r" (pc) : "0" (sr)); | 66 | : "=r" (sr), "=r" (pc) : "0" (sr)); |
67 | } | 67 | } |
68 | 68 | ||
69 | /* arch/sh/kernel/cpu/sh5/entry.S */ | ||
70 | extern unsigned long switch_and_save_asid(unsigned long new_asid); | ||
71 | |||
69 | /* No spare register to twiddle, so use a software cache */ | 72 | /* No spare register to twiddle, so use a software cache */ |
70 | extern pgd_t *mmu_pdtp_cache; | 73 | extern pgd_t *mmu_pdtp_cache; |
71 | 74 | ||
diff --git a/include/asm-sh/page.h b/include/asm-sh/page.h index 134562dc8c45..304c30b5d947 100644 --- a/include/asm-sh/page.h +++ b/include/asm-sh/page.h | |||
@@ -55,11 +55,14 @@ extern void clear_page(void *to); | |||
55 | extern void copy_page(void *to, void *from); | 55 | extern void copy_page(void *to, void *from); |
56 | 56 | ||
57 | #if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \ | 57 | #if !defined(CONFIG_CACHE_OFF) && defined(CONFIG_MMU) && \ |
58 | (defined(CONFIG_CPU_SH4) || defined(CONFIG_SH7705_CACHE_32KB)) | 58 | (defined(CONFIG_CPU_SH5) || defined(CONFIG_CPU_SH4) || \ |
59 | defined(CONFIG_SH7705_CACHE_32KB)) | ||
59 | struct page; | 60 | struct page; |
60 | struct vm_area_struct; | 61 | struct vm_area_struct; |
61 | extern void clear_user_page(void *to, unsigned long address, struct page *page); | 62 | extern void clear_user_page(void *to, unsigned long address, struct page *page); |
62 | #ifdef CONFIG_CPU_SH4 | 63 | extern void copy_user_page(void *to, void *from, unsigned long address, |
64 | struct page *page); | ||
65 | #if defined(CONFIG_CPU_SH4) | ||
63 | extern void copy_user_highpage(struct page *to, struct page *from, | 66 | extern void copy_user_highpage(struct page *to, struct page *from, |
64 | unsigned long vaddr, struct vm_area_struct *vma); | 67 | unsigned long vaddr, struct vm_area_struct *vma); |
65 | #define __HAVE_ARCH_COPY_USER_HIGHPAGE | 68 | #define __HAVE_ARCH_COPY_USER_HIGHPAGE |
diff --git a/include/asm-sh/pgtable_64.h b/include/asm-sh/pgtable_64.h index 972211671c9a..f9dd9d311441 100644 --- a/include/asm-sh/pgtable_64.h +++ b/include/asm-sh/pgtable_64.h | |||
@@ -138,6 +138,14 @@ static __inline__ void pmd_set(pmd_t *pmdp,pte_t *ptep) | |||
138 | #endif | 138 | #endif |
139 | 139 | ||
140 | /* | 140 | /* |
141 | * Stub out _PAGE_SZHUGE if we don't have a good definition for it, | ||
142 | * to make pte_mkhuge() happy. | ||
143 | */ | ||
144 | #ifndef _PAGE_SZHUGE | ||
145 | # define _PAGE_SZHUGE (0) | ||
146 | #endif | ||
147 | |||
148 | /* | ||
141 | * Default flags for a Kernel page. | 149 | * Default flags for a Kernel page. |
142 | * This is fundametally also SHARED because the main use of this define | 150 | * This is fundametally also SHARED because the main use of this define |
143 | * (other than for PGD/PMD entries) is for the VMALLOC pool which is | 151 | * (other than for PGD/PMD entries) is for the VMALLOC pool which is |
@@ -179,6 +187,11 @@ static __inline__ void pmd_set(pmd_t *pmdp,pte_t *ptep) | |||
179 | _PAGE_WRITE | _PAGE_EXECUTE) | 187 | _PAGE_WRITE | _PAGE_EXECUTE) |
180 | #define PAGE_KERNEL __pgprot(_KERNPG_TABLE) | 188 | #define PAGE_KERNEL __pgprot(_KERNPG_TABLE) |
181 | 189 | ||
190 | #define PAGE_KERNEL_NOCACHE \ | ||
191 | __pgprot(_PAGE_PRESENT | _PAGE_READ | _PAGE_WRITE | \ | ||
192 | _PAGE_EXECUTE | _PAGE_ACCESSED | \ | ||
193 | _PAGE_DIRTY | _PAGE_SHARED) | ||
194 | |||
182 | /* Make it a device mapping for maximum safety (e.g. for mapping device | 195 | /* Make it a device mapping for maximum safety (e.g. for mapping device |
183 | registers into user-space via /dev/map). */ | 196 | registers into user-space via /dev/map). */ |
184 | #define pgprot_noncached(x) __pgprot(((x).pgprot & ~(_PAGE_CACHABLE)) | _PAGE_DEVICE) | 197 | #define pgprot_noncached(x) __pgprot(((x).pgprot & ~(_PAGE_CACHABLE)) | _PAGE_DEVICE) |
diff --git a/include/asm-sh/processor.h b/include/asm-sh/processor.h index c9b14161f73d..19fe47c1ca17 100644 --- a/include/asm-sh/processor.h +++ b/include/asm-sh/processor.h | |||
@@ -33,7 +33,7 @@ enum cpu_type { | |||
33 | CPU_SH7763, CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785, CPU_SHX3, | 33 | CPU_SH7763, CPU_SH7770, CPU_SH7780, CPU_SH7781, CPU_SH7785, CPU_SHX3, |
34 | 34 | ||
35 | /* SH4AL-DSP types */ | 35 | /* SH4AL-DSP types */ |
36 | CPU_SH7343, CPU_SH7722, | 36 | CPU_SH7343, CPU_SH7722, CPU_SH7366, |
37 | 37 | ||
38 | /* SH-5 types */ | 38 | /* SH-5 types */ |
39 | CPU_SH5_101, CPU_SH5_103, | 39 | CPU_SH5_101, CPU_SH5_103, |
diff --git a/include/asm-sh/r7780rp.h b/include/asm-sh/r7780rp.h index bdecea0840a0..1770460a4616 100644 --- a/include/asm-sh/r7780rp.h +++ b/include/asm-sh/r7780rp.h | |||
@@ -195,7 +195,4 @@ unsigned char *highlander_init_irq_r7780mp(void); | |||
195 | unsigned char *highlander_init_irq_r7780rp(void); | 195 | unsigned char *highlander_init_irq_r7780rp(void); |
196 | unsigned char *highlander_init_irq_r7785rp(void); | 196 | unsigned char *highlander_init_irq_r7785rp(void); |
197 | 197 | ||
198 | #define __IO_PREFIX r7780rp | ||
199 | #include <asm/io_generic.h> | ||
200 | |||
201 | #endif /* __ASM_SH_RENESAS_R7780RP */ | 198 | #endif /* __ASM_SH_RENESAS_R7780RP */ |
diff --git a/include/asm-sh/rts7751r2d.h b/include/asm-sh/rts7751r2d.h index 83b9c111f171..0a800157b826 100644 --- a/include/asm-sh/rts7751r2d.h +++ b/include/asm-sh/rts7751r2d.h | |||
@@ -67,7 +67,4 @@ | |||
67 | void init_rts7751r2d_IRQ(void); | 67 | void init_rts7751r2d_IRQ(void); |
68 | int rts7751r2d_irq_demux(int); | 68 | int rts7751r2d_irq_demux(int); |
69 | 69 | ||
70 | #define __IO_PREFIX rts7751r2d | ||
71 | #include <asm/io_generic.h> | ||
72 | |||
73 | #endif /* __ASM_SH_RENESAS_RTS7751R2D */ | 70 | #endif /* __ASM_SH_RENESAS_RTS7751R2D */ |
diff --git a/include/asm-sh/system.h b/include/asm-sh/system.h index 772cd1a0a674..5145aa2a0ce9 100644 --- a/include/asm-sh/system.h +++ b/include/asm-sh/system.h | |||
@@ -182,6 +182,11 @@ BUILD_TRAP_HANDLER(fpu_state_restore); | |||
182 | 182 | ||
183 | #define arch_align_stack(x) (x) | 183 | #define arch_align_stack(x) (x) |
184 | 184 | ||
185 | struct mem_access { | ||
186 | unsigned long (*from)(void *dst, const void *src, unsigned long cnt); | ||
187 | unsigned long (*to)(void *dst, const void *src, unsigned long cnt); | ||
188 | }; | ||
189 | |||
185 | #ifdef CONFIG_SUPERH32 | 190 | #ifdef CONFIG_SUPERH32 |
186 | # include "system_32.h" | 191 | # include "system_32.h" |
187 | #else | 192 | #else |
diff --git a/include/asm-sh/system_32.h b/include/asm-sh/system_32.h index 7ff08d956ba8..f11bcf0855ed 100644 --- a/include/asm-sh/system_32.h +++ b/include/asm-sh/system_32.h | |||
@@ -96,4 +96,7 @@ do { \ | |||
96 | : "=&r" (__dummy)); \ | 96 | : "=&r" (__dummy)); \ |
97 | } while (0) | 97 | } while (0) |
98 | 98 | ||
99 | int handle_unaligned_access(opcode_t instruction, struct pt_regs *regs, | ||
100 | struct mem_access *ma); | ||
101 | |||
99 | #endif /* __ASM_SH_SYSTEM_32_H */ | 102 | #endif /* __ASM_SH_SYSTEM_32_H */ |
diff --git a/include/asm-sh/termbits.h b/include/asm-sh/termbits.h index 7ee1b42eeab0..77db116948cf 100644 --- a/include/asm-sh/termbits.h +++ b/include/asm-sh/termbits.h | |||
@@ -140,6 +140,7 @@ struct ktermios { | |||
140 | #define HUPCL 0002000 | 140 | #define HUPCL 0002000 |
141 | #define CLOCAL 0004000 | 141 | #define CLOCAL 0004000 |
142 | #define CBAUDEX 0010000 | 142 | #define CBAUDEX 0010000 |
143 | #define BOTHER 0010000 | ||
143 | #define B57600 0010001 | 144 | #define B57600 0010001 |
144 | #define B115200 0010002 | 145 | #define B115200 0010002 |
145 | #define B230400 0010003 | 146 | #define B230400 0010003 |
@@ -155,10 +156,12 @@ struct ktermios { | |||
155 | #define B3000000 0010015 | 156 | #define B3000000 0010015 |
156 | #define B3500000 0010016 | 157 | #define B3500000 0010016 |
157 | #define B4000000 0010017 | 158 | #define B4000000 0010017 |
158 | #define CIBAUD 002003600000 /* input baud rate (not used) */ | 159 | #define CIBAUD 002003600000 /* input baud rate */ |
159 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ | 160 | #define CMSPAR 010000000000 /* mark or space (stick) parity */ |
160 | #define CRTSCTS 020000000000 /* flow control */ | 161 | #define CRTSCTS 020000000000 /* flow control */ |
161 | 162 | ||
163 | #define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */ | ||
164 | |||
162 | /* c_lflag bits */ | 165 | /* c_lflag bits */ |
163 | #define ISIG 0000001 | 166 | #define ISIG 0000001 |
164 | #define ICANON 0000002 | 167 | #define ICANON 0000002 |
diff --git a/include/asm-sh/termios.h b/include/asm-sh/termios.h index e7c8f86ef890..0a8c793c76f2 100644 --- a/include/asm-sh/termios.h +++ b/include/asm-sh/termios.h | |||
@@ -80,8 +80,10 @@ struct termio { | |||
80 | copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ | 80 | copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ |
81 | }) | 81 | }) |
82 | 82 | ||
83 | #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) | 83 | #define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2)) |
84 | #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) | 84 | #define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2)) |
85 | #define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios)) | ||
86 | #define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios)) | ||
85 | 87 | ||
86 | #endif /* __KERNEL__ */ | 88 | #endif /* __KERNEL__ */ |
87 | 89 | ||
diff --git a/include/asm-sh/tlb.h b/include/asm-sh/tlb.h index 56ad1fb888a2..88ff1ae8a6b8 100644 --- a/include/asm-sh/tlb.h +++ b/include/asm-sh/tlb.h | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | #define tlb_flush(tlb) flush_tlb_mm((tlb)->mm) | 21 | #define tlb_flush(tlb) flush_tlb_mm((tlb)->mm) |
22 | 22 | ||
23 | #include <linux/pagemap.h> | ||
23 | #include <asm-generic/tlb.h> | 24 | #include <asm-generic/tlb.h> |
24 | 25 | ||
25 | #endif /* __ASSEMBLY__ */ | 26 | #endif /* __ASSEMBLY__ */ |
diff --git a/include/asm-sh/uaccess.h b/include/asm-sh/uaccess.h index ff24ce95b238..b3440c305b5d 100644 --- a/include/asm-sh/uaccess.h +++ b/include/asm-sh/uaccess.h | |||
@@ -1,5 +1,34 @@ | |||
1 | #ifndef __ASM_SH_UACCESS_H | ||
2 | #define __ASM_SH_UACCESS_H | ||
3 | |||
1 | #ifdef CONFIG_SUPERH32 | 4 | #ifdef CONFIG_SUPERH32 |
2 | # include "uaccess_32.h" | 5 | # include "uaccess_32.h" |
3 | #else | 6 | #else |
4 | # include "uaccess_64.h" | 7 | # include "uaccess_64.h" |
5 | #endif | 8 | #endif |
9 | |||
10 | static inline unsigned long | ||
11 | copy_from_user(void *to, const void __user *from, unsigned long n) | ||
12 | { | ||
13 | unsigned long __copy_from = (unsigned long) from; | ||
14 | __kernel_size_t __copy_size = (__kernel_size_t) n; | ||
15 | |||
16 | if (__copy_size && __access_ok(__copy_from, __copy_size)) | ||
17 | return __copy_user(to, from, __copy_size); | ||
18 | |||
19 | return __copy_size; | ||
20 | } | ||
21 | |||
22 | static inline unsigned long | ||
23 | copy_to_user(void __user *to, const void *from, unsigned long n) | ||
24 | { | ||
25 | unsigned long __copy_to = (unsigned long) to; | ||
26 | __kernel_size_t __copy_size = (__kernel_size_t) n; | ||
27 | |||
28 | if (__copy_size && __access_ok(__copy_to, __copy_size)) | ||
29 | return __copy_user(to, from, __copy_size); | ||
30 | |||
31 | return __copy_size; | ||
32 | } | ||
33 | |||
34 | #endif /* __ASM_SH_UACCESS_H */ | ||
diff --git a/include/asm-sh/uaccess_32.h b/include/asm-sh/uaccess_32.h index b6082f3c1dc4..c0318b608893 100644 --- a/include/asm-sh/uaccess_32.h +++ b/include/asm-sh/uaccess_32.h | |||
@@ -10,8 +10,8 @@ | |||
10 | * Copyright (C) 1996, 1997, 1998 by Ralf Baechle | 10 | * Copyright (C) 1996, 1997, 1998 by Ralf Baechle |
11 | * and i386 version. | 11 | * and i386 version. |
12 | */ | 12 | */ |
13 | #ifndef __ASM_SH_UACCESS_H | 13 | #ifndef __ASM_SH_UACCESS_32_H |
14 | #define __ASM_SH_UACCESS_H | 14 | #define __ASM_SH_UACCESS_32_H |
15 | 15 | ||
16 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
17 | #include <linux/sched.h> | 17 | #include <linux/sched.h> |
@@ -302,24 +302,6 @@ extern void __put_user_unknown(void); | |||
302 | /* Return the number of bytes NOT copied */ | 302 | /* Return the number of bytes NOT copied */ |
303 | __kernel_size_t __copy_user(void *to, const void *from, __kernel_size_t n); | 303 | __kernel_size_t __copy_user(void *to, const void *from, __kernel_size_t n); |
304 | 304 | ||
305 | #define copy_to_user(to,from,n) ({ \ | ||
306 | void *__copy_to = (void *) (to); \ | ||
307 | __kernel_size_t __copy_size = (__kernel_size_t) (n); \ | ||
308 | __kernel_size_t __copy_res; \ | ||
309 | if(__copy_size && __access_ok((unsigned long)__copy_to, __copy_size)) { \ | ||
310 | __copy_res = __copy_user(__copy_to, (void *) (from), __copy_size); \ | ||
311 | } else __copy_res = __copy_size; \ | ||
312 | __copy_res; }) | ||
313 | |||
314 | #define copy_from_user(to,from,n) ({ \ | ||
315 | void *__copy_to = (void *) (to); \ | ||
316 | void *__copy_from = (void *) (from); \ | ||
317 | __kernel_size_t __copy_size = (__kernel_size_t) (n); \ | ||
318 | __kernel_size_t __copy_res; \ | ||
319 | if(__copy_size && __access_ok((unsigned long)__copy_from, __copy_size)) { \ | ||
320 | __copy_res = __copy_user(__copy_to, __copy_from, __copy_size); \ | ||
321 | } else __copy_res = __copy_size; \ | ||
322 | __copy_res; }) | ||
323 | 305 | ||
324 | static __always_inline unsigned long | 306 | static __always_inline unsigned long |
325 | __copy_from_user(void *to, const void __user *from, unsigned long n) | 307 | __copy_from_user(void *to, const void __user *from, unsigned long n) |
@@ -507,4 +489,4 @@ struct exception_table_entry | |||
507 | 489 | ||
508 | extern int fixup_exception(struct pt_regs *regs); | 490 | extern int fixup_exception(struct pt_regs *regs); |
509 | 491 | ||
510 | #endif /* __ASM_SH_UACCESS_H */ | 492 | #endif /* __ASM_SH_UACCESS_32_H */ |
diff --git a/include/asm-sh/uaccess_64.h b/include/asm-sh/uaccess_64.h index d54ec082d25a..f956b7b316c7 100644 --- a/include/asm-sh/uaccess_64.h +++ b/include/asm-sh/uaccess_64.h | |||
@@ -202,15 +202,6 @@ extern void __put_user_unknown(void); | |||
202 | /* XXX: should be such that: 4byte and the rest. */ | 202 | /* XXX: should be such that: 4byte and the rest. */ |
203 | extern __kernel_size_t __copy_user(void *__to, const void *__from, __kernel_size_t __n); | 203 | extern __kernel_size_t __copy_user(void *__to, const void *__from, __kernel_size_t __n); |
204 | 204 | ||
205 | #define copy_to_user(to,from,n) ({ \ | ||
206 | void *__copy_to = (void *) (to); \ | ||
207 | __kernel_size_t __copy_size = (__kernel_size_t) (n); \ | ||
208 | __kernel_size_t __copy_res; \ | ||
209 | if(__copy_size && __access_ok((unsigned long)__copy_to, __copy_size)) { \ | ||
210 | __copy_res = __copy_user(__copy_to, (void *) (from), __copy_size); \ | ||
211 | } else __copy_res = __copy_size; \ | ||
212 | __copy_res; }) | ||
213 | |||
214 | #define copy_to_user_ret(to,from,n,retval) ({ \ | 205 | #define copy_to_user_ret(to,from,n,retval) ({ \ |
215 | if (copy_to_user(to,from,n)) \ | 206 | if (copy_to_user(to,from,n)) \ |
216 | return retval; \ | 207 | return retval; \ |
@@ -225,16 +216,6 @@ if (__copy_to_user(to,from,n)) \ | |||
225 | return retval; \ | 216 | return retval; \ |
226 | }) | 217 | }) |
227 | 218 | ||
228 | #define copy_from_user(to,from,n) ({ \ | ||
229 | void *__copy_to = (void *) (to); \ | ||
230 | void *__copy_from = (void *) (from); \ | ||
231 | __kernel_size_t __copy_size = (__kernel_size_t) (n); \ | ||
232 | __kernel_size_t __copy_res; \ | ||
233 | if(__copy_size && __access_ok((unsigned long)__copy_from, __copy_size)) { \ | ||
234 | __copy_res = __copy_user(__copy_to, __copy_from, __copy_size); \ | ||
235 | } else __copy_res = __copy_size; \ | ||
236 | __copy_res; }) | ||
237 | |||
238 | #define copy_from_user_ret(to,from,n,retval) ({ \ | 219 | #define copy_from_user_ret(to,from,n,retval) ({ \ |
239 | if (copy_from_user(to,from,n)) \ | 220 | if (copy_from_user(to,from,n)) \ |
240 | return retval; \ | 221 | return retval; \ |
diff --git a/include/asm-sh/unistd_32.h b/include/asm-sh/unistd_32.h index 433fd1b48fa2..0b07212ec659 100644 --- a/include/asm-sh/unistd_32.h +++ b/include/asm-sh/unistd_32.h | |||
@@ -330,11 +330,13 @@ | |||
330 | #define __NR_epoll_pwait 319 | 330 | #define __NR_epoll_pwait 319 |
331 | #define __NR_utimensat 320 | 331 | #define __NR_utimensat 320 |
332 | #define __NR_signalfd 321 | 332 | #define __NR_signalfd 321 |
333 | /* #define __NR_timerfd 322 removed */ | 333 | #define __NR_timerfd_create 322 |
334 | #define __NR_eventfd 323 | 334 | #define __NR_eventfd 323 |
335 | #define __NR_fallocate 324 | 335 | #define __NR_fallocate 324 |
336 | #define __NR_timerfd_settime 325 | ||
337 | #define __NR_timerfd_gettime 326 | ||
336 | 338 | ||
337 | #define NR_syscalls 325 | 339 | #define NR_syscalls 327 |
338 | 340 | ||
339 | #ifdef __KERNEL__ | 341 | #ifdef __KERNEL__ |
340 | 342 | ||
diff --git a/include/asm-sh/unistd_64.h b/include/asm-sh/unistd_64.h index 108d2ba897fe..9d21eab52427 100644 --- a/include/asm-sh/unistd_64.h +++ b/include/asm-sh/unistd_64.h | |||
@@ -90,7 +90,7 @@ | |||
90 | #define __NR_sigpending 73 | 90 | #define __NR_sigpending 73 |
91 | #define __NR_sethostname 74 | 91 | #define __NR_sethostname 74 |
92 | #define __NR_setrlimit 75 | 92 | #define __NR_setrlimit 75 |
93 | #define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */ | 93 | #define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */ |
94 | #define __NR_getrusage 77 | 94 | #define __NR_getrusage 77 |
95 | #define __NR_gettimeofday 78 | 95 | #define __NR_gettimeofday 78 |
96 | #define __NR_settimeofday 79 | 96 | #define __NR_settimeofday 79 |
@@ -370,9 +370,11 @@ | |||
370 | #define __NR_epoll_pwait 347 | 370 | #define __NR_epoll_pwait 347 |
371 | #define __NR_utimensat 348 | 371 | #define __NR_utimensat 348 |
372 | #define __NR_signalfd 349 | 372 | #define __NR_signalfd 349 |
373 | /* #define __NR_timerfd 350 removed */ | 373 | #define __NR_timerfd_create 350 |
374 | #define __NR_eventfd 351 | 374 | #define __NR_eventfd 351 |
375 | #define __NR_fallocate 352 | 375 | #define __NR_fallocate 352 |
376 | #define __NR_timerfd_settime 353 | ||
377 | #define __NR_timerfd_gettime 354 | ||
376 | 378 | ||
377 | #ifdef __KERNEL__ | 379 | #ifdef __KERNEL__ |
378 | 380 | ||