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.2/sys/powerpc/powerpc/locore.S 109677 2003-01-22 01:47:05Z 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         /* Save the argument pointer and length */
  152         mr      20,6
  153         mr      21,7
  154 
  155         lis     8,openfirmware_entry@ha
  156         stw     5,openfirmware_entry@l(8) /* save client interface handler */
  157         mr      3,5
  158 
  159         lis     1,tmpstk@ha
  160         addi    1,1,tmpstk@l
  161         addi    1,1,8192
  162 
  163         mfmsr   0
  164         lis     9,ofmsr@ha
  165         stw     0,ofmsr@l(9)
  166 
  167         bl      OF_init
  168 
  169         lis     4,end@ha
  170         addi    4,4,end@l
  171         mr      5,4
  172 
  173         lis     3,kernel_text@ha
  174         addi    3,3,kernel_text@l
  175 
  176         /* Restore the argument pointer and length */
  177         mr      6,20
  178         mr      7,21
  179 
  180         bl      powerpc_init
  181         bl      mi_startup
  182         b       OF_exit
  183 
  184 /*
  185  * int setfault()
  186  *
  187  * Similar to setjmp to setup for handling faults on accesses to user memory.
  188  * Any routine using this may only call bcopy, either the form below,
  189  * or the (currently used) C code optimized, so it doesn't use any non-volatile
  190  * registers.
  191  */
  192         .globl  setfault
  193 setfault:
  194         mflr    0
  195         mfcr    12
  196         mfsprg  4,0
  197         lwz     4,PC_CURTHREAD(4)
  198         lwz     4,TD_PCB(4)
  199         stw     3,PCB_ONFAULT(4)
  200         stw     0,0(3)
  201         stw     1,4(3)
  202         stw     2,8(3)
  203         stmw    12,12(3)
  204         xor     3,3,3
  205         blr
  206 
  207 #include <powerpc/powerpc/trap_subr.S>

Cache object: 610ec9107f95048faec96141425eebc6


[ 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.