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/aim/locore32.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$ */
    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 "assym.s"
   60 
   61 #include <sys/syscall.h>
   62 
   63 #include <machine/trap.h>
   64 #include <machine/param.h>
   65 #include <machine/spr.h>
   66 #include <machine/asm.h>
   67 
   68 /* Locate the per-CPU data structure */
   69 #define GET_CPUINFO(r)  \
   70         mfsprg0  r
   71 
   72 /*
   73  * Compiled KERNBASE location and the kernel load address
   74  */
   75         .globl  kernbase
   76         .set    kernbase, KERNBASE
   77 
   78 #define TMPSTKSZ        8192            /* 8K temporary stack */
   79 
   80 /*
   81  * Globals
   82  */
   83         .data
   84         .align  4
   85 GLOBAL(tmpstk)
   86         .space  TMPSTKSZ
   87 GLOBAL(esym)
   88         .long   0                       /* end of symbol table */
   89 
   90 #define INTRCNT_COUNT   256             /* max(HROWPIC_IRQMAX,OPENPIC_IRQMAX) */
   91 GLOBAL(intrnames)
   92         .space  INTRCNT_COUNT * (MAXCOMLEN + 1) * 2
   93 GLOBAL(sintrnames)
   94         .long   INTRCNT_COUNT * (MAXCOMLEN + 1) * 2
   95 
   96         .align 4
   97 GLOBAL(intrcnt)
   98         .space  INTRCNT_COUNT * 4 * 2
   99 GLOBAL(sintrcnt)
  100         .long   INTRCNT_COUNT * 4 * 2
  101 
  102         .text
  103         .globl  btext
  104 btext:
  105 
  106 /*
  107  * This symbol is here for the benefit of kvm_mkdb, and is supposed to
  108  * mark the start of kernel text.
  109  */
  110         .globl  kernel_text
  111 kernel_text:
  112 
  113 /*
  114  * Startup entry.  Note, this must be the first thing in the text
  115  * segment!
  116  */
  117         .text
  118         .globl  __start
  119 __start:
  120         li      8,0
  121         li      9,0x100
  122         mtctr   9
  123 1:
  124         dcbf    0,8
  125         icbi    0,8
  126         addi    8,8,0x20
  127         bdnz    1b
  128         sync
  129         isync
  130 
  131         /* Save the argument pointer and length */
  132         mr      20,6
  133         mr      21,7
  134 
  135         lis     8,openfirmware_entry@ha
  136         stw     5,openfirmware_entry@l(8) /* save client interface handler */
  137 
  138         lis     1,(tmpstk+TMPSTKSZ-16)@ha
  139         addi    1,1,(tmpstk+TMPSTKSZ-16)@l
  140 
  141         mfmsr   0
  142         lis     9,ofmsr@ha
  143         stwu    0,ofmsr@l(9)
  144 
  145         mfsprg0 0                       /* save SPRG0-3 */
  146         stw     0,4(9)                  /* ofmsr[1] = sprg0 */
  147         mfsprg1 0
  148         stw     0,8(9)                  /* ofmsr[2] = sprg1 */
  149         mfsprg2 0
  150         stw     0,12(9)                 /* ofmsr[3] = sprg2 */
  151         mfsprg3 0
  152         stw     0,16(9)                 /* ofmsr[4] = sprg3 */
  153         
  154         bl      OF_initial_setup
  155 
  156         lis     4,end@ha
  157         addi    4,4,end@l
  158         mr      5,4
  159 
  160         lis     3,kernel_text@ha
  161         addi    3,3,kernel_text@l
  162 
  163         /* Restore the argument pointer and length */
  164         mr      6,20
  165         mr      7,21
  166 
  167         bl      powerpc_init
  168         mr      %r1, %r3
  169         li      %r3, 0
  170         stw     %r3, 0(%r1)
  171         bl      mi_startup
  172         b       OF_exit
  173 
  174 /*
  175  * int setfault()
  176  *
  177  * Similar to setjmp to setup for handling faults on accesses to user memory.
  178  * Any routine using this may only call bcopy, either the form below,
  179  * or the (currently used) C code optimized, so it doesn't use any non-volatile
  180  * registers.
  181  */
  182         .globl  setfault
  183 setfault:
  184         mflr    0
  185         mfcr    12
  186         mfsprg  4,0
  187         lwz     4,TD_PCB(2)     /* curthread = r2 */
  188         stw     3,PCB_ONFAULT(4)
  189         stw     0,0(3)
  190         stw     1,4(3)
  191         stw     2,8(3)
  192         stmw    12,12(3)
  193         xor     3,3,3
  194         blr
  195 
  196 #include <powerpc/aim/trap_subr32.S>

Cache object: 284ec520a743223b5766a22f136384cd


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