Loading...
--- xnu/xnu-792.18.15/osfmk/ppc/aligned_data.s
+++ xnu/xnu-517/osfmk/ppc/aligned_data.s
@@ -1,19 +1,16 @@
/*
* Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
*
- * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
+ * @APPLE_LICENSE_HEADER_START@
+ *
+ * Copyright (c) 1999-2003 Apple Computer, Inc. All Rights Reserved.
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apple Public Source License
* Version 2.0 (the 'License'). You may not use this file except in
- * compliance with the License. The rights granted to you under the License
- * may not be used to create, or enable the creation or redistribution of,
- * unlawful or unlicensed copies of an Apple operating system, or to
- * circumvent, violate, or enable the circumvention or violation of, any
- * terms of an Apple operating system software license agreement.
- *
- * Please obtain a copy of the License at
- * http://www.opensource.apple.com/apsl/ and read it before using this file.
+ * compliance with the License. Please obtain a copy of the License at
+ * http://www.opensource.apple.com/apsl/ and read it before using this
+ * file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
@@ -23,7 +20,7 @@
* Please see the License for the specific language governing rights and
* limitations under the License.
*
- * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
+ * @APPLE_LICENSE_HEADER_END@
*/
/*
* This module only exists because I don't know how to get the silly C compiler
@@ -49,25 +46,27 @@
#include <debug.h>
+#include <cpus.h>
#include <ppc/asm.h>
#include <ppc/proc_reg.h>
#include <ppc/spec_reg.h>
#include <mach/ppc/vm_param.h>
#include <assym.s>
+;
+; NOTE: We need this only if PREEMPTSTACK is set to non-zero in hw_lock.
+; Make sure they are set to the same thing
+;
+#define PREEMPTSTACK 0
+
.data
/* 4096-byte aligned areas */
- .globl EXT(PerProcTable)
+ .globl EXT(per_proc_info)
.align 12
-EXT(PerProcTable): ; Per processor table
- .space (ppeSize*MAX_CPUS),0 ; (filled with 0s)
-
- .globl EXT(BootProcInfo)
- .align 12
-EXT(BootProcInfo): ; Per processor data area
- .space ppSize,0 ; (filled with 0s)
+EXT(per_proc_info): ; Per processor data area
+ .space (ppSize*NCPUS),0 ; (filled with 0s)
/* 512-byte aligned areas */
@@ -89,6 +88,19 @@
debstash:
.set .,.+256
+#if PREEMPTSTACK
+
+;
+; NOTE: We need this only if PREEMPTSTACK is set to non-zero in hw_lock.
+;
+
+ .globl EXT(DBGpreempt) ; preemption debug stack
+ .align 8
+EXT(DBGpreempt):
+ .set .,.+(NCPUS*PREEMPTSTACK*16)
+#endif
+
+
/* 128-byte aligned areas */
.globl EXT(mapCtl)
@@ -107,6 +119,18 @@
EXT(free_mappings):
.long 0
+ .globl EXT(syncClkSpot)
+ .align 7
+EXT(syncClkSpot):
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+ .long 0
+
.globl EXT(NMIss)
.align 7
EXT(NMIss):
@@ -172,38 +196,42 @@
.globl EXT(dbspecrs)
.align 3
EXT(dbspecrs):
- .set .,.+(336*4)
+ .set .,.+(80*4)
/*
- * Boot processor Interrupt and debug stacks go here.
+ * Interrupt and debug stacks go here
*/
-
- /* in the __HIB section since the hibernate restore code uses this stack. */
- .section __HIB, __data
-
+
.align PPC_PGSHIFT
+ .globl EXT(FixedStackStart)
+EXT(FixedStackStart):
.globl EXT(intstack)
EXT(intstack):
- .globl EXT(gIOHibernateRestoreStack)
-EXT(gIOHibernateRestoreStack):
-
- .set .,.+INTSTACK_SIZE
-
- .globl EXT(gIOHibernateRestoreStackEnd)
-EXT(gIOHibernateRestoreStackEnd):
-
- /* back to the regular __DATA section. */
-
- .section __DATA, __data
- .align PPC_PGSHIFT
-
+ .set .,.+INTSTACK_SIZE*NCPUS
+
/* Debugger stack - used by the debugger if present */
+/* NOTE!!! Keep the debugger stack right after the interrupt stack */
.globl EXT(debstack)
EXT(debstack):
- .set ., .+KERNEL_STACK_SIZE
-
- .section __DATA, __data
-
-
+ .set ., .+KERNEL_STACK_SIZE*NCPUS
+
+ .globl EXT(FixedStackEnd)
+EXT(FixedStackEnd):
+
+ .align ALIGN
+ .globl EXT(intstack_top_ss)
+EXT(intstack_top_ss):
+ .long EXT(intstack)+INTSTACK_SIZE-FM_SIZE /* intstack_top_ss points to the top of interrupt stack */
+
+ .align ALIGN
+ .globl EXT(debstack_top_ss)
+EXT(debstack_top_ss):
+
+ .long EXT(debstack)+KERNEL_STACK_SIZE-FM_SIZE /* debstack_top_ss points to the top of debug stack */
+
+ .globl EXT(debstackptr)
+EXT(debstackptr):
+ .long EXT(debstack)+KERNEL_STACK_SIZE-FM_SIZE
+