No empty .Rs/.Re
[netbsd-mini2440.git] / sys / arch / evbppc / pmppc / pmppc_locore.S
blobabfc8dc1c9406d5bc67e25b039aef287806a59d3
1 /*      $NetBSD: pmppc_locore.S,v 1.3 2008/02/05 22:31:49 garbled Exp $ */
2 /*      $OpenBSD: locore.S,v 1.4 1997/01/26 09:06:38 rahnds Exp $       */
4 /*
5  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
6  * Copyright (C) 1995, 1996 TooLs GmbH.
7  * All rights reserved.
8  *
9  * Redistribution and use in source and binary forms, with or without
10  * modification, are permitted provided that the following conditions
11  * are met:
12  * 1. Redistributions of source code must retain the above copyright
13  *    notice, this list of conditions and the following disclaimer.
14  * 2. Redistributions in binary form must reproduce the above copyright
15  *    notice, this list of conditions and the following disclaimer in the
16  *    documentation and/or other materials provided with the distribution.
17  * 3. All advertising materials mentioning features or use of this software
18  *    must display the following acknowledgement:
19  *      This product includes software developed by TooLs GmbH.
20  * 4. The name of TooLs GmbH may not be used to endorse or promote products
21  *    derived from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
24  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
29  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
31  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
32  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
35 #include "opt_ddb.h"
36 #include "opt_kgdb.h"
37 #include "fs_kernfs.h"
38 #include "opt_ipkdb.h"
39 #include "opt_multiprocessor.h"
40 #include "opt_openpic.h"
41 #include "opt_ppcparam.h"
42 #include "assym.h"
44 #include <sys/syscall.h>
46 #include <machine/param.h>
47 #include <machine/vmparam.h>
48 #include <machine/pmap.h>
49 #include <machine/psl.h>
50 #include <machine/trap.h>
51 #define _NOREGNAMES
52 #include <machine/asm.h>
54 #include <powerpc/spr.h>
55 #include <powerpc/oea/hid.h>
57 #include "ksyms.h"
60  * Some instructions gas doesn't understand (yet?)
61  */
62 #define bdneq   bdnzf 2,
65  * Globals
66  */
67 GLOBAL(startsym)
68         .long   0                       /* start symbol table */
69 GLOBAL(endsym)
70         .long   0                       /* end symbol table */
71 GLOBAL(oeacpufeat)
72         .long   0                       /* cpu features */
74  * This symbol is here for the benefit of kvm_mkdb, and is supposed to
75  * mark the start of kernel text.
76  */
77         .text
78         .globl  _C_LABEL(kernel_text)
79 _C_LABEL(kernel_text):
82  * Startup entry.  Note, this must be the first thing in the text
83  * segment!
84  */
85         .text
86         .globl  __start
87 __start:
88         li      0,0
89         mtmsr   0                       /* Disable FPU/MMU/exceptions */
90         isync
92         /* Enable data and instruction caches */
94         mfspr   8,1008
95         ori     8, 8, (HID0_ICE | HID0_DCE)@l
96         mtspr   1008,8
99 /* compute end of kernel memory */
100         lis     4,_C_LABEL(end)@ha
101         addi    4,4,_C_LABEL(end)@l
103         INIT_CPUINFO(4,1,9,0)
105         lis     3,__start@ha
106         addi    3,3,__start@l
108         xor     5,5,5
109         xor     6,6,6
110         bl      _C_LABEL(initppc)
112         sync
113         isync
114         mfspr   8,SPR_HID0
115         ori     8, 8, (HID0_ICE | HID0_DCE)@l
116         isync
117         mtspr   SPR_HID0,8
118         sync
119         isync
121         bl      _C_LABEL(main)
123 loop:   b       loop                    /* XXX not reached */
125         .globl  _C_LABEL(enable_intr)
126 _C_LABEL(enable_intr):
127         mfmsr   3
128         ori     3,3,PSL_EE@l
129         mtmsr   3
130         blr
132         .globl  _C_LABEL(disable_intr)
133 _C_LABEL(disable_intr):
134         mfmsr   3
135         andi.   3,3,~PSL_EE@l
136         mtmsr   3
137         blr
140  * Include common switch / setfault code
141  */
142 #include <powerpc/powerpc/locore_subr.S>
145  * Include common trap / execption code
146  */
147 #include <powerpc/powerpc/trap_subr.S>
150  * Include PIO routines
151  */
152 #include <powerpc/powerpc/pio_subr.S>