Module Name:    src
Committed By:   tsutsui
Date:           Mon Sep 23 01:39:27 UTC 2013

Modified Files:
        src/sys/arch/mvme68k/include: prom.h
        src/sys/arch/mvme68k/stand/libbug: outln.c outstr.c

Log Message:
Make MVMEPROM_ARG2() macro take two args in a single asm statement.

Fixes a problem that a wrong address is passed to the MVMEPROM outstr
function (then caused garbages on screen) after we switched to gcc-4.5.
Reported and confirmed by Andrew Gillham on port-mvme68k@:
http://mail-index.NetBSD.org/port-mvme68k/2013/09/17/msg000084.html
http://mail-index.NetBSD.org/port-mvme68k/2013/09/19/msg000085.html
http://mail-index.NetBSD.org/port-mvme68k/2013/09/22/msg000095.html
http://mail-index.NetBSD.org/port-mvme68k/2013/09/22/msg000097.html
No error on "build.sh -m mvme68k build" builds.

Should be pulled up to netbsd-6 branches.


To generate a diff of this commit:
cvs rdiff -u -r1.17 -r1.18 src/sys/arch/mvme68k/include/prom.h
cvs rdiff -u -r1.3 -r1.4 src/sys/arch/mvme68k/stand/libbug/outln.c \
    src/sys/arch/mvme68k/stand/libbug/outstr.c

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/mvme68k/include/prom.h
diff -u src/sys/arch/mvme68k/include/prom.h:1.17 src/sys/arch/mvme68k/include/prom.h:1.18
--- src/sys/arch/mvme68k/include/prom.h:1.17	Sat Dec 24 23:24:01 2005
+++ src/sys/arch/mvme68k/include/prom.h	Mon Sep 23 01:39:27 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: prom.h,v 1.17 2005/12/24 23:24:01 perry Exp $	*/
+/*	$NetBSD: prom.h,v 1.18 2013/09/23 01:39:27 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1995 Theo de Raadt
@@ -155,8 +155,10 @@ struct mvmeprom_args {
 	__asm volatile ("clrl %sp@-")
 #define MVMEPROM_ARG1(arg) \
 	__asm volatile ("movel %0, %%sp@-"::"d" (arg))
-#define MVMEPROM_ARG2(arg) \
-	__asm volatile ("movel %0, %%sp@-"::"d" (arg))
+#define MVMEPROM_ARG2(arg0, arg1)				\
+	__asm volatile ("movel %0, %%sp@-;"			\
+			"movel %1, %%sp@-;"			\
+			:: "d" (arg0), "d" (arg1):)
 #define MVMEPROM_GETRES(ret) \
 	__asm volatile ("movel %%sp@+,%0": "=d" (ret):)
 #define MVMEPROM_GETSR(ret) \

Index: src/sys/arch/mvme68k/stand/libbug/outln.c
diff -u src/sys/arch/mvme68k/stand/libbug/outln.c:1.3 src/sys/arch/mvme68k/stand/libbug/outln.c:1.4
--- src/sys/arch/mvme68k/stand/libbug/outln.c:1.3	Sat Jan 12 09:54:31 2008
+++ src/sys/arch/mvme68k/stand/libbug/outln.c	Mon Sep 23 01:39:27 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: outln.c,v 1.3 2008/01/12 09:54:31 tsutsui Exp $	*/
+/*	$NetBSD: outln.c,v 1.4 2013/09/23 01:39:27 tsutsui Exp $	*/
 
 /*
  * bug routines -- assumes that the necessary sections of memory
@@ -13,7 +13,6 @@ void
 mvmeprom_outln(char *start, char *end)
 {
 
-	MVMEPROM_ARG1(end);
-	MVMEPROM_ARG2(start);
+	MVMEPROM_ARG2(end, start);
 	MVMEPROM_CALL(MVMEPROM_OUTSTRCRLF);
 }
Index: src/sys/arch/mvme68k/stand/libbug/outstr.c
diff -u src/sys/arch/mvme68k/stand/libbug/outstr.c:1.3 src/sys/arch/mvme68k/stand/libbug/outstr.c:1.4
--- src/sys/arch/mvme68k/stand/libbug/outstr.c:1.3	Sat Jan 12 09:54:31 2008
+++ src/sys/arch/mvme68k/stand/libbug/outstr.c	Mon Sep 23 01:39:27 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: outstr.c,v 1.3 2008/01/12 09:54:31 tsutsui Exp $	*/
+/*	$NetBSD: outstr.c,v 1.4 2013/09/23 01:39:27 tsutsui Exp $	*/
 
 /*
  * bug routines -- assumes that the necessary sections of memory
@@ -13,7 +13,6 @@ void
 mvmeprom_outstr(char *start, char *end)
 {
 
-	MVMEPROM_ARG1(end);
-	MVMEPROM_ARG2(start);
+	MVMEPROM_ARG2(end, start);
 	MVMEPROM_CALL(MVMEPROM_OUTSTR);
 }

Reply via email to