Loading...
osfmk/ppc/aligned_data.s xnu-1504.9.37 xnu-517
--- xnu/xnu-1504.9.37/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
+