1 1.1 kiyohara /* $NetBSD: entry.S,v 1.1 2011/03/03 05:59:37 kiyohara Exp $ */ 2 1.1 kiyohara /* 3 1.1 kiyohara * Copyright (c) 2011 KIYOHARA Takashi 4 1.1 kiyohara * All rights reserved. 5 1.1 kiyohara * 6 1.1 kiyohara * Redistribution and use in source and binary forms, with or without 7 1.1 kiyohara * modification, are permitted provided that the following conditions 8 1.1 kiyohara * are met: 9 1.1 kiyohara * 1. Redistributions of source code must retain the above copyright 10 1.1 kiyohara * notice, this list of conditions and the following disclaimer. 11 1.1 kiyohara * 2. Redistributions in binary form must reproduce the above copyright 12 1.1 kiyohara * notice, this list of conditions and the following disclaimer in the 13 1.1 kiyohara * documentation and/or other materials provided with the distribution. 14 1.1 kiyohara * 15 1.1 kiyohara * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 16 1.1 kiyohara * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 1.1 kiyohara * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 1.1 kiyohara * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 19 1.1 kiyohara * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 1.1 kiyohara * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 21 1.1 kiyohara * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 22 1.1 kiyohara * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 23 1.1 kiyohara * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 24 1.1 kiyohara * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 25 1.1 kiyohara * POSSIBILITY OF SUCH DAMAGE. 26 1.1 kiyohara */ 27 1.1 kiyohara 28 1.1 kiyohara #include <sh3/asm.h> 29 1.1 kiyohara #include <sh3/locore.h> 30 1.1 kiyohara #include <sh3/mmu_sh3.h> 31 1.1 kiyohara #include <sh3/mmu_sh4.h> 32 1.1 kiyohara 33 1.1 kiyohara #if defined(SH3) && defined(SH4) 34 1.1 kiyohara #error "mmeye port don't support SH3,SH4 common kernel." 35 1.1 kiyohara #elif defined(SH3) 36 1.1 kiyohara #define RAM_BEGIN 0x8c000000 /* Area3 */ 37 1.1 kiyohara #define RAM_SIZE 0x01000000 /* 16M */ 38 1.1 kiyohara #elif defined(SH4) 39 1.1 kiyohara #define RAM_BEGIN 0x88000000 /* Area2 */ 40 1.1 kiyohara #define RAM_SIZE 0x04000000 /* 64M */ 41 1.1 kiyohara #endif 42 1.1 kiyohara 43 1.1 kiyohara #define INIT_STACK (RAM_BEGIN + RAM_SIZE - 0x00001000) 44 1.1 kiyohara 45 1.1 kiyohara NENTRY(start) 46 1.1 kiyohara /* Set SP to initial position */ 47 1.1 kiyohara mov.l XLtmpstk, r15 48 1.1 kiyohara 49 1.1 kiyohara __INTR_MASK(r0, r1) 50 1.1 kiyohara 51 1.1 kiyohara /* Set Register Bank to Bank 0 */ 52 1.1 kiyohara mov.l SR_init, r0 53 1.1 kiyohara ldc r0, sr 54 1.1 kiyohara 55 1.1 kiyohara xor r0, r0 56 1.1 kiyohara MOV (MMUCR, r2) 57 1.1 kiyohara mov.l r0, @r2 /* MMU OFF */ 58 1.1 kiyohara 59 1.1 kiyohara bra start1 60 1.1 kiyohara nop 61 1.1 kiyohara .align 2 62 1.1 kiyohara SR_init: .long 0x500000F0 63 1.1 kiyohara REG_SYMBOL(MMUCR) 64 1.1 kiyohara start1: 65 1.1 kiyohara 66 1.1 kiyohara #if defined(SH4) 67 1.1 kiyohara /* Copy boot image from _LOADADDR to ___start */ 68 1.1 kiyohara mov.l _LOADADDR, r1 69 1.1 kiyohara mov.l ___end, r0 70 1.1 kiyohara mov.l ___start, r3 71 1.1 kiyohara sub r3, r0 72 1.1 kiyohara add #4, r0 /* size of bytes to be copied */ 73 1.1 kiyohara shlr2 r0 /* number of long word */ 74 1.1 kiyohara 1: 75 1.1 kiyohara mov.l @r1+, r4 76 1.1 kiyohara mov.l r4, @r3 77 1.1 kiyohara add #4, r3 78 1.1 kiyohara dt r0 /* decrement and Test */ 79 1.1 kiyohara bf 1b 80 1.1 kiyohara /* boot image copy end */ 81 1.1 kiyohara #endif 82 1.1 kiyohara 83 1.1 kiyohara mov.l XLmain, r0 84 1.1 kiyohara jmp @r0 /* jump to main() */ 85 1.1 kiyohara nop 86 1.1 kiyohara 87 1.1 kiyohara .align 2 88 1.1 kiyohara 89 1.1 kiyohara _LOADADDR: .long 0x88010000 /* loaded here by 1st loader. */ 90 1.1 kiyohara ___start: .long start 91 1.1 kiyohara ___end: .long _end 92 1.1 kiyohara XLtmpstk: .long INIT_STACK 93 1.1 kiyohara XLmain: .long _C_LABEL(main) 94