diff options
| author | Paul Mundt <lethal@linux-sh.org> | 2008-07-28 19:09:44 -0400 |
|---|---|---|
| committer | Paul Mundt <lethal@linux-sh.org> | 2008-07-28 19:09:44 -0400 |
| commit | f15cbe6f1a4b4d9df59142fc8e4abb973302cf44 (patch) | |
| tree | 774d7b11abaaf33561ab8268bf51ddd9ceb79025 /arch/sh/include/cpu-sh2 | |
| parent | 25326277d8d1393d1c66240e6255aca780f9e3eb (diff) | |
sh: migrate to arch/sh/include/
This follows the sparc changes a439fe51a1f8eb087c22dd24d69cebae4a3addac.
Most of the moving about was done with Sam's directions at:
http://marc.info/?l=linux-sh&m=121724823706062&w=2
with subsequent hacking and fixups entirely my fault.
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'arch/sh/include/cpu-sh2')
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/addrspace.h | 19 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/cache.h | 41 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/cacheflush.h | 44 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/dma.h | 23 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/freq.h | 18 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/mmu_context.h | 16 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/rtc.h | 8 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/sigcontext.h | 17 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/timer.h | 6 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/ubc.h | 32 | ||||
| -rw-r--r-- | arch/sh/include/cpu-sh2/cpu/watchdog.h | 69 |
11 files changed, 293 insertions, 0 deletions
diff --git a/arch/sh/include/cpu-sh2/cpu/addrspace.h b/arch/sh/include/cpu-sh2/cpu/addrspace.h new file mode 100644 index 00000000000..2b9ab93efa4 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/addrspace.h | |||
| @@ -0,0 +1,19 @@ | |||
| 1 | /* | ||
| 2 | * Definitions for the address spaces of the SH-2 CPUs. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2003 Paul Mundt | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_ADDRSPACE_H | ||
| 11 | #define __ASM_CPU_SH2_ADDRSPACE_H | ||
| 12 | |||
| 13 | #define P0SEG 0x00000000 | ||
| 14 | #define P1SEG 0x80000000 | ||
| 15 | #define P2SEG 0xa0000000 | ||
| 16 | #define P3SEG 0xc0000000 | ||
| 17 | #define P4SEG 0xe0000000 | ||
| 18 | |||
| 19 | #endif /* __ASM_CPU_SH2_ADDRSPACE_H */ | ||
diff --git a/arch/sh/include/cpu-sh2/cpu/cache.h b/arch/sh/include/cpu-sh2/cpu/cache.h new file mode 100644 index 00000000000..4e0b1650068 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/cache.h | |||
| @@ -0,0 +1,41 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-sh/cpu-sh2/cache.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2003 Paul Mundt | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_CACHE_H | ||
| 11 | #define __ASM_CPU_SH2_CACHE_H | ||
| 12 | |||
| 13 | #define L1_CACHE_SHIFT 4 | ||
| 14 | |||
| 15 | #define SH_CACHE_VALID 1 | ||
| 16 | #define SH_CACHE_UPDATED 2 | ||
| 17 | #define SH_CACHE_COMBINED 4 | ||
| 18 | #define SH_CACHE_ASSOC 8 | ||
| 19 | |||
| 20 | #if defined(CONFIG_CPU_SUBTYPE_SH7619) | ||
| 21 | #define CCR 0xffffffec | ||
| 22 | |||
| 23 | #define CCR_CACHE_CE 0x01 /* Cache enable */ | ||
| 24 | #define CCR_CACHE_WT 0x06 /* CCR[bit1=1,bit2=1] */ | ||
| 25 | /* 0x00000000-0x7fffffff: Write-through */ | ||
| 26 | /* 0x80000000-0x9fffffff: Write-back */ | ||
| 27 | /* 0xc0000000-0xdfffffff: Write-through */ | ||
| 28 | #define CCR_CACHE_CB 0x00 /* CCR[bit1=0,bit2=0] */ | ||
| 29 | /* 0x00000000-0x7fffffff: Write-back */ | ||
| 30 | /* 0x80000000-0x9fffffff: Write-through */ | ||
| 31 | /* 0xc0000000-0xdfffffff: Write-back */ | ||
| 32 | #define CCR_CACHE_CF 0x08 /* Cache invalidate */ | ||
| 33 | |||
| 34 | #define CACHE_OC_ADDRESS_ARRAY 0xf0000000 | ||
| 35 | #define CACHE_OC_DATA_ARRAY 0xf1000000 | ||
| 36 | |||
| 37 | #define CCR_CACHE_ENABLE CCR_CACHE_CE | ||
| 38 | #define CCR_CACHE_INVALIDATE CCR_CACHE_CF | ||
| 39 | #endif | ||
| 40 | |||
| 41 | #endif /* __ASM_CPU_SH2_CACHE_H */ | ||
diff --git a/arch/sh/include/cpu-sh2/cpu/cacheflush.h b/arch/sh/include/cpu-sh2/cpu/cacheflush.h new file mode 100644 index 00000000000..2979efb26de --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/cacheflush.h | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-sh/cpu-sh2/cacheflush.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2003 Paul Mundt | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_CACHEFLUSH_H | ||
| 11 | #define __ASM_CPU_SH2_CACHEFLUSH_H | ||
| 12 | |||
| 13 | /* | ||
| 14 | * Cache flushing: | ||
| 15 | * | ||
| 16 | * - flush_cache_all() flushes entire cache | ||
| 17 | * - flush_cache_mm(mm) flushes the specified mm context's cache lines | ||
| 18 | * - flush_cache_dup mm(mm) handles cache flushing when forking | ||
| 19 | * - flush_cache_page(mm, vmaddr, pfn) flushes a single page | ||
| 20 | * - flush_cache_range(vma, start, end) flushes a range of pages | ||
| 21 | * | ||
| 22 | * - flush_dcache_page(pg) flushes(wback&invalidates) a page for dcache | ||
| 23 | * - flush_icache_range(start, end) flushes(invalidates) a range for icache | ||
| 24 | * - flush_icache_page(vma, pg) flushes(invalidates) a page for icache | ||
| 25 | * | ||
| 26 | * Caches are indexed (effectively) by physical address on SH-2, so | ||
| 27 | * we don't need them. | ||
| 28 | */ | ||
| 29 | #define flush_cache_all() do { } while (0) | ||
| 30 | #define flush_cache_mm(mm) do { } while (0) | ||
| 31 | #define flush_cache_dup_mm(mm) do { } while (0) | ||
| 32 | #define flush_cache_range(vma, start, end) do { } while (0) | ||
| 33 | #define flush_cache_page(vma, vmaddr, pfn) do { } while (0) | ||
| 34 | #define flush_dcache_page(page) do { } while (0) | ||
| 35 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | ||
| 36 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | ||
| 37 | #define flush_icache_range(start, end) do { } while (0) | ||
| 38 | #define flush_icache_page(vma,pg) do { } while (0) | ||
| 39 | #define flush_icache_user_range(vma,pg,adr,len) do { } while (0) | ||
| 40 | #define flush_cache_sigtramp(vaddr) do { } while (0) | ||
| 41 | |||
| 42 | #define p3_cache_init() do { } while (0) | ||
| 43 | #endif /* __ASM_CPU_SH2_CACHEFLUSH_H */ | ||
| 44 | |||
diff --git a/arch/sh/include/cpu-sh2/cpu/dma.h b/arch/sh/include/cpu-sh2/cpu/dma.h new file mode 100644 index 00000000000..d66b43cdc63 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/dma.h | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | /* | ||
| 2 | * Definitions for the SH-2 DMAC. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2003 Paul Mundt | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_DMA_H | ||
| 11 | #define __ASM_CPU_SH2_DMA_H | ||
| 12 | |||
| 13 | #define SH_MAX_DMA_CHANNELS 2 | ||
| 14 | |||
| 15 | #define SAR ((unsigned long[]){ 0xffffff80, 0xffffff90 }) | ||
| 16 | #define DAR ((unsigned long[]){ 0xffffff84, 0xffffff94 }) | ||
| 17 | #define DMATCR ((unsigned long[]){ 0xffffff88, 0xffffff98 }) | ||
| 18 | #define CHCR ((unsigned long[]){ 0xfffffffc, 0xffffff9c }) | ||
| 19 | |||
| 20 | #define DMAOR 0xffffffb0 | ||
| 21 | |||
| 22 | #endif /* __ASM_CPU_SH2_DMA_H */ | ||
| 23 | |||
diff --git a/arch/sh/include/cpu-sh2/cpu/freq.h b/arch/sh/include/cpu-sh2/cpu/freq.h new file mode 100644 index 00000000000..31de475da70 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/freq.h | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-sh/cpu-sh2/freq.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2006 Yoshinori Sato | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_FREQ_H | ||
| 11 | #define __ASM_CPU_SH2_FREQ_H | ||
| 12 | |||
| 13 | #if defined(CONFIG_CPU_SUBTYPE_SH7619) | ||
| 14 | #define FREQCR 0xf815ff80 | ||
| 15 | #endif | ||
| 16 | |||
| 17 | #endif /* __ASM_CPU_SH2_FREQ_H */ | ||
| 18 | |||
diff --git a/arch/sh/include/cpu-sh2/cpu/mmu_context.h b/arch/sh/include/cpu-sh2/cpu/mmu_context.h new file mode 100644 index 00000000000..beeb299e01e --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/mmu_context.h | |||
| @@ -0,0 +1,16 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-sh/cpu-sh2/mmu_context.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2003 Paul Mundt | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_MMU_CONTEXT_H | ||
| 11 | #define __ASM_CPU_SH2_MMU_CONTEXT_H | ||
| 12 | |||
| 13 | /* No MMU */ | ||
| 14 | |||
| 15 | #endif /* __ASM_CPU_SH2_MMU_CONTEXT_H */ | ||
| 16 | |||
diff --git a/arch/sh/include/cpu-sh2/cpu/rtc.h b/arch/sh/include/cpu-sh2/cpu/rtc.h new file mode 100644 index 00000000000..39e2d6e9478 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/rtc.h | |||
| @@ -0,0 +1,8 @@ | |||
| 1 | #ifndef __ASM_SH_CPU_SH2_RTC_H | ||
| 2 | #define __ASM_SH_CPU_SH2_RTC_H | ||
| 3 | |||
| 4 | #define rtc_reg_size sizeof(u16) | ||
| 5 | #define RTC_BIT_INVERTED 0 | ||
| 6 | #define RTC_DEF_CAPABILITIES 0UL | ||
| 7 | |||
| 8 | #endif /* __ASM_SH_CPU_SH2_RTC_H */ | ||
diff --git a/arch/sh/include/cpu-sh2/cpu/sigcontext.h b/arch/sh/include/cpu-sh2/cpu/sigcontext.h new file mode 100644 index 00000000000..fe5c15dd6e8 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/sigcontext.h | |||
| @@ -0,0 +1,17 @@ | |||
| 1 | #ifndef __ASM_CPU_SH2_SIGCONTEXT_H | ||
| 2 | #define __ASM_CPU_SH2_SIGCONTEXT_H | ||
| 3 | |||
| 4 | struct sigcontext { | ||
| 5 | unsigned long oldmask; | ||
| 6 | |||
| 7 | /* CPU registers */ | ||
| 8 | unsigned long sc_regs[16]; | ||
| 9 | unsigned long sc_pc; | ||
| 10 | unsigned long sc_pr; | ||
| 11 | unsigned long sc_sr; | ||
| 12 | unsigned long sc_gbr; | ||
| 13 | unsigned long sc_mach; | ||
| 14 | unsigned long sc_macl; | ||
| 15 | }; | ||
| 16 | |||
| 17 | #endif /* __ASM_CPU_SH2_SIGCONTEXT_H */ | ||
diff --git a/arch/sh/include/cpu-sh2/cpu/timer.h b/arch/sh/include/cpu-sh2/cpu/timer.h new file mode 100644 index 00000000000..a39c241e819 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/timer.h | |||
| @@ -0,0 +1,6 @@ | |||
| 1 | #ifndef __ASM_CPU_SH2_TIMER_H | ||
| 2 | #define __ASM_CPU_SH2_TIMER_H | ||
| 3 | |||
| 4 | /* Nothing needed yet */ | ||
| 5 | |||
| 6 | #endif /* __ASM_CPU_SH2_TIMER_H */ | ||
diff --git a/arch/sh/include/cpu-sh2/cpu/ubc.h b/arch/sh/include/cpu-sh2/cpu/ubc.h new file mode 100644 index 00000000000..ba0e87f19c7 --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/ubc.h | |||
| @@ -0,0 +1,32 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-sh/cpu-sh2/ubc.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2003 Paul Mundt | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_UBC_H | ||
| 11 | #define __ASM_CPU_SH2_UBC_H | ||
| 12 | |||
| 13 | #define UBC_BARA 0xffffff40 | ||
| 14 | #define UBC_BAMRA 0xffffff44 | ||
| 15 | #define UBC_BBRA 0xffffff48 | ||
| 16 | #define UBC_BARB 0xffffff60 | ||
| 17 | #define UBC_BAMRB 0xffffff64 | ||
| 18 | #define UBC_BBRB 0xffffff68 | ||
| 19 | #define UBC_BDRB 0xffffff70 | ||
| 20 | #define UBC_BDMRB 0xffffff74 | ||
| 21 | #define UBC_BRCR 0xffffff78 | ||
| 22 | |||
| 23 | /* | ||
| 24 | * We don't have any ASID changes to make in the UBC on the SH-2. | ||
| 25 | * | ||
| 26 | * Make these purposely invalid to track misuse. | ||
| 27 | */ | ||
| 28 | #define UBC_BASRA 0x00000000 | ||
| 29 | #define UBC_BASRB 0x00000000 | ||
| 30 | |||
| 31 | #endif /* __ASM_CPU_SH2_UBC_H */ | ||
| 32 | |||
diff --git a/arch/sh/include/cpu-sh2/cpu/watchdog.h b/arch/sh/include/cpu-sh2/cpu/watchdog.h new file mode 100644 index 00000000000..393161c9c6d --- /dev/null +++ b/arch/sh/include/cpu-sh2/cpu/watchdog.h | |||
| @@ -0,0 +1,69 @@ | |||
| 1 | /* | ||
| 2 | * include/asm-sh/cpu-sh2/watchdog.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2002, 2003 Paul Mundt | ||
| 5 | * | ||
| 6 | * This file is subject to the terms and conditions of the GNU General Public | ||
| 7 | * License. See the file "COPYING" in the main directory of this archive | ||
| 8 | * for more details. | ||
| 9 | */ | ||
| 10 | #ifndef __ASM_CPU_SH2_WATCHDOG_H | ||
| 11 | #define __ASM_CPU_SH2_WATCHDOG_H | ||
| 12 | |||
| 13 | /* | ||
| 14 | * More SH-2 brilliance .. its not good enough that we can't read | ||
| 15 | * and write the same sizes to WTCNT, now we have to read and write | ||
| 16 | * with different sizes at different addresses for WTCNT _and_ RSTCSR. | ||
| 17 | * | ||
| 18 | * At least on the bright side no one has managed to screw over WTCSR | ||
| 19 | * in this fashion .. yet. | ||
| 20 | */ | ||
| 21 | /* Register definitions */ | ||
| 22 | #define WTCNT 0xfffffe80 | ||
| 23 | #define WTCSR 0xfffffe80 | ||
| 24 | #define RSTCSR 0xfffffe82 | ||
| 25 | |||
| 26 | #define WTCNT_R (WTCNT + 1) | ||
| 27 | #define RSTCSR_R (RSTCSR + 1) | ||
| 28 | |||
| 29 | /* Bit definitions */ | ||
| 30 | #define WTCSR_IOVF 0x80 | ||
| 31 | #define WTCSR_WT 0x40 | ||
| 32 | #define WTCSR_TME 0x20 | ||
| 33 | #define WTCSR_RSTS 0x00 | ||
| 34 | |||
| 35 | #define RSTCSR_RSTS 0x20 | ||
| 36 | |||
| 37 | /** | ||
| 38 | * sh_wdt_read_rstcsr - Read from Reset Control/Status Register | ||
| 39 | * | ||
| 40 | * Reads back the RSTCSR value. | ||
| 41 | */ | ||
| 42 | static inline __u8 sh_wdt_read_rstcsr(void) | ||
| 43 | { | ||
| 44 | /* | ||
| 45 | * Same read/write brain-damage as for WTCNT here.. | ||
| 46 | */ | ||
| 47 | return ctrl_inb(RSTCSR_R); | ||
| 48 | } | ||
| 49 | |||
| 50 | /** | ||
| 51 | * sh_wdt_write_csr - Write to Reset Control/Status Register | ||
| 52 | * | ||
| 53 | * @val: Value to write | ||
| 54 | * | ||
| 55 | * Writes the given value @val to the lower byte of the control/status | ||
| 56 | * register. The upper byte is set manually on each write. | ||
| 57 | */ | ||
| 58 | static inline void sh_wdt_write_rstcsr(__u8 val) | ||
| 59 | { | ||
| 60 | /* | ||
| 61 | * Note: Due to the brain-damaged nature of this register, | ||
| 62 | * we can't presently touch the WOVF bit, since the upper byte | ||
| 63 | * has to be swapped for this. So just leave it alone.. | ||
| 64 | */ | ||
| 65 | ctrl_outw((WTCNT_HIGH << 8) | (__u16)val, RSTCSR); | ||
| 66 | } | ||
| 67 | |||
| 68 | #endif /* __ASM_CPU_SH2_WATCHDOG_H */ | ||
| 69 | |||
