diff options
author | Paulius Zaleckas <paulius.zaleckas@teltonika.lt> | 2009-03-25 07:10:01 -0400 |
---|---|---|
committer | Paulius Zaleckas <paulius.zaleckas@teltonika.lt> | 2009-03-25 07:10:01 -0400 |
commit | 28853ac8fe5221de74a14f1182d7b2b383dfd85c (patch) | |
tree | dcfd9b20028e5a3a9504e26d2c9060f4746fc83a /arch/arm/include | |
parent | bba7d0b9ba0f04d25145de8170a17a3a07bbfdde (diff) |
ARM: Add support for FA526 v2
Adds support for Faraday FA526 core. This core is used at least by:
Cortina Systems Gemini and Centroid family
Cavium Networks ECONA family
Grain Media GM8120
Pixelplus ImageARM
Prolific PL-1029
Faraday IP evaluation boards
v2:
- move TLB_BTB to separate patch
- update copyrights
Signed-off-by: Paulius Zaleckas <paulius.zaleckas@teltonika.lt>
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/cacheflush.h | 8 | ||||
-rw-r--r-- | arch/arm/include/asm/page.h | 8 | ||||
-rw-r--r-- | arch/arm/include/asm/proc-fns.h | 8 | ||||
-rw-r--r-- | arch/arm/include/asm/system.h | 6 | ||||
-rw-r--r-- | arch/arm/include/asm/tlbflush.h | 19 |
5 files changed, 49 insertions, 0 deletions
diff --git a/arch/arm/include/asm/cacheflush.h b/arch/arm/include/asm/cacheflush.h index 6cbd8fdc9f1f..a6b8b90ed57f 100644 --- a/arch/arm/include/asm/cacheflush.h +++ b/arch/arm/include/asm/cacheflush.h | |||
@@ -46,6 +46,14 @@ | |||
46 | # define MULTI_CACHE 1 | 46 | # define MULTI_CACHE 1 |
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | #if defined(CONFIG_CPU_FA526) | ||
50 | # ifdef _CACHE | ||
51 | # define MULTI_CACHE 1 | ||
52 | # else | ||
53 | # define _CACHE fa | ||
54 | # endif | ||
55 | #endif | ||
56 | |||
49 | #if defined(CONFIG_CPU_ARM926T) | 57 | #if defined(CONFIG_CPU_ARM926T) |
50 | # ifdef _CACHE | 58 | # ifdef _CACHE |
51 | # define MULTI_CACHE 1 | 59 | # define MULTI_CACHE 1 |
diff --git a/arch/arm/include/asm/page.h b/arch/arm/include/asm/page.h index f341c9dbd662..e6eb8a67b807 100644 --- a/arch/arm/include/asm/page.h +++ b/arch/arm/include/asm/page.h | |||
@@ -76,6 +76,14 @@ | |||
76 | # endif | 76 | # endif |
77 | #endif | 77 | #endif |
78 | 78 | ||
79 | #ifdef CONFIG_CPU_COPY_FA | ||
80 | # ifdef _USER | ||
81 | # define MULTI_USER 1 | ||
82 | # else | ||
83 | # define _USER fa | ||
84 | # endif | ||
85 | #endif | ||
86 | |||
79 | #ifdef CONFIG_CPU_SA1100 | 87 | #ifdef CONFIG_CPU_SA1100 |
80 | # ifdef _USER | 88 | # ifdef _USER |
81 | # define MULTI_USER 1 | 89 | # define MULTI_USER 1 |
diff --git a/arch/arm/include/asm/proc-fns.h b/arch/arm/include/asm/proc-fns.h index db80203b68e0..00949281d3ee 100644 --- a/arch/arm/include/asm/proc-fns.h +++ b/arch/arm/include/asm/proc-fns.h | |||
@@ -89,6 +89,14 @@ | |||
89 | # define CPU_NAME cpu_arm922 | 89 | # define CPU_NAME cpu_arm922 |
90 | # endif | 90 | # endif |
91 | # endif | 91 | # endif |
92 | # ifdef CONFIG_CPU_FA526 | ||
93 | # ifdef CPU_NAME | ||
94 | # undef MULTI_CPU | ||
95 | # define MULTI_CPU | ||
96 | # else | ||
97 | # define CPU_NAME cpu_fa526 | ||
98 | # endif | ||
99 | # endif | ||
92 | # ifdef CONFIG_CPU_ARM925T | 100 | # ifdef CONFIG_CPU_ARM925T |
93 | # ifdef CPU_NAME | 101 | # ifdef CPU_NAME |
94 | # undef MULTI_CPU | 102 | # undef MULTI_CPU |
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 811be55f338e..d6a4dad99c9b 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h | |||
@@ -125,6 +125,12 @@ extern unsigned int user_debug; | |||
125 | : : "r" (0) : "memory") | 125 | : : "r" (0) : "memory") |
126 | #define dmb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \ | 126 | #define dmb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \ |
127 | : : "r" (0) : "memory") | 127 | : : "r" (0) : "memory") |
128 | #elif defined(CONFIG_CPU_FA526) | ||
129 | #define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ | ||
130 | : : "r" (0) : "memory") | ||
131 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | ||
132 | : : "r" (0) : "memory") | ||
133 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | ||
128 | #else | 134 | #else |
129 | #define isb() __asm__ __volatile__ ("" : : : "memory") | 135 | #define isb() __asm__ __volatile__ ("" : : : "memory") |
130 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | 136 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ |
diff --git a/arch/arm/include/asm/tlbflush.h b/arch/arm/include/asm/tlbflush.h index ffedd2494eab..a62218013c78 100644 --- a/arch/arm/include/asm/tlbflush.h +++ b/arch/arm/include/asm/tlbflush.h | |||
@@ -54,6 +54,7 @@ | |||
54 | * v4wb - ARMv4 with write buffer without I TLB flush entry instruction | 54 | * v4wb - ARMv4 with write buffer without I TLB flush entry instruction |
55 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction | 55 | * v4wbi - ARMv4 with write buffer with I TLB flush entry instruction |
56 | * fr - Feroceon (v4wbi with non-outer-cacheable page table walks) | 56 | * fr - Feroceon (v4wbi with non-outer-cacheable page table walks) |
57 | * fa - Faraday (v4 with write buffer with UTLB and branch target buffer (BTB)) | ||
57 | * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction | 58 | * v6wbi - ARMv6 with write buffer with I TLB flush entry instruction |
58 | * v7wbi - identical to v6wbi | 59 | * v7wbi - identical to v6wbi |
59 | */ | 60 | */ |
@@ -90,6 +91,22 @@ | |||
90 | # define v4_always_flags (-1UL) | 91 | # define v4_always_flags (-1UL) |
91 | #endif | 92 | #endif |
92 | 93 | ||
94 | #define fa_tlb_flags (TLB_WB | TLB_BTB | TLB_DCLEAN | \ | ||
95 | TLB_V4_U_FULL | TLB_V4_U_PAGE) | ||
96 | |||
97 | #ifdef CONFIG_CPU_TLB_FA | ||
98 | # define fa_possible_flags fa_tlb_flags | ||
99 | # define fa_always_flags fa_tlb_flags | ||
100 | # ifdef _TLB | ||
101 | # define MULTI_TLB 1 | ||
102 | # else | ||
103 | # define _TLB fa | ||
104 | # endif | ||
105 | #else | ||
106 | # define fa_possible_flags 0 | ||
107 | # define fa_always_flags (-1UL) | ||
108 | #endif | ||
109 | |||
93 | #define v4wbi_tlb_flags (TLB_WB | TLB_DCLEAN | \ | 110 | #define v4wbi_tlb_flags (TLB_WB | TLB_DCLEAN | \ |
94 | TLB_V4_I_FULL | TLB_V4_D_FULL | \ | 111 | TLB_V4_I_FULL | TLB_V4_D_FULL | \ |
95 | TLB_V4_I_PAGE | TLB_V4_D_PAGE) | 112 | TLB_V4_I_PAGE | TLB_V4_D_PAGE) |
@@ -268,6 +285,7 @@ extern struct cpu_tlb_fns cpu_tlb; | |||
268 | v4wbi_possible_flags | \ | 285 | v4wbi_possible_flags | \ |
269 | fr_possible_flags | \ | 286 | fr_possible_flags | \ |
270 | v4wb_possible_flags | \ | 287 | v4wb_possible_flags | \ |
288 | fa_possible_flags | \ | ||
271 | v6wbi_possible_flags | \ | 289 | v6wbi_possible_flags | \ |
272 | v7wbi_possible_flags) | 290 | v7wbi_possible_flags) |
273 | 291 | ||
@@ -276,6 +294,7 @@ extern struct cpu_tlb_fns cpu_tlb; | |||
276 | v4wbi_always_flags & \ | 294 | v4wbi_always_flags & \ |
277 | fr_always_flags & \ | 295 | fr_always_flags & \ |
278 | v4wb_always_flags & \ | 296 | v4wb_always_flags & \ |
297 | fa_always_flags & \ | ||
279 | v6wbi_always_flags & \ | 298 | v6wbi_always_flags & \ |
280 | v7wbi_always_flags) | 299 | v7wbi_always_flags) |
281 | 300 | ||