The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/powerpc/powerpc/locore.s

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /* $FreeBSD: releng/5.0/sys/powerpc/powerpc/locore.s 103599 2002-09-19 04:29:59Z grehan $ */
    2 /* $NetBSD: locore.S,v 1.24 2000/05/31 05:09:17 thorpej Exp $ */
    3 
    4 /*
    5  * Copyright (C) 2001 Benno Rice
    6  * All rights reserved.
    7  *
    8  * Redistribution and use in source and binary forms, with or without
    9  * modification, are permitted provided that the following conditions
   10  * are met:
   11  * 1. Redistributions of source code must retain the above copyright
   12  *    notice, this list of conditions and the following disclaimer.
   13  * 2. Redistributions in binary form must reproduce the above copyright
   14  *    notice, this list of conditions and the following disclaimer in the
   15  *    documentation and/or other materials provided with the distribution.
   16  *
   17  * THIS SOFTWARE IS PROVIDED BY Benno Rice ``AS IS'' AND ANY EXPRESS OR
   18  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   19  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   20  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   21  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   22  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   23  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   24  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   25  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   26  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   27  */
   28 /*
   29  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
   30  * Copyright (C) 1995, 1996 TooLs GmbH.
   31  * All rights reserved.
   32  *
   33  * Redistribution and use in source and binary forms, with or without
   34  * modification, are permitted provided that the following conditions
   35  * are met:
   36  * 1. Redistributions of source code must retain the above copyright
   37  *    notice, this list of conditions and the following disclaimer.
   38  * 2. Redistributions in binary form must reproduce the above copyright
   39  *    notice, this list of conditions and the following disclaimer in the
   40  *    documentation and/or other materials provided with the distribution.
   41  * 3. All advertising materials mentioning features or use of this software
   42  *    must display the following acknowledgement:
   43  *      This product includes software developed by TooLs GmbH.
   44  * 4. The name of TooLs GmbH may not be used to endorse or promote products
   45  *    derived from this software without specific prior written permission.
   46  *
   47  * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
   48  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   49  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
   50  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   51  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   52  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   53  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   54  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   55  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   56  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   57  */
   58 
   59 #include "opt_ddb.h"
   60 #include "opt_ipkdb.h"
   61 #include "assym.s"
   62 
   63 #include <sys/syscall.h>
   64 
   65 #include <machine/trap.h>
   66 #include <machine/param.h>
   67 #include <machine/sr.h>
   68 #include <machine/spr.h>
   69 #include <machine/psl.h>
   70 #include <machine/asm.h>
   71 
   72 /*
   73  * Some instructions gas doesn't understand (yet?)
   74  */
   75 #define bdneq   bdnzf 2,
   76 
   77 /*
   78  * Globals
   79  */
   80         .data
   81 GLOBAL(tmpstk)
   82         .space  8208
   83 GLOBAL(esym)
   84         .long   0                       /* end of symbol table */
   85 
   86 GLOBAL(ofmsr)
   87         .long   0                       /* msr used in Open Firmware */
   88 
   89 GLOBAL(powersave)
   90         .long   0
   91 
   92 #define INTSTK          8192            /* 8K interrupt stack */
   93 #define SPILLSTK        4096            /* 4K spill stack */
   94 
   95 /*
   96  * Dummy interrupt table to keep sysctl happy until
   97  * it's worked out what to do with naming
   98  */
   99 GLOBAL(intrnames)
  100         .asciz "dummy"
  101 GLOBAL(eintrnames)
  102         .align 4
  103 GLOBAL(intrcnt)
  104         .long 0
  105 GLOBAL(eintrcnt)
  106         
  107 /*
  108  * File-scope for locore.S
  109  */
  110 idle_u:
  111         .long   0                       /* fake uarea during idle after exit */
  112 openfirmware_entry:
  113         .long   0                       /* openfirmware entry point */
  114 srsave:
  115         .long   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  116 
  117 /*
  118  * This symbol is here for the benefit of kvm_mkdb, and is supposed to
  119  * mark the start of kernel text.
  120  */
  121         .text
  122         .globl  kernel_text
  123 kernel_text:
  124 
  125 /*
  126  * Startup entry.  Note, this must be the first thing in the text
  127  * segment!
  128  */
  129         .text
  130         .globl  __start
  131 __start:
  132 #ifdef  FIRMWORKSBUGS
  133         mfmsr   0
  134         andi.   0,0,PSL_IR|PSL_DR
  135         beq     1f
  136 
  137         bl      ofwr_init
  138 1:
  139 #endif
  140         li      8,0
  141         li      9,0x100
  142         mtctr   9
  143 1:
  144         dcbf    0,8
  145         icbi    0,8
  146         addi    8,8,0x20
  147         bdnz    1b
  148         sync
  149         isync
  150 
  151         mtibatu 0,0
  152         mtibatu 1,0
  153         mtibatu 2,0
  154         mtibatu 3,0
  155         mtdbatu 0,0
  156         mtdbatu 1,0
  157         mtdbatu 2,0
  158         mtdbatu 3,0
  159 
  160         li      9,0x12
  161         mtibatl 0,9
  162         mtdbatl 0,9
  163         li      9,0x1ffe
  164         mtibatu 0,9
  165         mtdbatu 0,9
  166         isync
  167 
  168         /* Save the argument pointer and length */
  169         mr      20,6
  170         mr      21,7
  171 
  172         lis     8,openfirmware_entry@ha
  173         stw     5,openfirmware_entry@l(8) /* save client interface handler */
  174         mr      3,5
  175 
  176         lis     1,tmpstk@ha
  177         addi    1,1,tmpstk@l
  178         addi    1,1,8192
  179 
  180         mfmsr   0
  181         lis     9,ofmsr@ha
  182         stw     0,ofmsr@l(9)
  183 
  184         bl      OF_init
  185 
  186         lis     4,end@ha
  187         addi    4,4,end@l
  188         mr      5,4
  189 
  190         lis     3,kernel_text@ha
  191         addi    3,3,kernel_text@l
  192 
  193         /* Restore the argument pointer and length */
  194         mr      6,20
  195         mr      7,21
  196 
  197         bl      powerpc_init
  198         bl      mi_startup
  199         b       OF_exit
  200 
  201 /*
  202  * int setfault()
  203  *
  204  * Similar to setjmp to setup for handling faults on accesses to user memory.
  205  * Any routine using this may only call bcopy, either the form below,
  206  * or the (currently used) C code optimized, so it doesn't use any non-volatile
  207  * registers.
  208  */
  209         .globl  setfault
  210 setfault:
  211         mflr    0
  212         mfcr    12
  213         mfsprg  4,0
  214         lwz     4,PC_CURTHREAD(4)
  215         lwz     4,TD_PCB(4)
  216         stw     3,PCB_ONFAULT(4)
  217         stw     0,0(3)
  218         stw     1,4(3)
  219         stw     2,8(3)
  220         stmw    12,12(3)
  221         xor     3,3,3
  222         blr
  223 
  224 #include <powerpc/powerpc/trap_subr.S>

Cache object: f1912da26f5b7c7434e37db62cf651a6


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.