Module Name:    src
Committed By:   thorpej
Date:           Wed Feb 17 23:21:47 UTC 2021

Modified Files:
        src/sys/arch/macppc/macppc: locore.S
        src/sys/arch/ofppc/ofppc: locore.S

Log Message:
Document the register state on entry per the OpenFirmware PowerPC CPU
bindings.  Ensure we save off %r6 and %r7 before calling any other
functions.


To generate a diff of this commit:
cvs rdiff -u -r1.77 -r1.78 src/sys/arch/macppc/macppc/locore.S
cvs rdiff -u -r1.50 -r1.51 src/sys/arch/ofppc/ofppc/locore.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/macppc/macppc/locore.S
diff -u src/sys/arch/macppc/macppc/locore.S:1.77 src/sys/arch/macppc/macppc/locore.S:1.78
--- src/sys/arch/macppc/macppc/locore.S:1.77	Sat Feb 13 02:17:02 2021
+++ src/sys/arch/macppc/macppc/locore.S	Wed Feb 17 23:21:46 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.77 2021/02/13 02:17:02 thorpej Exp $	*/
+/*	$NetBSD: locore.S,v 1.78 2021/02/17 23:21:46 thorpej Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -77,10 +77,23 @@ _C_LABEL(kernel_text):
 /*
  * Startup entry.  Note, this must be the first thing in the text
  * segment!
+ *
+ * Register state as transfer is passed from OpenFirmware / boot loader:
+ *
+ *	%r1	Stack provided by OpenFirmware / boot loader
+ *	%r3	Reserved for platform binding (unused here)
+ *	%r4	Reserved for platform binding (unused here)
+ *	%r5	OpenFirmware client entry point
+ *	%r6	Arguments
+ *	%r7	Arguments length
  */
 	.text
 	.globl	__start
 __start:
+	/* Save off arguments that we need preserved. */
+	mr	%r13,%r6
+	mr	%r14,%r7
+
 	bl	_C_LABEL(ofwinit)		/* init OF */
 
 	li	%r0,0
@@ -89,8 +102,6 @@ __start:
 #endif
 	isync
 
-	mr	%r13,%r6
-	mr	%r14,%r7
 	bl	_C_LABEL(cpu_model_init)	/* init oeacpufeat */
 
 /* compute end of kernel memory */

Index: src/sys/arch/ofppc/ofppc/locore.S
diff -u src/sys/arch/ofppc/ofppc/locore.S:1.50 src/sys/arch/ofppc/ofppc/locore.S:1.51
--- src/sys/arch/ofppc/ofppc/locore.S:1.50	Sun Jul 15 05:16:43 2018
+++ src/sys/arch/ofppc/ofppc/locore.S	Wed Feb 17 23:21:47 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.50 2018/07/15 05:16:43 maxv Exp $	*/
+/*	$NetBSD: locore.S,v 1.51 2021/02/17 23:21:47 thorpej Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -75,13 +75,24 @@ _C_LABEL(kernel_text):
 /*
  * Startup entry.  Note, this must be the first thing in the text
  * segment!
+ *
+ * Register state as transfer is passed from OpenFirmware / boot loader:
+ *
+ *	%r1	Stack provided by OpenFirmware / boot loader
+ *	%r3	Reserved for platform binding (unused here)
+ *	%r4	Reserved for platform binding (unused here)
+ *	%r5	OpenFirmware client entry point
+ *	%r6	Arguments
+ *	%r7	Arguments length
  */
 	.text
 	.globl	__start
 __start:
+	/* Save off arguments that we need preserved. */
 	mr	%r13,%r6
 	mr	%r14,%r7
-	bl	_C_LABEL(ofwinit)	/* init our OF hooks */
+
+	bl	_C_LABEL(ofwinit)	/* init OF */
 
 	li	%r0,0
 	mtmsr	%r0			/* Disable FPU/MMU/exceptions */

Reply via email to