Module Name:    src
Committed By:   chs
Date:           Sun Nov  9 00:05:06 UTC 2014

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

Log Message:
in the initial asm code, save the interesting caller-saved registers
(containing "arg" and "len") across function calls to C code.
fixes kernels built with gcc 4.8.


To generate a diff of this commit:
cvs rdiff -u -r1.71 -r1.72 src/sys/arch/macppc/macppc/locore.S
cvs rdiff -u -r1.48 -r1.49 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.71 src/sys/arch/macppc/macppc/locore.S:1.72
--- src/sys/arch/macppc/macppc/locore.S:1.71	Thu Apr 11 18:36:44 2013
+++ src/sys/arch/macppc/macppc/locore.S	Sun Nov  9 00:05:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.71 2013/04/11 18:36:44 macallan Exp $	*/
+/*	$NetBSD: locore.S,v 1.72 2014/11/09 00:05:06 chs Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -82,8 +82,10 @@ _C_LABEL(kernel_text):
 	.text
 	.globl	__start
 __start:
-	bl	_C_LABEL(cpu_model_init)	/* init oeacpufeat */
 	bl	_C_LABEL(ofwinit)		/* init OF */
+	mr	13,6
+	mr	14,7
+	bl	_C_LABEL(cpu_model_init)	/* init oeacpufeat */
 
 	li	0,0
 	mtmsr	0			/* Disable FPU/MMU/exceptions */
@@ -99,6 +101,8 @@ __start:
 	addi	4,4,_C_LABEL(end)@l
 #if NKSYMS || defined(DDB) || defined(MODULAR)
 	/* skip symbol table */
+	mr	6,13
+	mr	7,14
 	cmpwi	6,0
 	beq	1f
 	add	9,6,7			/* r9 = args + l */

Index: src/sys/arch/ofppc/ofppc/locore.S
diff -u src/sys/arch/ofppc/ofppc/locore.S:1.48 src/sys/arch/ofppc/ofppc/locore.S:1.49
--- src/sys/arch/ofppc/ofppc/locore.S:1.48	Mon Jun 20 19:56:12 2011
+++ src/sys/arch/ofppc/ofppc/locore.S	Sun Nov  9 00:05:06 2014
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.S,v 1.48 2011/06/20 19:56:12 matt Exp $	*/
+/*	$NetBSD: locore.S,v 1.49 2014/11/09 00:05:06 chs Exp $	*/
 
 /*
  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
@@ -80,6 +80,8 @@ _C_LABEL(kernel_text):
 	.text
 	.globl	__start
 __start:
+	mr	%r13,%r6
+	mr	%r14,%r7
 	bl	_C_LABEL(ofwinit)	/* init our OF hooks */
 
 	li	%r0,0
@@ -104,6 +106,8 @@ __start:
         addi	%r4,%r4,_C_LABEL(end)@l
 #if NKSYMS || defined(DDB) || defined(MODULAR)
 	/* skip symbol table */
+	mr	%r6,%r13
+	mr	%r7,%r14
 	cmpwi	%r6,0
 	beq	1f
 	add	%r9,%r6,%r7			/* r9 = args + l */

Reply via email to