Home | History | Annotate | Line # | Download | only in common
start.S revision 1.2
      1  1.2   martin /*	$NetBSD: start.S,v 1.2 2008/04/28 20:23:19 martin Exp $	*/
      2  1.1  tsutsui 
      3  1.1  tsutsui /*-
      4  1.1  tsutsui  * Copyright (c) 2004 The NetBSD Foundation, Inc.
      5  1.1  tsutsui  * All rights reserved.
      6  1.1  tsutsui  *
      7  1.1  tsutsui  * This code is derived from software contributed to The NetBSD Foundation
      8  1.1  tsutsui  * by UCHIYAMA Yasushi.
      9  1.1  tsutsui  *
     10  1.1  tsutsui  * Redistribution and use in source and binary forms, with or without
     11  1.1  tsutsui  * modification, are permitted provided that the following conditions
     12  1.1  tsutsui  * are met:
     13  1.1  tsutsui  * 1. Redistributions of source code must retain the above copyright
     14  1.1  tsutsui  *    notice, this list of conditions and the following disclaimer.
     15  1.1  tsutsui  * 2. Redistributions in binary form must reproduce the above copyright
     16  1.1  tsutsui  *    notice, this list of conditions and the following disclaimer in the
     17  1.1  tsutsui  *    documentation and/or other materials provided with the distribution.
     18  1.1  tsutsui  *
     19  1.1  tsutsui  * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
     20  1.1  tsutsui  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     21  1.1  tsutsui  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     22  1.1  tsutsui  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
     23  1.1  tsutsui  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
     24  1.1  tsutsui  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
     25  1.1  tsutsui  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
     26  1.1  tsutsui  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
     27  1.1  tsutsui  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
     28  1.1  tsutsui  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     29  1.1  tsutsui  * POSSIBILITY OF SUCH DAMAGE.
     30  1.1  tsutsui  */
     31  1.1  tsutsui 
     32  1.1  tsutsui #include <mips/regdef.h>
     33  1.1  tsutsui 
     34  1.1  tsutsui 	.set	noreorder
     35  1.1  tsutsui 	.set	mips3
     36  1.1  tsutsui 	.align	2
     37  1.1  tsutsui 	.text
     38  1.1  tsutsui /*
     39  1.1  tsutsui  * Entry point.
     40  1.1  tsutsui  */
     41  1.1  tsutsui 	.globl	start
     42  1.1  tsutsui start:
     43  1.1  tsutsui 	nop
     44  1.1  tsutsui 	nop
     45  1.1  tsutsui 	nop
     46  1.1  tsutsui 	nop
     47  1.1  tsutsui 	la	sp, _ftext
     48  1.1  tsutsui 
     49  1.1  tsutsui 	mfc0	t0, $12
     50  1.1  tsutsui 	lui	t1, 0x0040	/* BEV : use IPL's exception vector. */
     51  1.1  tsutsui 	and	t0, t0, t1
     52  1.1  tsutsui 	mtc0	t0, $12
     53  1.1  tsutsui 	nop
     54  1.1  tsutsui 	la	t0, main
     55  1.1  tsutsui 	move	a1, v0
     56  1.1  tsutsui 	jr	t0
     57  1.1  tsutsui 	 move	a2, v1		/* v1 = mainfo */
     58  1.1  tsutsui 1:	b	1b
     59  1.1  tsutsui 	 nop
     60  1.1  tsutsui 	/* NOTREACHED */
     61  1.1  tsutsui 
     62  1.1  tsutsui #if 0 /* ROM putc test */
     63  1.1  tsutsui 	li	a0, 50		/* x-pos */
     64  1.1  tsutsui 2:	li	a2, 90		/* 'Z' */
     65  1.1  tsutsui 	lui	v0, 0xbfc0
     66  1.1  tsutsui 	ori	v0, 0xff60
     67  1.1  tsutsui 	li	a1, 50		/* y-pos */
     68  1.1  tsutsui 	jal	v0
     69  1.1  tsutsui 	 nop
     70  1.1  tsutsui 	b	2b
     71  1.1  tsutsui 	 addiu	a0, a0, 12
     72  1.1  tsutsui 	/* NOTREACHED */
     73  1.1  tsutsui #endif
     74  1.1  tsutsui #if 0 /* Frame buffer (TLB kseg2 mapped by IPL) test */
     75  1.1  tsutsui 	move	a3, zero
     76  1.1  tsutsui 	xori	a3, a3, 0x00
     77  1.1  tsutsui 3:	sll	v0, a3, 0x18
     78  1.1  tsutsui 	sra	a2, v0, 0x18
     79  1.1  tsutsui 	lui	a0, 0xf000
     80  1.1  tsutsui 	move	v1, zero
     81  1.1  tsutsui 	lui	a1, 0x1
     82  1.1  tsutsui 	ori	a1, a1, 0xffff
     83  1.1  tsutsui 2:	sb	a2, 0(a0)
     84  1.1  tsutsui 	addiu	v1, v1, 1
     85  1.1  tsutsui 	slt	v0, a1, v1
     86  1.1  tsutsui 	addiu	a0, a0, 1
     87  1.1  tsutsui 	beqz	v0, 2b
     88  1.1  tsutsui 	 nop
     89  1.1  tsutsui 	xori	a3, a3, 0xff
     90  1.1  tsutsui 	j	3b
     91  1.1  tsutsui 	 nop
     92  1.1  tsutsui 	/* NOTREACHED */
     93  1.1  tsutsui #endif
     94  1.1  tsutsui 
     95  1.1  tsutsui /*
     96  1.1  tsutsui  * void tlb_read(int index, void *)
     97  1.1  tsutsui  */
     98  1.1  tsutsui 	.global	tlb_read
     99  1.1  tsutsui 	.ent	tlb_read
    100  1.1  tsutsui tlb_read:
    101  1.1  tsutsui 	mtc0	a0, $0		/* Index Register */
    102  1.1  tsutsui 	nop; nop; nop; nop;
    103  1.1  tsutsui 	tlbr
    104  1.1  tsutsui 	nop; nop; nop; nop;
    105  1.1  tsutsui 	mfc0	t0, $5		/* PageMask */
    106  1.1  tsutsui 	nop; nop; nop; nop;
    107  1.1  tsutsui 	mfc0	t1, $10		/* EntryHi */
    108  1.1  tsutsui 	nop; nop; nop; nop;
    109  1.1  tsutsui 	mfc0	t2, $2		/* EntryLo0 */
    110  1.1  tsutsui 	nop; nop; nop; nop;
    111  1.1  tsutsui 	mfc0	t3, $3		/* EntryLo1 */
    112  1.1  tsutsui 	nop; nop; nop; nop;
    113  1.1  tsutsui 	sw	t0,  0(a1)
    114  1.1  tsutsui 	sw	t1,  4(a1)
    115  1.1  tsutsui 	sw	t2,  8(a1)
    116  1.1  tsutsui 	sw	t3, 12(a1)
    117  1.1  tsutsui 	jr	ra
    118  1.1  tsutsui 	 nop
    119  1.1  tsutsui 	.end	tlb_read
    120