Module Name:    src
Committed By:   tsutsui
Date:           Sat Nov  5 15:33:18 UTC 2011

Modified Files:
        src/sys/arch/luna68k/include: param.h
        src/sys/arch/luna68k/luna68k: locore.s

Log Message:
Sync _delay() with hp300:
 - unsigned -> u_int
 - use ENTRY_NOPROFILE()
 - align main delay loop with 8 byte cacheline boundary


To generate a diff of this commit:
cvs rdiff -u -r1.11 -r1.12 src/sys/arch/luna68k/include/param.h
cvs rdiff -u -r1.40 -r1.41 src/sys/arch/luna68k/luna68k/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/luna68k/include/param.h
diff -u src/sys/arch/luna68k/include/param.h:1.11 src/sys/arch/luna68k/include/param.h:1.12
--- src/sys/arch/luna68k/include/param.h:1.11	Tue Feb  8 20:20:16 2011
+++ src/sys/arch/luna68k/include/param.h	Sat Nov  5 15:33:18 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: param.h,v 1.11 2011/02/08 20:20:16 rmind Exp $ */
+/* $NetBSD: param.h,v 1.12 2011/11/05 15:33:18 tsutsui Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -70,7 +70,7 @@
 #define delay(us)	_delay((us)<<8)
 #define DELAY(n)	delay(n)
 
-void _delay(unsigned);
+void _delay(u_int);
 #endif	/* _KERNEL && !_LOCORE */
 
 #endif	/* !_MACHINE_PARAM_H_ */

Index: src/sys/arch/luna68k/luna68k/locore.s
diff -u src/sys/arch/luna68k/luna68k/locore.s:1.40 src/sys/arch/luna68k/luna68k/locore.s:1.41
--- src/sys/arch/luna68k/luna68k/locore.s:1.40	Sat Nov  5 15:27:51 2011
+++ src/sys/arch/luna68k/luna68k/locore.s	Sat Nov  5 15:33:18 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: locore.s,v 1.40 2011/11/05 15:27:51 tsutsui Exp $ */
+/* $NetBSD: locore.s,v 1.41 2011/11/05 15:33:18 tsutsui Exp $ */
 
 /*
  * Copyright (c) 1988 University of Utah.
@@ -1023,17 +1023,27 @@ ENTRY(getsr)
 	rts
 
 /*
- * _delay(unsigned N)
+ * _delay(u_int N)
  *
  * Delay for at least (N/256) microseconds.
  * This routine depends on the variable:  delay_divisor
  * which should be set based on the CPU clock rate.
  */
-GLOBAL(_delay)
+ENTRY_NOPROFILE(_delay)
 	| %d0 = arg = (usecs << 8)
 	movl	%sp@(4),%d0
 	| %d1 = delay_divisor
 	movl	_C_LABEL(delay_divisor),%d1
+	jra	L_delay			/* Jump into the loop! */
+
+	/*
+	 * Align the branch target of the loop to a half-line (8-byte)
+	 * boundary to minimize cache effects.  This guarantees both
+	 * that there will be no prefetch stalls due to cache line burst
+	 * operations and that the loop will run from a single cache
+	 * half-line.
+	 */
+	.align	8
 L_delay:
 	subl	%d1,%d0
 	jgt	L_delay

Reply via email to