Module Name:    src
Committed By:   macallan
Date:           Thu Apr 25 00:11:35 UTC 2013

Modified Files:
        src/sys/arch/powerpc/powerpc: clock.c

Log Message:
make delay() work with _ARCH_PPC64


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/arch/powerpc/powerpc/clock.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/powerpc/powerpc/clock.c
diff -u src/sys/arch/powerpc/powerpc/clock.c:1.12 src/sys/arch/powerpc/powerpc/clock.c:1.13
--- src/sys/arch/powerpc/powerpc/clock.c:1.12	Mon Jun 20 05:50:39 2011
+++ src/sys/arch/powerpc/powerpc/clock.c	Thu Apr 25 00:11:35 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: clock.c,v 1.12 2011/06/20 05:50:39 matt Exp $	*/
+/*	$NetBSD: clock.c,v 1.13 2013/04/25 00:11:35 macallan Exp $	*/
 /*      $OpenBSD: clock.c,v 1.3 1997/10/13 13:42:53 pefo Exp $	*/
 
 /*
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.12 2011/06/20 05:50:39 matt Exp $");
+__KERNEL_RCSID(0, "$NetBSD: clock.c,v 1.13 2013/04/25 00:11:35 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -185,8 +185,11 @@ decr_intr(struct clockframe *cfp)
 void
 delay(unsigned int n)
 {
-	u_quad_t tb;
-	u_long tbh, tbl, scratch;
+#ifdef _ARCH_PPC64
+	uint64_t tb, scratch;
+#else
+	uint64_t tb;
+	uint32_t tbh, tbl, scratch;
 
 #ifdef PPC_OEA601
 	if ((mfpvr() >> 16) == MPC601) {
@@ -208,16 +211,23 @@ delay(unsigned int n)
 		    : "r"(rtc[0]), "r"(rtc[1]), "n"(SPR_RTCU_R), "n"(SPR_RTCL_R)
 		    : "cr0");
 	} else
-#endif
+#endif /* PPC_OEA601 */
+#endif /* !_ARCH_PPC64 */
 	{
 		tb = mftb();
 		tb += (n * 1000 + ns_per_tick - 1) / ns_per_tick;
+#ifdef _ARCH_PPC64
+		__asm volatile ("1: mftb %0; cmpld %0,%1; blt 1b;"
+			      : "=&r"(scratch) : "r"(tb)
+			      : "cr0");
+#else
 		tbh = tb >> 32;
 		tbl = tb;
 		__asm volatile ("1: mftbu %0; cmplw %0,%1; blt 1b; bgt 2f;"
 			      "mftb %0; cmplw %0,%2; blt 1b; 2:"
 			      : "=&r"(scratch) : "r"(tbh), "r"(tbl)
 			      : "cr0");
+#endif
 	}
 }
 

Reply via email to