Module Name:    src
Committed By:   skrll
Date:           Thu May 19 06:41:45 UTC 2022

Modified Files:
        src/sys/arch/hppa/hppa: intr.c lock_stubs.S

Log Message:
port-hppa/56837: RAS support is slightly incorrect within hppa kernel, too

While there isn't a bug here (the tf_iioq_tail handling is correct) apply
the change to make the conditional / ras symbols consistent with hppa_ras


To generate a diff of this commit:
cvs rdiff -u -r1.6 -r1.7 src/sys/arch/hppa/hppa/intr.c
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/hppa/hppa/lock_stubs.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/hppa/hppa/intr.c
diff -u src/sys/arch/hppa/hppa/intr.c:1.6 src/sys/arch/hppa/hppa/intr.c:1.7
--- src/sys/arch/hppa/hppa/intr.c:1.6	Sat Feb 26 03:02:25 2022
+++ src/sys/arch/hppa/hppa/intr.c	Thu May 19 06:41:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: intr.c,v 1.6 2022/02/26 03:02:25 macallan Exp $	*/
+/*	$NetBSD: intr.c,v 1.7 2022/05/19 06:41:45 skrll Exp $	*/
 /*	$OpenBSD: intr.c,v 1.27 2009/12/31 12:52:35 jsing Exp $	*/
 
 /*
@@ -35,7 +35,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.6 2022/02/26 03:02:25 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: intr.c,v 1.7 2022/05/19 06:41:45 skrll Exp $");
 
 #define __MUTEX_PRIVATE
 
@@ -339,8 +339,8 @@ hppa_intr(struct trapframe *frame)
 	extern char _lock_cas_ras_end[];
 
 	if (frame->tf_iisq_head == HPPA_SID_KERNEL &&
-	    frame->tf_iioq_head >= (u_int)_lock_cas_ras_start &&
-	    frame->tf_iioq_head <= (u_int)_lock_cas_ras_end) {
+	    frame->tf_iioq_head > (u_int)_lock_cas_ras_start &&
+	    frame->tf_iioq_head < (u_int)_lock_cas_ras_end) {
 		frame->tf_iioq_head = (u_int)_lock_cas_ras_start;
 		frame->tf_iioq_tail = (u_int)_lock_cas_ras_start + 4;
 	}
@@ -353,8 +353,8 @@ hppa_intr(struct trapframe *frame)
 	 * the owner value is left unset.
 	 */
 	if (frame->tf_iisq_head == HPPA_SID_KERNEL &&
-	    frame->tf_iioq_head >= (u_int)mutex_enter_crit_start &&
-	    frame->tf_iioq_head <= (u_int)mutex_enter_crit_end &&
+	    frame->tf_iioq_head > (u_int)mutex_enter_crit_start &&
+	    frame->tf_iioq_head < (u_int)mutex_enter_crit_end &&
 	    frame->tf_ret0 != 0)
 		((kmutex_t *)frame->tf_arg0)->mtx_owner = (uintptr_t)curlwp;
 #endif

Index: src/sys/arch/hppa/hppa/lock_stubs.S
diff -u src/sys/arch/hppa/hppa/lock_stubs.S:1.28 src/sys/arch/hppa/hppa/lock_stubs.S:1.29
--- src/sys/arch/hppa/hppa/lock_stubs.S:1.28	Sun Mar 20 20:19:34 2022
+++ src/sys/arch/hppa/hppa/lock_stubs.S	Thu May 19 06:41:45 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: lock_stubs.S,v 1.28 2022/03/20 20:19:34 andvar Exp $	*/
+/*	$NetBSD: lock_stubs.S,v 1.29 2022/05/19 06:41:45 skrll Exp $	*/
 
 /*-
  * Copyright (c) 2006, 2007 The NetBSD Foundation, Inc.
@@ -155,8 +155,8 @@ mutex_enter_crit_start:
 	GET_CURLWP(%t2)
 
 	bv	%r0(%rp)
-mutex_enter_crit_end:
 	 stw	%t2, MTX_OWNER(%arg0)
+mutex_enter_crit_end:
 EXIT(mutex_enter)
 
 #endif	/* !LOCKDEBUG */
@@ -171,8 +171,8 @@ _lock_cas_ras_start:
 	ldw	0(%arg0),%t1
 	comb,<>	%arg1, %t1, 1f
 	 copy	%t1,%ret0
-_lock_cas_ras_end:
 	stw	%arg2,0(%arg0)
+_lock_cas_ras_end:
 	copy	%arg1,%ret0
 1:
 	bv,n	%r0(%rp)

Reply via email to