diff options
Diffstat (limited to 'arch/blackfin/include/asm')
-rw-r--r-- | arch/blackfin/include/asm/cacheflush.h | 27 | ||||
-rw-r--r-- | arch/blackfin/include/asm/cplbinit.h | 17 | ||||
-rw-r--r-- | arch/blackfin/include/asm/io.h | 30 | ||||
-rw-r--r-- | arch/blackfin/include/asm/timex.h | 2 |
4 files changed, 53 insertions, 23 deletions
diff --git a/arch/blackfin/include/asm/cacheflush.h b/arch/blackfin/include/asm/cacheflush.h index 5ef9e35e9c3b..4403415583fa 100644 --- a/arch/blackfin/include/asm/cacheflush.h +++ b/arch/blackfin/include/asm/cacheflush.h | |||
@@ -30,11 +30,11 @@ | |||
30 | #ifndef _BLACKFIN_CACHEFLUSH_H | 30 | #ifndef _BLACKFIN_CACHEFLUSH_H |
31 | #define _BLACKFIN_CACHEFLUSH_H | 31 | #define _BLACKFIN_CACHEFLUSH_H |
32 | 32 | ||
33 | extern void blackfin_icache_dcache_flush_range(unsigned int, unsigned int); | 33 | extern void blackfin_icache_dcache_flush_range(unsigned long start_address, unsigned long end_address); |
34 | extern void blackfin_icache_flush_range(unsigned int, unsigned int); | 34 | extern void blackfin_icache_flush_range(unsigned long start_address, unsigned long end_address); |
35 | extern void blackfin_dcache_flush_range(unsigned int, unsigned int); | 35 | extern void blackfin_dcache_flush_range(unsigned long start_address, unsigned long end_address); |
36 | extern void blackfin_dcache_invalidate_range(unsigned int, unsigned int); | 36 | extern void blackfin_dcache_invalidate_range(unsigned long start_address, unsigned long end_address); |
37 | extern void blackfin_dflush_page(void *); | 37 | extern void blackfin_dflush_page(void *page); |
38 | 38 | ||
39 | #define flush_dcache_mmap_lock(mapping) do { } while (0) | 39 | #define flush_dcache_mmap_lock(mapping) do { } while (0) |
40 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) | 40 | #define flush_dcache_mmap_unlock(mapping) do { } while (0) |
@@ -85,4 +85,21 @@ do { memcpy(dst, src, len); \ | |||
85 | # define flush_dcache_page(page) do { } while (0) | 85 | # define flush_dcache_page(page) do { } while (0) |
86 | #endif | 86 | #endif |
87 | 87 | ||
88 | extern unsigned long reserved_mem_dcache_on; | ||
89 | extern unsigned long reserved_mem_icache_on; | ||
90 | |||
91 | static inline int bfin_addr_dcachable(unsigned long addr) | ||
92 | { | ||
93 | #ifdef CONFIG_BFIN_DCACHE | ||
94 | if (addr < (_ramend - DMA_UNCACHED_REGION)) | ||
95 | return 1; | ||
96 | #endif | ||
97 | |||
98 | if (reserved_mem_dcache_on && | ||
99 | addr >= _ramend && addr < physical_mem_end) | ||
100 | return 1; | ||
101 | |||
102 | return 0; | ||
103 | } | ||
104 | |||
88 | #endif /* _BLACKFIN_ICACHEFLUSH_H */ | 105 | #endif /* _BLACKFIN_ICACHEFLUSH_H */ |
diff --git a/arch/blackfin/include/asm/cplbinit.h b/arch/blackfin/include/asm/cplbinit.h index d179b747ff03..f845b41147ba 100644 --- a/arch/blackfin/include/asm/cplbinit.h +++ b/arch/blackfin/include/asm/cplbinit.h | |||
@@ -87,23 +87,6 @@ extern u_long dpdt_swapcount_table[]; | |||
87 | 87 | ||
88 | #endif /* CONFIG_MPU */ | 88 | #endif /* CONFIG_MPU */ |
89 | 89 | ||
90 | extern unsigned long reserved_mem_dcache_on; | ||
91 | extern unsigned long reserved_mem_icache_on; | ||
92 | |||
93 | extern void generate_cplb_tables(void); | 90 | extern void generate_cplb_tables(void); |
94 | 91 | ||
95 | static inline int bfin_addr_dcachable(unsigned long addr) | ||
96 | { | ||
97 | #ifdef CONFIG_BFIN_DCACHE | ||
98 | if (addr < (_ramend - DMA_UNCACHED_REGION)) | ||
99 | return 1; | ||
100 | #endif | ||
101 | |||
102 | if (reserved_mem_dcache_on && | ||
103 | addr >= _ramend && addr < physical_mem_end) | ||
104 | return 1; | ||
105 | |||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | #endif | 92 | #endif |
diff --git a/arch/blackfin/include/asm/io.h b/arch/blackfin/include/asm/io.h index cbbf7ffdbbff..7dc77a21fdf3 100644 --- a/arch/blackfin/include/asm/io.h +++ b/arch/blackfin/include/asm/io.h | |||
@@ -134,6 +134,36 @@ extern void dma_insb(unsigned long port, void *addr, unsigned short count); | |||
134 | extern void dma_insw(unsigned long port, void *addr, unsigned short count); | 134 | extern void dma_insw(unsigned long port, void *addr, unsigned short count); |
135 | extern void dma_insl(unsigned long port, void *addr, unsigned short count); | 135 | extern void dma_insl(unsigned long port, void *addr, unsigned short count); |
136 | 136 | ||
137 | static inline void readsl(const void __iomem *addr, void *buf, int len) | ||
138 | { | ||
139 | insl((unsigned long)addr, buf, len); | ||
140 | } | ||
141 | |||
142 | static inline void readsw(const void __iomem *addr, void *buf, int len) | ||
143 | { | ||
144 | insw((unsigned long)addr, buf, len); | ||
145 | } | ||
146 | |||
147 | static inline void readsb(const void __iomem *addr, void *buf, int len) | ||
148 | { | ||
149 | insb((unsigned long)addr, buf, len); | ||
150 | } | ||
151 | |||
152 | static inline void writesl(const void __iomem *addr, const void *buf, int len) | ||
153 | { | ||
154 | outsl((unsigned long)addr, buf, len); | ||
155 | } | ||
156 | |||
157 | static inline void writesw(const void __iomem *addr, const void *buf, int len) | ||
158 | { | ||
159 | outsw((unsigned long)addr, buf, len); | ||
160 | } | ||
161 | |||
162 | static inline void writesb(const void __iomem *addr, const void *buf, int len) | ||
163 | { | ||
164 | outsb((unsigned long)addr, buf, len); | ||
165 | } | ||
166 | |||
137 | /* | 167 | /* |
138 | * Map some physical address range into the kernel address space. | 168 | * Map some physical address range into the kernel address space. |
139 | */ | 169 | */ |
diff --git a/arch/blackfin/include/asm/timex.h b/arch/blackfin/include/asm/timex.h index 22b0806161bb..248aeb066805 100644 --- a/arch/blackfin/include/asm/timex.h +++ b/arch/blackfin/include/asm/timex.h | |||
@@ -16,7 +16,7 @@ typedef unsigned long long cycles_t; | |||
16 | static inline cycles_t get_cycles(void) | 16 | static inline cycles_t get_cycles(void) |
17 | { | 17 | { |
18 | unsigned long tmp, tmp2; | 18 | unsigned long tmp, tmp2; |
19 | __asm__("%0 = cycles; %1 = cycles2;" : "=d"(tmp), "=d"(tmp2)); | 19 | __asm__ __volatile__("%0 = cycles; %1 = cycles2;" : "=d"(tmp), "=d"(tmp2)); |
20 | return tmp | ((cycles_t)tmp2 << 32); | 20 | return tmp | ((cycles_t)tmp2 << 32); |
21 | } | 21 | } |
22 | 22 | ||