1 2 .global _start 3 .global _stext 4 5 .global _rambase 6 .global _ramvec 7 .global _ramstart 8 .global _ramend 9 10#ifdef CONFIG_INIT_LCD 11 .global bootlogo_bits 12#endif 13 14 .data 15 16/* 17 * Set up the usable of RAM stuff. Size of RAM is determined then 18 * an initial stack set up at the end. 19 */ 20.align 4 21_ramvec: 22.long 0 23_rambase: 24.long 0 25_ramstart: 26.long 0 27_ramend: 28.long 0 29 30#define RAMEND (CONFIG_RAMBASE + CONFIG_RAMSIZE) 31 32 .text 33_start: 34_stext: movew #0x2700,%sr 35#ifdef CONFIG_INIT_LCD 36 movel #bootlogo_bits, 0xfffffA00 /* LSSA */ 37 moveb #0x28, 0xfffffA05 /* LVPW */ 38 movew #0x280, 0xFFFFFa08 /* LXMAX */ 39 movew #0x1df, 0xFFFFFa0a /* LYMAX */ 40 moveb #0, 0xfffffa29 /* LBAR */ 41 moveb #0, 0xfffffa25 /* LPXCD */ 42 moveb #0x08, 0xFFFFFa20 /* LPICF */ 43 moveb #0x01, 0xFFFFFA21 /* -ve pol */ 44 moveb #0x81, 0xfffffA27 /* LCKCON */ 45 movew #0xff00, 0xfffff412 /* LCD pins */ 46#endif 47 moveal #RAMEND-CONFIG_MEMORY_RESERVE*0x100000 - 0x10, %sp 48 movew #32767, %d0 /* PLL settle wait loop */ 491: subq #1, %d0 50 bne 1b 51 52 /* Copy data segment from ROM to RAM */ 53 moveal #_etext, %a0 54 moveal #_sdata, %a1 55 moveal #_edata, %a2 56 57 /* Copy %a0 to %a1 until %a1 == %a2 */ 581: movel %a0@+, %a1@+ 59 cmpal %a1, %a2 60 bhi 1b 61 62 moveal #_sbss, %a0 63 moveal #_ebss, %a1 64 /* Copy 0 to %a0 until %a0 == %a1 */ 65 661: 67 clrl %a0@+ 68 cmpal %a0, %a1 69 bhi 1b 70 71 movel #_sdata, %d0 72 movel %d0, _rambase 73 movel #_ebss, %d0 74 movel %d0, _ramstart 75 movel #RAMEND-CONFIG_MEMORY_RESERVE*0x100000, %d0 76 movel %d0, _ramend 77 movel #CONFIG_VECTORBASE, %d0 78 movel %d0, _ramvec 79 80/* 81 * load the current task pointer and stack 82 */ 83 lea init_thread_union, %a0 84 lea 0x2000(%a0), %sp 85 861: jsr start_kernel 87 bra 1b 88_exit: 89 90 jmp _exit 91 92 93putc: 94 moveb %d7,0xfffff907 951: 96 movew 0xfffff906, %d7 97 andw #0x2000, %d7 98 beq 1b 99 rts 100 101 .data 102env: 103 .long 0 104 .text 105 106