diff options
Diffstat (limited to 'arch/m68knommu/platform')
-rw-r--r-- | arch/m68knommu/platform/68328/Makefile | 1 | ||||
-rw-r--r-- | arch/m68knommu/platform/68328/head-rom.S | 18 | ||||
-rw-r--r-- | arch/m68knommu/platform/68328/ints.c | 20 | ||||
-rw-r--r-- | arch/m68knommu/platform/68328/romvec.S | 37 | ||||
-rw-r--r-- | arch/m68knommu/platform/68360/config.c | 14 | ||||
-rw-r--r-- | arch/m68knommu/platform/68360/head-ram.S | 19 | ||||
-rw-r--r-- | arch/m68knommu/platform/68360/head-rom.S | 17 | ||||
-rw-r--r-- | arch/m68knommu/platform/68360/ints.c | 1 | ||||
-rw-r--r-- | arch/m68knommu/platform/68EZ328/config.c | 14 | ||||
-rw-r--r-- | arch/m68knommu/platform/68VZ328/config.c | 14 |
10 files changed, 84 insertions, 71 deletions
diff --git a/arch/m68knommu/platform/68328/Makefile b/arch/m68knommu/platform/68328/Makefile index 1b3b719e4479..5e5435552d56 100644 --- a/arch/m68knommu/platform/68328/Makefile +++ b/arch/m68knommu/platform/68328/Makefile | |||
@@ -8,6 +8,7 @@ head-$(CONFIG_DRAGEN2) = head-de2.o | |||
8 | 8 | ||
9 | obj-y += entry.o ints.o timers.o | 9 | obj-y += entry.o ints.o timers.o |
10 | obj-$(CONFIG_M68328) += config.o | 10 | obj-$(CONFIG_M68328) += config.o |
11 | obj-$(CONFIG_ROM) += romvec.o | ||
11 | 12 | ||
12 | extra-y := head.o | 13 | extra-y := head.o |
13 | extra-$(CONFIG_M68328) += bootlogo.rh head.o | 14 | extra-$(CONFIG_M68328) += bootlogo.rh head.o |
diff --git a/arch/m68knommu/platform/68328/head-rom.S b/arch/m68knommu/platform/68328/head-rom.S index 2b448a297011..234430b9551c 100644 --- a/arch/m68knommu/platform/68328/head-rom.S +++ b/arch/m68knommu/platform/68328/head-rom.S | |||
@@ -28,6 +28,8 @@ _ramstart: | |||
28 | _ramend: | 28 | _ramend: |
29 | .long 0 | 29 | .long 0 |
30 | 30 | ||
31 | #define RAMEND (CONFIG_RAMBASE + CONFIG_RAMSIZE) | ||
32 | |||
31 | #ifdef CONFIG_INIT_LCD | 33 | #ifdef CONFIG_INIT_LCD |
32 | splash_bits: | 34 | splash_bits: |
33 | #include "bootlogo.rh" | 35 | #include "bootlogo.rh" |
@@ -48,7 +50,7 @@ _stext: movew #0x2700,%sr | |||
48 | moveb #0x81, 0xfffffA27 /* LCKCON */ | 50 | moveb #0x81, 0xfffffA27 /* LCKCON */ |
49 | movew #0xff00, 0xfffff412 /* LCD pins */ | 51 | movew #0xff00, 0xfffff412 /* LCD pins */ |
50 | #endif | 52 | #endif |
51 | moveal #__ramend-CONFIG_MEMORY_RESERVE*0x100000 - 0x10, %sp | 53 | moveal #RAMEND-CONFIG_MEMORY_RESERVE*0x100000 - 0x10, %sp |
52 | movew #32767, %d0 /* PLL settle wait loop */ | 54 | movew #32767, %d0 /* PLL settle wait loop */ |
53 | 1: subq #1, %d0 | 55 | 1: subq #1, %d0 |
54 | bne 1b | 56 | bne 1b |
@@ -73,13 +75,13 @@ _stext: movew #0x2700,%sr | |||
73 | bhi 1b | 75 | bhi 1b |
74 | 76 | ||
75 | movel #_sdata, %d0 | 77 | movel #_sdata, %d0 |
76 | movel %d0, _rambase | 78 | movel %d0, _rambase |
77 | movel #_ebss, %d0 | 79 | movel #_ebss, %d0 |
78 | movel %d0, _ramstart | 80 | movel %d0, _ramstart |
79 | movel #__ramend-CONFIG_MEMORY_RESERVE*0x100000, %d0 | 81 | movel #RAMEND-CONFIG_MEMORY_RESERVE*0x100000, %d0 |
80 | movel %d0, _ramend | 82 | movel %d0, _ramend |
81 | movel #__ramvec, %d0 | 83 | movel #CONFIG_VECTORBASE, %d0 |
82 | movel %d0, _ramvec | 84 | movel %d0, _ramvec |
83 | 85 | ||
84 | /* | 86 | /* |
85 | * load the current task pointer and stack | 87 | * load the current task pointer and stack |
diff --git a/arch/m68knommu/platform/68328/ints.c b/arch/m68knommu/platform/68328/ints.c index 7437217813d2..2dda7339aae5 100644 --- a/arch/m68knommu/platform/68328/ints.c +++ b/arch/m68knommu/platform/68328/ints.c | |||
@@ -18,6 +18,7 @@ | |||
18 | 18 | ||
19 | #include <asm/system.h> | 19 | #include <asm/system.h> |
20 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
21 | #include <asm/irqnode.h> | ||
21 | #include <asm/traps.h> | 22 | #include <asm/traps.h> |
22 | #include <asm/io.h> | 23 | #include <asm/io.h> |
23 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
@@ -82,25 +83,6 @@ unsigned int local_irq_count[NR_CPUS]; | |||
82 | /* irq node variables for the 32 (potential) on chip sources */ | 83 | /* irq node variables for the 32 (potential) on chip sources */ |
83 | static irq_node_t int_irq_list[NR_IRQS]; | 84 | static irq_node_t int_irq_list[NR_IRQS]; |
84 | 85 | ||
85 | #if !defined(CONFIG_DRAGEN2) | ||
86 | asm (".global _start, __ramend/n/t" | ||
87 | ".section .romvec/n" | ||
88 | "e_vectors:\n\t" | ||
89 | ".long __ramend-4, _start, buserr, trap, trap, trap, trap, trap\n\t" | ||
90 | ".long trap, trap, trap, trap, trap, trap, trap, trap\n\t" | ||
91 | ".long trap, trap, trap, trap, trap, trap, trap, trap\n\t" | ||
92 | ".long trap, trap, trap, trap\n\t" | ||
93 | ".long trap, trap, trap, trap\n\t" | ||
94 | /*.long inthandler, inthandler, inthandler, inthandler | ||
95 | .long inthandler4, inthandler, inthandler, inthandler */ | ||
96 | /* TRAP #0-15 */ | ||
97 | ".long system_call, trap, trap, trap, trap, trap, trap, trap\n\t" | ||
98 | ".long trap, trap, trap, trap, trap, trap, trap, trap\n\t" | ||
99 | ".long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0\n\t" | ||
100 | ".text\n" | ||
101 | "ignore: rte"); | ||
102 | #endif | ||
103 | |||
104 | /* | 86 | /* |
105 | * This function should be called during kernel startup to initialize | 87 | * This function should be called during kernel startup to initialize |
106 | * the IRQ handling routines. | 88 | * the IRQ handling routines. |
diff --git a/arch/m68knommu/platform/68328/romvec.S b/arch/m68knommu/platform/68328/romvec.S new file mode 100644 index 000000000000..3e7fe1e14913 --- /dev/null +++ b/arch/m68knommu/platform/68328/romvec.S | |||
@@ -0,0 +1,37 @@ | |||
1 | /* | ||
2 | * linux/arch/m68knommu/platform/68328/romvec.S | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file COPYING in the main directory of this archive | ||
6 | * for more details. | ||
7 | * | ||
8 | * Copyright 1996 Roman Zippel | ||
9 | * Copyright 1999 D. Jeff Dionne <jeff@rt-control.com> | ||
10 | * Copyright 2006 Greg Ungerer <gerg@snapgear.com> | ||
11 | */ | ||
12 | |||
13 | #include <linux/config.h> | ||
14 | |||
15 | .global _start | ||
16 | .global _buserr | ||
17 | .global trap | ||
18 | .global system_call | ||
19 | |||
20 | .section .romvec | ||
21 | |||
22 | e_vectors: | ||
23 | .long CONFIG_RAMBASE+CONFIG_RAMSIZE-4, _start, buserr, trap | ||
24 | .long trap, trap, trap, trap | ||
25 | .long trap, trap, trap, trap | ||
26 | .long trap, trap, trap, trap | ||
27 | .long trap, trap, trap, trap | ||
28 | .long trap, trap, trap, trap | ||
29 | .long trap, trap, trap, trap | ||
30 | .long trap, trap, trap, trap | ||
31 | /* TRAP #0-15 */ | ||
32 | .long system_call, trap, trap, trap | ||
33 | .long trap, trap, trap, trap | ||
34 | .long trap, trap, trap, trap | ||
35 | .long trap, trap, trap, trap | ||
36 | .long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 | ||
37 | |||
diff --git a/arch/m68knommu/platform/68360/config.c b/arch/m68knommu/platform/68360/config.c index 3db244625f0f..69c670dfd62b 100644 --- a/arch/m68knommu/platform/68360/config.c +++ b/arch/m68knommu/platform/68360/config.c | |||
@@ -141,13 +141,13 @@ int BSP_set_clock_mmss (unsigned long nowtime) | |||
141 | void BSP_reset (void) | 141 | void BSP_reset (void) |
142 | { | 142 | { |
143 | local_irq_disable(); | 143 | local_irq_disable(); |
144 | asm volatile (" | 144 | asm volatile ( |
145 | moveal #_start, %a0; | 145 | "moveal #_start, %a0;\n" |
146 | moveb #0, 0xFFFFF300; | 146 | "moveb #0, 0xFFFFF300;\n" |
147 | moveal 0(%a0), %sp; | 147 | "moveal 0(%a0), %sp;\n" |
148 | moveal 4(%a0), %a0; | 148 | "moveal 4(%a0), %a0;\n" |
149 | jmp (%a0); | 149 | "jmp (%a0);\n" |
150 | "); | 150 | ); |
151 | } | 151 | } |
152 | 152 | ||
153 | unsigned char *scc1_hwaddr; | 153 | unsigned char *scc1_hwaddr; |
diff --git a/arch/m68knommu/platform/68360/head-ram.S b/arch/m68knommu/platform/68360/head-ram.S index a5c639a51eef..f497713a4ec7 100644 --- a/arch/m68knommu/platform/68360/head-ram.S +++ b/arch/m68knommu/platform/68360/head-ram.S | |||
@@ -18,7 +18,6 @@ | |||
18 | .global _start | 18 | .global _start |
19 | 19 | ||
20 | .global _rambase | 20 | .global _rambase |
21 | .global __ramvec | ||
22 | .global _ramvec | 21 | .global _ramvec |
23 | .global _ramstart | 22 | .global _ramstart |
24 | .global _ramend | 23 | .global _ramend |
@@ -26,6 +25,8 @@ | |||
26 | .global _quicc_base | 25 | .global _quicc_base |
27 | .global _periph_base | 26 | .global _periph_base |
28 | 27 | ||
28 | #define RAMEND (CONFIG_RAMBASE + CONFIG_RAMSIZE) | ||
29 | |||
29 | #define REGB 0x1000 | 30 | #define REGB 0x1000 |
30 | #define PEPAR (_dprbase + REGB + 0x0016) | 31 | #define PEPAR (_dprbase + REGB + 0x0016) |
31 | #define GMR (_dprbase + REGB + 0x0040) | 32 | #define GMR (_dprbase + REGB + 0x0040) |
@@ -103,7 +104,7 @@ _stext: | |||
103 | nop | 104 | nop |
104 | ori.w #MCU_DISABLE_INTRPTS, %sr /* disable interrupts: */ | 105 | ori.w #MCU_DISABLE_INTRPTS, %sr /* disable interrupts: */ |
105 | /* We should not need to setup the boot stack the reset should do it. */ | 106 | /* We should not need to setup the boot stack the reset should do it. */ |
106 | movea.l #__ramend, %sp /*set up stack at the end of DRAM:*/ | 107 | movea.l #RAMEND, %sp /*set up stack at the end of DRAM:*/ |
107 | 108 | ||
108 | set_mbar_register: | 109 | set_mbar_register: |
109 | moveq.l #0x07, %d1 /* Setup MBAR */ | 110 | moveq.l #0x07, %d1 /* Setup MBAR */ |
@@ -163,7 +164,7 @@ configure_memory_controller: | |||
163 | move.l %d0, GMR | 164 | move.l %d0, GMR |
164 | 165 | ||
165 | configure_chip_select_0: | 166 | configure_chip_select_0: |
166 | move.l #__ramend, %d0 | 167 | move.l #RAMEND, %d0 |
167 | subi.l #__ramstart, %d0 | 168 | subi.l #__ramstart, %d0 |
168 | subq.l #0x01, %d0 | 169 | subq.l #0x01, %d0 |
169 | eori.l #SIM_OR_MASK, %d0 | 170 | eori.l #SIM_OR_MASK, %d0 |
@@ -234,16 +235,10 @@ store_ram_size: | |||
234 | /* Set ram size information */ | 235 | /* Set ram size information */ |
235 | move.l #_sdata, _rambase | 236 | move.l #_sdata, _rambase |
236 | move.l #_ebss, _ramstart | 237 | move.l #_ebss, _ramstart |
237 | move.l #__ramend, %d0 | 238 | move.l #RAMEND, %d0 |
238 | sub.l #0x1000, %d0 /* Reserve 4K for stack space.*/ | 239 | sub.l #0x1000, %d0 /* Reserve 4K for stack space.*/ |
239 | move.l %d0, _ramend /* Different from __ramend.*/ | 240 | move.l %d0, _ramend /* Different from RAMEND.*/ |
240 | 241 | ||
241 | store_flash_size: | ||
242 | /* Set rom size information */ | ||
243 | move.l #__rom_end, %d0 | ||
244 | sub.l #__rom_start, %d0 | ||
245 | move.l %d0, rom_length | ||
246 | |||
247 | pea 0 | 242 | pea 0 |
248 | pea env | 243 | pea env |
249 | pea %sp@(4) | 244 | pea %sp@(4) |
@@ -286,7 +281,7 @@ _dprbase: | |||
286 | */ | 281 | */ |
287 | 282 | ||
288 | .section ".data.initvect","awx" | 283 | .section ".data.initvect","awx" |
289 | .long __ramend /* Reset: Initial Stack Pointer - 0. */ | 284 | .long RAMEND /* Reset: Initial Stack Pointer - 0. */ |
290 | .long _start /* Reset: Initial Program Counter - 1. */ | 285 | .long _start /* Reset: Initial Program Counter - 1. */ |
291 | .long buserr /* Bus Error - 2. */ | 286 | .long buserr /* Bus Error - 2. */ |
292 | .long trap /* Address Error - 3. */ | 287 | .long trap /* Address Error - 3. */ |
diff --git a/arch/m68knommu/platform/68360/head-rom.S b/arch/m68knommu/platform/68360/head-rom.S index 0da357a4cfee..2d28c3e19a88 100644 --- a/arch/m68knommu/platform/68360/head-rom.S +++ b/arch/m68knommu/platform/68360/head-rom.S | |||
@@ -18,7 +18,6 @@ | |||
18 | .global _start | 18 | .global _start |
19 | 19 | ||
20 | .global _rambase | 20 | .global _rambase |
21 | .global __ramvec | ||
22 | .global _ramvec | 21 | .global _ramvec |
23 | .global _ramstart | 22 | .global _ramstart |
24 | .global _ramend | 23 | .global _ramend |
@@ -26,6 +25,8 @@ | |||
26 | .global _quicc_base | 25 | .global _quicc_base |
27 | .global _periph_base | 26 | .global _periph_base |
28 | 27 | ||
28 | #define RAMEND (CONFIG_RAMBASE + CONFIG_RAMSIZE) | ||
29 | |||
29 | #define REGB 0x1000 | 30 | #define REGB 0x1000 |
30 | #define PEPAR (_dprbase + REGB + 0x0016) | 31 | #define PEPAR (_dprbase + REGB + 0x0016) |
31 | #define GMR (_dprbase + REGB + 0x0040) | 32 | #define GMR (_dprbase + REGB + 0x0040) |
@@ -115,7 +116,7 @@ _stext: | |||
115 | nop | 116 | nop |
116 | ori.w #MCU_DISABLE_INTRPTS, %sr /* disable interrupts: */ | 117 | ori.w #MCU_DISABLE_INTRPTS, %sr /* disable interrupts: */ |
117 | /* We should not need to setup the boot stack the reset should do it. */ | 118 | /* We should not need to setup the boot stack the reset should do it. */ |
118 | movea.l #__ramend, %sp /* set up stack at the end of DRAM:*/ | 119 | movea.l #RAMEND, %sp /* set up stack at the end of DRAM:*/ |
119 | 120 | ||
120 | 121 | ||
121 | set_mbar_register: | 122 | set_mbar_register: |
@@ -245,16 +246,10 @@ store_ram_size: | |||
245 | /* Set ram size information */ | 246 | /* Set ram size information */ |
246 | move.l #_sdata, _rambase | 247 | move.l #_sdata, _rambase |
247 | move.l #_ebss, _ramstart | 248 | move.l #_ebss, _ramstart |
248 | move.l #__ramend, %d0 | 249 | move.l #RAMEND, %d0 |
249 | sub.l #0x1000, %d0 /* Reserve 4K for stack space.*/ | 250 | sub.l #0x1000, %d0 /* Reserve 4K for stack space.*/ |
250 | move.l %d0, _ramend /* Different from __ramend.*/ | 251 | move.l %d0, _ramend /* Different from RAMEND.*/ |
251 | 252 | ||
252 | store_flash_size: | ||
253 | /* Set rom size information */ | ||
254 | move.l #__rom_end, %d0 | ||
255 | sub.l #__rom_start, %d0 | ||
256 | move.l %d0, rom_length | ||
257 | |||
258 | pea 0 | 253 | pea 0 |
259 | pea env | 254 | pea env |
260 | pea %sp@(4) | 255 | pea %sp@(4) |
@@ -298,7 +293,7 @@ _dprbase: | |||
298 | */ | 293 | */ |
299 | 294 | ||
300 | .section ".data.initvect","awx" | 295 | .section ".data.initvect","awx" |
301 | .long __ramend /* Reset: Initial Stack Pointer - 0. */ | 296 | .long RAMEND /* Reset: Initial Stack Pointer - 0. */ |
302 | .long _start /* Reset: Initial Program Counter - 1. */ | 297 | .long _start /* Reset: Initial Program Counter - 1. */ |
303 | .long buserr /* Bus Error - 2. */ | 298 | .long buserr /* Bus Error - 2. */ |
304 | .long trap /* Address Error - 3. */ | 299 | .long trap /* Address Error - 3. */ |
diff --git a/arch/m68knommu/platform/68360/ints.c b/arch/m68knommu/platform/68360/ints.c index ba184db1651b..0245fc4a4781 100644 --- a/arch/m68knommu/platform/68360/ints.c +++ b/arch/m68knommu/platform/68360/ints.c | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | #include <asm/system.h> | 21 | #include <asm/system.h> |
22 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
23 | #include <asm/irqnode.h> | ||
23 | #include <asm/traps.h> | 24 | #include <asm/traps.h> |
24 | #include <asm/io.h> | 25 | #include <asm/io.h> |
25 | #include <asm/machdep.h> | 26 | #include <asm/machdep.h> |
diff --git a/arch/m68knommu/platform/68EZ328/config.c b/arch/m68knommu/platform/68EZ328/config.c index d8d56e5de310..15a14a67c2bf 100644 --- a/arch/m68knommu/platform/68EZ328/config.c +++ b/arch/m68knommu/platform/68EZ328/config.c | |||
@@ -42,13 +42,13 @@ void m68328_timer_gettod(int *year, int *mon, int *day, int *hour, int *min, int | |||
42 | void m68ez328_reset(void) | 42 | void m68ez328_reset(void) |
43 | { | 43 | { |
44 | local_irq_disable(); | 44 | local_irq_disable(); |
45 | asm volatile (" | 45 | asm volatile ( |
46 | moveal #0x10c00000, %a0; | 46 | "moveal #0x10c00000, %a0;\n" |
47 | moveb #0, 0xFFFFF300; | 47 | "moveb #0, 0xFFFFF300;\n" |
48 | moveal 0(%a0), %sp; | 48 | "moveal 0(%a0), %sp;\n" |
49 | moveal 4(%a0), %a0; | 49 | "moveal 4(%a0), %a0;\n" |
50 | jmp (%a0); | 50 | "jmp (%a0);\n" |
51 | "); | 51 | ); |
52 | } | 52 | } |
53 | 53 | ||
54 | /***************************************************************************/ | 54 | /***************************************************************************/ |
diff --git a/arch/m68knommu/platform/68VZ328/config.c b/arch/m68knommu/platform/68VZ328/config.c index d926524cdf82..4058de5c8fa2 100644 --- a/arch/m68knommu/platform/68VZ328/config.c +++ b/arch/m68knommu/platform/68VZ328/config.c | |||
@@ -141,13 +141,13 @@ static void init_hardware(char *command, int size) | |||
141 | static void m68vz328_reset(void) | 141 | static void m68vz328_reset(void) |
142 | { | 142 | { |
143 | local_irq_disable(); | 143 | local_irq_disable(); |
144 | asm volatile (" | 144 | asm volatile ( |
145 | moveal #0x10c00000, %a0; | 145 | "moveal #0x10c00000, %a0;\n\t" |
146 | moveb #0, 0xFFFFF300; | 146 | "moveb #0, 0xFFFFF300;\n\t" |
147 | moveal 0(%a0), %sp; | 147 | "moveal 0(%a0), %sp;\n\t" |
148 | moveal 4(%a0), %a0; | 148 | "moveal 4(%a0), %a0;\n\t" |
149 | jmp (%a0); | 149 | "jmp (%a0);\n" |
150 | "); | 150 | ); |
151 | } | 151 | } |
152 | 152 | ||
153 | unsigned char *cs8900a_hwaddr; | 153 | unsigned char *cs8900a_hwaddr; |