Platform code merge for 68000 core cpus
PATCH 1/1 Platform code merge for 68000 core cpus
Hi all,
Finnaly I've found some time to get back to the 68k.
This patch merges all 68000 core cpus in one directory. Patch was generated using -B and -M and checked with scricts/checkpatch.pl
It doesn't include the MC68000 code. I expect the next patch to include the 68k board definition and mc68000 related code.
Also I expect to merge all entry*.S into a single file.
Regards,
Luis
---
arch/m68k/Kconfig.cpu | 2 +-
arch/m68k/Makefile | 6 +-
arch/m68k/platform/68000/Makefile | 23 ++
.../{68VZ328/bootlogo.h => 68000/bootlogo-vz.h} | 0
arch/m68k/platform/{68328 => 68000}/bootlogo.h | 0
.../{68EZ328/config.c => 68000/config-ez.c} | 0
.../{68VZ328/config.c => 68000/config-vz.c} | 2 +-
arch/m68k/platform/{68328 => 68000}/config.c | 0
arch/m68k/platform/{68328 => 68000}/entry.S | 0
arch/m68k/platform/68000/head.S | 318 ++++++++++++++++++++
arch/m68k/platform/{68328 => 68000}/ints.c | 0
arch/m68k/platform/{68328 => 68000}/romvec.S | 0
arch/m68k/platform/{68328 => 68000}/timers.c | 0
arch/m68k/platform/68328/Makefile | 21 --
arch/m68k/platform/68328/head-de2.S | 128 --------
arch/m68k/platform/68328/head-pilot.S | 207 -------------
arch/m68k/platform/68328/head-ram.S | 141 ---------
arch/m68k/platform/68328/head-rom.S | 105 -------
arch/m68k/platform/68EZ328/Makefile | 5 -
arch/m68k/platform/68VZ328/Makefile | 5 -
20 files changed, 345 insertions(+), 618 deletions(-)
create mode 100644 arch/m68k/platform/68000/Makefile
rename arch/m68k/platform/{68VZ328/bootlogo.h => 68000/bootlogo-vz.h} (100%)
rename arch/m68k/platform/{68328 => 68000}/bootlogo.h (100%)
rename arch/m68k/platform/{68EZ328/config.c => 68000/config-ez.c} (100%)
rename arch/m68k/platform/{68VZ328/config.c => 68000/config-vz.c} (99%)
rename arch/m68k/platform/{68328 => 68000}/config.c (100%)
rename arch/m68k/platform/{68328 => 68000}/entry.S (100%)
create mode 100644 arch/m68k/platform/68000/head.S
rename arch/m68k/platform/{68328 => 68000}/ints.c (100%)
rename arch/m68k/platform/{68328 => 68000}/romvec.S (100%)
rename arch/m68k/platform/{68328 => 68000}/timers.c (100%)
delete mode 100644 arch/m68k/platform/68328/Makefile
delete mode 100644 arch/m68k/platform/68328/head-de2.S
delete mode 100644 arch/m68k/platform/68328/head-pilot.S
delete mode 100644 arch/m68k/platform/68328/head-ram.S
delete mode 100644 arch/m68k/platform/68328/head-rom.S
delete mode 100644 arch/m68k/platform/68EZ328/Makefile
delete mode 100644 arch/m68k/platform/68VZ328/Makefilearch/m68k/Kconfig.cpu +1 -1
@@ -35,7 +35,7 @@ endchoice if M68KCLASSIC config M68000 - bool + bool "MC68000" select CPU_HAS_NO_BITFIELDS select CPU_HAS_NO_MULDIV64 select CPU_HAS_NO_UNALIGNED
arch/m68k/Makefile +2 -4
@@ -92,7 +92,7 @@ endif head-y := arch/m68k/kernel/head.o head-$(CONFIG_SUN3) := arch/m68k/kernel/sun3-head.o head-$(CONFIG_M68360) := arch/m68k/platform/68360/head.o -head-$(CONFIG_M68000) := arch/m68k/platform/68328/head.o +head-$(CONFIG_M68000) := arch/m68k/platform/68000/head.o head-$(CONFIG_COLDFIRE) := arch/m68k/platform/coldfire/head.o core-y += arch/m68k/kernel/ arch/m68k/mm/
@@ -114,9 +114,7 @@ core-$(CONFIG_M68040) += arch/m68k/fpsp040/ core-$(CONFIG_M68060) += arch/m68k/ifpsp060/ core-$(CONFIG_M68KFPU_EMU) += arch/m68k/math-emu/ core-$(CONFIG_M68360) += arch/m68k/platform/68360/ -core-$(CONFIG_M68000) += arch/m68k/platform/68328/ -core-$(CONFIG_M68EZ328) += arch/m68k/platform/68EZ328/ -core-$(CONFIG_M68VZ328) += arch/m68k/platform/68VZ328/ +core-$(CONFIG_M68000) += arch/m68k/platform/68000/ core-$(CONFIG_COLDFIRE) += arch/m68k/platform/coldfire/
arch/m68k/platform/68000/Makefile new file +23 -0
@@ -0,0 +1,23 @@ +################################################## +# +# Makefile for arch/m68k/platform/68000 +# +# 2012.10.21, Luis Alves <[email protected]> +# Merged all 68000 based cpu's configuration +# files into a single directory. +# + +# 68328, 68EZ328, 68VZ328 + +obj-y += entry.o ints.o timers.o +obj-$(CONFIG_M68328) += config.o +obj-$(CONFIG_M68EZ328) += config-ez.o +obj-$(CONFIG_M68VZ328) += config-vz.o +obj-$(CONFIG_ROM) += romvec.o + +model-y := ram +model-$(CONFIG_ROMKERNEL) := rom + +extra-y := head.o + +clean-files := $(obj)/head.o
arch/m68k/platform/68000/bootlogo-vz.h renamed from arch/m68k/platform/68VZ328/bootlogo.h +0 -0
arch/m68k/platform/68000/bootlogo.h renamed from arch/m68k/platform/68328/bootlogo.h +0 -0
arch/m68k/platform/68000/config-ez.c renamed from arch/m68k/platform/68EZ328/config.c +0 -0
arch/m68k/platform/68000/config-vz.c renamed from arch/m68k/platform/68VZ328/config.c +1 -1
@@ -28,7 +28,7 @@#include <asm/bootstd.h> #ifdef CONFIG_INIT_LCD -#include "bootlogo.h" +#include "bootlogo-vz.h" #endif /***************************************************************************/
arch/m68k/platform/68000/config.c renamed from arch/m68k/platform/68328/config.c +0 -0
arch/m68k/platform/68000/entry.S renamed from arch/m68k/platform/68328/entry.S +0 -0
arch/m68k/platform/68000/head.S new file +317 -0
317 lines not on this page · raw message
arch/m68k/platform/68000/ints.c renamed from arch/m68k/platform/68328/ints.c +0 -0
arch/m68k/platform/68000/romvec.S renamed from arch/m68k/platform/68328/romvec.S +0 -0
arch/m68k/platform/68000/timers.c renamed from arch/m68k/platform/68328/timers.c +0 -0
arch/m68k/platform/68328/Makefile deleted +0 -21
@@ -1,21 +0,0 @@ -# -# Makefile for arch/m68knommu/platform/68328. -# - -model-y := ram -model-$(CONFIG_ROMKERNEL) := rom - -head-y = head-$(model-y).o -head-$(CONFIG_PILOT) = head-pilot.o -head-$(CONFIG_DRAGEN2) = head-de2.o - -obj-y += entry.o ints.o timers.o -obj-$(CONFIG_M68328) += config.o -obj-$(CONFIG_ROM) += romvec.o - -extra-y := head.o - -$(obj)/head.o: $(obj)/$(head-y) - ln -sf $(head-y) $(obj)/head.o - -clean-files := $(obj)/head.o $(head-y)
arch/m68k/platform/68328/head-de2.S deleted +0 -128
128 lines not on this page · raw message
arch/m68k/platform/68328/head-pilot.S deleted +0 -207
207 lines not on this page · raw message
arch/m68k/platform/68328/head-ram.S deleted +0 -141
141 lines not on this page · raw message
arch/m68k/platform/68328/head-rom.S deleted +0 -105
105 lines not on this page · raw message
arch/m68k/platform/68EZ328/Makefile deleted +0 -5
@@ -1,5 +0,0 @@ -# -# Makefile for arch/m68knommu/platform/68EZ328. -# - -obj-y := config.o
arch/m68k/platform/68VZ328/Makefile deleted +0 -5
@@ -1,5 +0,0 @@ -# -# Makefile for arch/m68k/platform/68VZ328. -# - -obj-y := config.o
Signature · 1 line
1.7.10.4
Hi Luis,
Quoted 10 lines · Luis Alves
Finnaly I've found some time to get back to the 68k.
This patch merges all 68000 core cpus in one directory. Patch was generated using -B and -M and checked with
scricts/checkpatch.plIt doesn't include the MC68000 code. I expect the next patch to include the 68k board definition and mc68000 related code.
Also I expect to merge all entry*.S into a single file.
This looks pretty good. I am happy with the way the common 68000 code all falls out. Nice.It sure is a big patch on its own though.
Couple of minor things I single out below. And they are just minor.
Quoted 16 lines
Signed-off-by Luis Alves <[email protected]>arch/m68k/platform/68000/Makefile new file +9
-0@@ -0,0 +1,23 @@ +################################################## +# +# Makefile for arch/m68k/platform/68000 +# +# 2012.10.21, Luis Alves <[email protected]> +# Merged all 68000 based cpu's configuration +# files into a single directory. +# +
arch/m68k/platform/68000/Makefile line 19
Quoted 10 lines
arch/m68k/platform/68000/Makefile new file +10
-0+# 68328, 68EZ328, 68VZ328 + +obj-y += entry.o ints.o timers.o +obj-$(CONFIG_M68328) += config.o +obj-$(CONFIG_M68EZ328) += config-ez.o +obj-$(CONFIG_M68VZ328) += config-vz.o +obj-$(CONFIG_ROM) += romvec.o + +model-y := ram +model-$(CONFIG_ROMKERNEL) := rom
Is this model-* still needed?
Quoted 14 lines
arch/m68k/platform/68000/config.c renamed from arch/m68k/platform/68328/config.c +0
-0arch/m68k/platform/68000/entry.S renamed from arch/m68k/platform/68328/entry.S +0
-0arch/m68k/platform/68000/head.S new file +0
-0
arch/m68k/platform/68000/head.S line 2
Quoted 2 lines
arch/m68k/platform/68000/head.S new file +2
-0@@ -0,0 +1,317 @@ +/* + * linux/arch/m68k/platform/68000/head.S
Having the full path name here is mostly frowned upon these days. It eventually goes stale, if/when files get moved.
Quoted 27 lines
arch/m68k/platform/68000/head.S new file +27
-0+ * + * Common startup code for 68000 core based CPU's + * + * 2012.10.21, Luis Alves <[email protected]>, Single head.S file for all + * 68000 core based CPU's. Based on the sources from: + * Coldfire by Greg Ungerer <[email protected]> + * 68328 by D. Jeff Dionne <[email protected]>, + * Kenneth Albanowski <[email protected]>, + * The Silver Hammer Group, Ltd. + * + */ + +#include <linux/linkage.h> +#include <linux/init.h> +#include <asm/asm-offsets.h> +#include <asm/thread_info.h> + + +/***************************************************************************** + * + * UCSIMM and UCDIMM use CONFIG_MEMORY_RESERVE to reserve some RAM + * + *****************************************************************************/ + +#ifdef CONFIG_MEMORY_RESERVE +#define RAMEND (CONFIG_RAMBASE + CONFIG_RAMSIZE) - (CONFIG_MEMORY_RESERVE * 0x100000) +#else
arch/m68k/platform/68000/head.S line 39
Quoted 10 lines
arch/m68k/platform/68000/head.S new file +10
-0+#define RAMEND (CONFIG_RAMBASE + CONFIG_RAMSIZE) +#endif + +/*****************************************************************************/ + +.global _start +.global _rambase +.global _ramvec +.global _ramstart +.global _ramend
Inconsistent indenting?
arch/m68k/platform/68000/head.S line 47
Quoted 7 lines
arch/m68k/platform/68000/head.S new file +7
-0+#if defined(CONFIG_PILOT) || defined(CONFIG_INIT_LCD) +.global bootlogo_bits +#endif + +/* Defining DEBUG_HEAD_CODE, serial port in 68x328 is inited */ +#undef DEBUG_HEAD_CODE +//#define DEBUG_HEAD_CODE
No use of '//' for comments please :-)
Quoted 76 lines
arch/m68k/platform/68000/head.S new file +76
-0+.data + +/***************************************************************************** + * + * RAM setup pointers. Used by the kernel to determine RAM location and size. + * + *****************************************************************************/ + +_rambase: + .long 0 +_ramvec: + .long 0 +_ramstart: + .long 0 +_ramend: + .long 0 + + +__HEAD + + +/***************************************************************************** + * + * Entry point, where all begins! + * + *****************************************************************************/ + +_start: + + +/***************************************************************************** + * + * Pilot need this specific signature at the start of ROM + * + *****************************************************************************/ + +#ifdef CONFIG_PILOT + .byte 0x4e, 0xfa, 0x00, 0x0a /* bra opcode (jump 10 bytes ahead) */ + .byte 'b', 'o', 'o', 't' + .word 10000 + nop + moveq #0, %d0 + movew %d0, 0xfffff618 /* Watchdog off */ + movel #0x00011f07, 0xfffff114 /* CS A1 Mask */ +#endif /* CONFIG_PILOT */ + + + movew #0x2700, %sr /* disable all interrupts */ + + +/***************************************************************************** + * + * Setup PLL and wait for it to settle (in 68x328 cpu's). + * Also, if enabled, init serial port. + * + *****************************************************************************/ + +#if defined(CONFIG_M68328) || \ + defined(CONFIG_M68EZ328) || \ + defined(CONFIG_M68VZ328) + +/* Serial port setup. Should only be needed if debugging this startup code. */ +#ifdef DEBUG_HEAD_CODE + movew #0x0800, 0xfffff906 /* Ignore CTS */ + movew #0x010b, 0xfffff902 /* BAUD to 9600 */ + movew #0xe100, 0xfffff900 /* enable */ +#endif /* DEBUG_HEAD */ + +#ifdef CONFIG_PILOT + movew #0x2410, 0xfffff200 /* PLLCR */ +#else + movew #0x2400, 0xfffff200 /* PLLCR */ +#endif + movew #0x0123, 0xfffff202 /* PLLFSR */ + + moveq #0,%d0
arch/m68k/platform/68000/head.S line 134
Quoted 10 lines
arch/m68k/platform/68000/head.S new file +10
-0+ movew #16384, %d0 /* PLL settle wait loop */ +_pll_settle: + subw #1, %d0 + bne _pll_settle + +#endif /* CONFIG_M68x328 */ + + + +
Probably a bit too much white space used in a number of places in this file :-)
Quoted 75 lines
arch/m68k/platform/68000/head.S new file +75
-0+/***************************************************************************** + * + * If running kernel from ROM/FLASH some specific initialization has + * to be done. + * (Assuming that everything is already init'ed when running from RAM) + * + *****************************************************************************/ + +#ifdef CONFIG_ROMKERNEL + + +/***************************************************************************** + * + * Init chip registers (uCsimm specific) + * + *****************************************************************************/ +#ifdef CONFIG_UCSIMM + moveb #0x00, 0xfffffb0b /* Watchdog off */ + moveb #0x10, 0xfffff000 /* SCR */ + + moveb #0x00, 0xfffff40b /* enable chip select */ + moveb #0x00, 0xfffff423 /* enable /DWE */ + moveb #0x08, 0xfffffd0d /* disable hardmap */ + moveb #0x07, 0xfffffd0e /* level 7 interrupt clear */ + + movew #0x8600, 0xfffff100 /* FLASH at 0x10c00000 */ + movew #0x018b, 0xfffff110 /* 2Meg, enable, 0ws */ + + movew #0x8f00, 0xfffffc00 /* DRAM configuration */ + movew #0x9667, 0xfffffc02 /* DRAM control */ + movew #0x0000, 0xfffff106 /* DRAM at 0x00000000 */ + movew #0x068f, 0xfffff116 /* 8Meg, enable, 0ws */ + + moveb #0x40, 0xfffff300 /* IVR */ + movel #0x007FFFFF, %d0 /* IMR */ + movel %d0, 0xfffff304 + + moveb 0xfffff42b, %d0 + andb #0xe0, %d0 + moveb %d0, 0xfffff42b +#endif + + +/***************************************************************************** + * + * Init LCD controller. + * + * NOTE: Assuming that LCD controller is already init'ed + * when running from RAM. + * + *****************************************************************************/ +#ifdef CONFIG_INIT_LCD + +#ifdef CONFIG_PILOT + moveb #0, 0xfffffA27 /* LCKCON */ + movel #_start, 0xfffffA00 /* LSSA */ + moveb #0xa, 0xfffffA05 /* LVPW */ + movew #0x9f, 0xFFFFFa08 /* LXMAX */ + movew #0x9f, 0xFFFFFa0a /* LYMAX */ + moveb #9, 0xfffffa29 /* LBAR */ + moveb #0, 0xfffffa25 /* LPXCD */ + moveb #0x04, 0xFFFFFa20 /* LPICF */ + moveb #0x58, 0xfffffA27 /* LCKCON */ + moveb #0x85, 0xfffff429 /* PFDATA */ + moveb #0xd8, 0xfffffA27 /* LCKCON */ + moveb #0xc5, 0xfffff429 /* PFDATA */ + moveb #0xd5, 0xfffff429 /* PFDATA */ + + movel #bootlogo_bits, 0xFFFFFA00 /* LSSA */ + moveb #10, 0xFFFFFA05 /* LVPW */ + movew #160, 0xFFFFFA08 /* LXMAX */ + movew #160, 0xFFFFFA0A /* LYMAX */ + +#else /* CONFIG_PILOT */ +
arch/m68k/platform/68000/head.S line 219
Quoted 10 lines
arch/m68k/platform/68000/head.S new file +10
-0+ movel #bootlogo_bits, 0xfffffA00 /* LSSA */ + moveb #0x28, 0xfffffA05 /* LVPW */ + movew #0x280, 0xFFFFFa08 /* LXMAX */ + movew #0x1df, 0xFFFFFa0a /* LYMAX */ + moveb #0, 0xfffffa29 /* LBAR */ + moveb #0, 0xfffffa25 /* LPXCD */ + moveb #0x08, 0xFFFFFa20 /* LPICF */ + moveb #0x01, 0xFFFFFA21 /* -ve pol */ + moveb #0x81, 0xfffffA27 /* LCKCON */ + movew #0xff00, 0xfffff412 /* LCD pins */
Inconsistent spacing used on args throughout this file. I know some of this came strait from the older files. But lets use this chance to at least make it consistent now.
Quoted 39 lines
arch/m68k/platform/68000/head.S new file +39
-0+#endif /* CONFIG_PILOT */ + +#endif /* CONFIG_INIT_LCD */ + + + +/***************************************************************************** + * + * Kernel is running from FLASH/ROM (XIP) + * Copy init text & data to RAM + * + *****************************************************************************/ + + moveal #_etext, %a0 + moveal #_sdata, %a1 + moveal #_sbss, %a2 +_copy_initmem: + movel %a0@+, %a1@+ + cmpal %a1, %a2 + bhi _copy_initmem + +#endif /* CONFIG_ROMKERNEL */ + + + +/***************************************************************************** + * + * Setup basic memory information for kernel + * + *****************************************************************************/ + + movel #CONFIG_VECTORBASE,_ramvec /* set vector base location */ + movel #CONFIG_RAMBASE,_rambase /* set the base of RAM */ + movel #RAMEND, _ramend /* set end ram addr */ + lea _ebss,%a1 + movel %a1,_ramstart + + +/*****************************************************************************
arch/m68k/platform/68000/head.S line 269
Quoted 10 lines
arch/m68k/platform/68000/head.S new file +10
-0+ * + * If the kernel is in RAM, move romfs to right above bss and + * adjust _ramstart to where romfs ends. + * + * (Do this only if CONFIG_MTD_UCLINUX_EBSS is true) + * + *****************************************************************************/ + +#if defined(CONFIG_ROMFS_FS) && defined(CONFIG_RAMKERNEL) && \ + defined(CONFIG_MTD_UCLINUX_EBSS)
There is no CONFIG_MTD_UCLINUX_EBSS in mainline kernels. Just use CONFIG_MTD_UCLINUX.
Regards
Greg
------------------------------------------------------------------------
Greg Ungerer -- Principal Engineer EMAIL: [email protected] SnapGear Group, McAfee PHONE: +61 7 3435 2888 8 Gardner Close FAX: +61 7 3217 5323 Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com
Hi Greg,
Thanks for the review!
I'll get those fixed later tonight and re-send the patch.
Regards,
Luis
_______________________________________________
uClinux-dev mailing list [email protected]
http://mailman.uclinux.org/mailman/listinfo/uclinux-dev
This message was resent by [email protected] To unsubscribe see:
http://mailman.uclinux.org/mailman/options/uclinux-dev
Geert Uytterhoeven
maintainerarch/m68k/Kconfig.cpu endchoice · line 41
Quoted 11 lines · Luis Alves
arch/m68k/Kconfig.cpu +1
-1@@ -35,7 +35,7 @@ endchoice if M68KCLASSIC config M68000 - bool + bool "MC68000" select CPU_HAS_NO_BITFIELDS select CPU_HAS_NO_MULDIV64 select CPU_HAS_NO_UNALIGNED
This needs a "depends on !MMU".
Else allmodconfig will select it, causing -m68000 to be passed to the assembler, which may break the build depending on your version of binutils, a.o.
arch/m68k/kernel/entry.S:186: Error: invalid instruction for this architecture; needs 68020 or higher (68020 [68k, 68ec020], 68030 [68ec030], 68040 [68ec040], 68060 [68ec060]) -- statement bfextu %sp@(50){#0,#4},%d0' ignored arch/m68k/kernel/entry.S:211: Error: invalid operand mode for this architecture; needs 68020 or higher -- statement jbsr @(sys_call_table,%d0:l:4)@(0)' ignored
Cfr. http://kisskb.ellerman.id.au/kisskb/buildresult/7416877/
BTW, it didn't break the build on my ancient workhorse binutils, but that's no guarantee it would boot...
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- [email protected]
In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds