linux/arch/m68k/platform/68328/head-ram.S
Greg Ungerer 66d857b08b m68k: merge m68k and m68knommu arch directories
There is a lot of common code that could be shared between the m68k
and m68knommu arch branches. It makes sense to merge the two branches
into a single directory structure so that we can more easily share
that common code.

This is a brute force merge, based on a script from Stephen King
<sfking@fdwdc.com>, which was originally written by Arnd Bergmann
<arnd@arndb.de>.

> The script was inspired by the script Sam Ravnborg used to merge the
> includes from m68knommu. For those files common to both arches but
> differing in content, the m68k version of the file is renamed to
> <file>_mm.<ext> and the m68knommu version of the file is moved into the
> corresponding m68k directory and renamed <file>_no.<ext> and a small
> wrapper file <file>.<ext> is used to select between the two version. Files
> that are common to both but don't differ are removed from the m68knommu
> tree and files and directories that are unique to the m68knommu tree are
> moved to the m68k tree. Finally, the arch/m68knommu tree is removed.
>
> To select between the the versions of the files, the wrapper uses
>
> #ifdef CONFIG_MMU
> #include <file>_mm.<ext>
> #else
> #include <file>_no.<ext>
> #endif

On top of this file merge I have done a simplistic merge of m68k and
m68knommu Kconfig, which primarily attempts to keep existing options and
menus in place. Other than a handful of options being moved it produces
identical .config outputs on m68k and m68knommu targets I tested it on.

With this in place there is now quite a bit of scope for merge cleanups
in future patches.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
2011-03-25 14:05:13 +10:00

141 lines
2.5 KiB
ArmAsm

.global __main
.global __rom_start
.global _rambase
.global _ramstart
.global splash_bits
.global _start
.global _stext
.global _edata
#define DEBUG
#define ROM_OFFSET 0x10C00000
#define STACK_GAURD 0x10
.text
_start:
_stext:
movew #0x2700, %sr /* Exceptions off! */
#if 0
/* Init chip registers. uCsimm specific */
moveb #0x00, 0xfffffb0b /* Watchdog off */
moveb #0x10, 0xfffff000 /* SCR */
movew #0x2400, 0xfffff200 /* PLLCR */
movew #0x0123, 0xfffff202 /* PLLFSR */
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
moveb #0x08, 0xfffff907 /* Ignore CTS */
movew #0x010b, 0xfffff902 /* BAUD to 9600 */
movew #0xe100, 0xfffff900 /* enable */
#endif
movew #16384, %d0 /* PLL settle wait loop */
L0:
subw #1, %d0
bne L0
#ifdef DEBUG
moveq #70, %d7 /* 'F' */
moveb %d7,0xfffff907 /* No absolute addresses */
pclp1:
movew 0xfffff906, %d7
andw #0x2000, %d7
beq pclp1
#endif /* DEBUG */
#ifdef DEBUG
moveq #82, %d7 /* 'R' */
moveb %d7,0xfffff907 /* No absolute addresses */
pclp3:
movew 0xfffff906, %d7
andw #0x2000, %d7
beq pclp3
#endif /* DEBUG */
moveal #0x007ffff0, %ssp
moveal #_sbss, %a0
moveal #_ebss, %a1
/* Copy 0 to %a0 until %a0 >= %a1 */
L1:
movel #0, %a0@+
cmpal %a0, %a1
bhi L1
#ifdef DEBUG
moveq #67, %d7 /* 'C' */
jsr putc
#endif /* DEBUG */
pea 0
pea env
pea %sp@(4)
pea 0
#ifdef DEBUG
moveq #70, %d7 /* 'F' */
jsr putc
#endif /* DEBUG */
lp:
jsr start_kernel
jmp lp
_exit:
jmp _exit
__main:
/* nothing */
rts
#ifdef DEBUG
putc:
moveb %d7,0xfffff907
pclp:
movew 0xfffff906, %d7
andw #0x2000, %d7
beq pclp
rts
#endif /* DEBUG */
.data
/*
* Set up the usable of RAM stuff. Size of RAM is determined then
* an initial stack set up at the end.
*/
.align 4
_ramvec:
.long 0
_rambase:
.long 0
_ramstart:
.long 0
_ramend:
.long 0
env:
.long 0