Path: blob/master/arch/m68k/platform/68328/head-pilot.S
10819 views
/*1* linux/arch/m68knommu/platform/68328/head-pilot.S2* - A startup file for the MC683283*4* Copyright (C) 1998 D. Jeff Dionne <[email protected]>,5* Kenneth Albanowski <[email protected]>,6* The Silver Hammer Group, Ltd.7*8* (c) 1995, Dionne & Associates9* (c) 1995, DKG Display Tech.10*/1112#define ASSEMBLY1314#define IMMED #15#define DBG_PUTC(x) moveb IMMED x, 0xfffff907161718.global _stext19.global _start2021.global _rambase22.global _ramvec23.global _ramstart24.global _ramend2526.global penguin_bits2728#ifdef CONFIG_PILOT2930#define IMR 0xFFFFF3043132.data33.align 163435penguin_bits:36#include "bootlogo.rh"3738#endif3940/*****************************************************************************/4142.data4344/*45* Set up the usable of RAM stuff. Size of RAM is determined then46* an initial stack set up at the end.47*/48.align 449_ramvec:50.long 051_rambase:52.long 053_ramstart:54.long 055_ramend:56.long 05758.text5960_start:61_stext:626364#ifdef CONFIG_M683286566#ifdef CONFIG_PILOT67.byte 0x4e, 0xfa, 0x00, 0x0a /* Jmp +X bytes */68.byte 'b', 'o', 'o', 't'69.word 100007071nop72#endif7374moveq #0, %d075movew %d0, 0xfffff618 /* Watchdog off */76movel #0x00011f07, 0xfffff114 /* CS A1 Mask */7778movew #0x0800, 0xfffff906 /* Ignore CTS */79movew #0x010b, 0xfffff902 /* BAUD to 9600 */8081movew #0x2410, 0xfffff200 /* PLLCR */82movew #0x123, 0xfffff202 /* PLLFSR */8384#ifdef CONFIG_PILOT85moveb #0, 0xfffffA27 /* LCKCON */86movel #_start, 0xfffffA00 /* LSSA */87moveb #0xa, 0xfffffA05 /* LVPW */88movew #0x9f, 0xFFFFFa08 /* LXMAX */89movew #0x9f, 0xFFFFFa0a /* LYMAX */90moveb #9, 0xfffffa29 /* LBAR */91moveb #0, 0xfffffa25 /* LPXCD */92moveb #0x04, 0xFFFFFa20 /* LPICF */93moveb #0x58, 0xfffffA27 /* LCKCON */94moveb #0x85, 0xfffff429 /* PFDATA */95moveb #0xd8, 0xfffffA27 /* LCKCON */96moveb #0xc5, 0xfffff429 /* PFDATA */97moveb #0xd5, 0xfffff429 /* PFDATA */9899moveal #0x00100000, %a3100moveal #0x100ffc00, %a4101#endif /* CONFIG_PILOT */102103#endif /* CONFIG_M68328 */104105movew #0x2700, %sr106lea %a4@(-4), %sp107108DBG_PUTC('\r')109DBG_PUTC('\n')110DBG_PUTC('A')111112moveq #0,%d0113movew #16384, %d0 /* PLL settle wait loop */114L0:115subw #1, %d0116bne L0117118DBG_PUTC('B')119120/* Copy command line from beginning of RAM (+16) to end of bss */121movel #CONFIG_VECTORBASE, %d7122addl #16, %d7123moveal %d7, %a0124moveal #_ebss, %a1125lea %a1@(512), %a2126127DBG_PUTC('C')128129/* Copy %a0 to %a1 until %a1 == %a2 */130L2:131movel %a0@+, %d0132movel %d0, %a1@+133cmpal %a1, %a2134bhi L2135136/* Copy data+init segment from ROM to RAM */137moveal #_etext, %a0138moveal #_sdata, %a1139moveal #__init_end, %a2140141DBG_PUTC('D')142143/* Copy %a0 to %a1 until %a1 == %a2 */144LD1:145movel %a0@+, %d0146movel %d0, %a1@+147cmpal %a1, %a2148bhi LD1149150DBG_PUTC('E')151152moveal #_sbss, %a0153moveal #_ebss, %a1154155/* Copy 0 to %a0 until %a0 == %a1 */156L1:157movel #0, %a0@+158cmpal %a0, %a1159bhi L1160161DBG_PUTC('F')162163/* Copy command line from end of bss to command line */164moveal #_ebss, %a0165moveal #command_line, %a1166lea %a1@(512), %a2167168DBG_PUTC('G')169170/* Copy %a0 to %a1 until %a1 == %a2 */171L3:172movel %a0@+, %d0173movel %d0, %a1@+174cmpal %a1, %a2175bhi L3176177movel #_sdata, %d0178movel %d0, _rambase179movel #_ebss, %d0180movel %d0, _ramstart181182movel %a4, %d0183subl #4096, %d0 /* Reserve 4K of stack */184moveq #79, %d7185movel %d0, _ramend186187movel %a3, %d0188movel %d0, rom_length189190pea 0191pea env192pea %sp@(4)193pea 0194195DBG_PUTC('H')196197#ifdef CONFIG_PILOT198movel #penguin_bits, 0xFFFFFA00199moveb #10, 0xFFFFFA05200movew #160, 0xFFFFFA08201movew #160, 0xFFFFFA0A202#endif /* CONFIG_PILOT */203204DBG_PUTC('I')205206lea init_thread_union, %a0207lea 0x2000(%a0), %sp208209DBG_PUTC('J')210DBG_PUTC('\r')211DBG_PUTC('\n')212213jsr start_kernel214_exit:215216jmp _exit217218219.data220env:221.long 0222223224