summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gray <jsg@cvs.openbsd.org>2022-02-15 00:27:12 +0000
committerJonathan Gray <jsg@cvs.openbsd.org>2022-02-15 00:27:12 +0000
commit989836bd37f26a56bf846b45862c3b2ffcc355bf (patch)
tree239005955c64e72bc95760dea05bf449ab06716b
parent4c4f4ecd9c03f30be5953b601e0c40bcd739ab6b (diff)
fix mask in hppa inst_trap_return()
inst_trap_return() was checking for rfir by masking with 0xfc001fc0 which made it impossible to match rfir (0xca0) rfi: return from interruption 00 rv rv rv 60 0 6 5 5 3 8 5 rfir: return from interruption and restore 00 rv rv rv 65 0 6 5 5 3 8 5 from "PA-RISC 1.1 Architecture and Instruction Set Reference Manual" where rv indicates reserved bits change the mask to only mask out reserved bits and check for rfi in addition to rfir ok miod@
-rw-r--r--sys/arch/hppa/include/db_machdep.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/arch/hppa/include/db_machdep.h b/sys/arch/hppa/include/db_machdep.h
index 0cede97b7eb..c8f70a65367 100644
--- a/sys/arch/hppa/include/db_machdep.h
+++ b/sys/arch/hppa/include/db_machdep.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: db_machdep.h,v 1.22 2021/08/30 08:11:12 jasper Exp $ */
+/* $OpenBSD: db_machdep.h,v 1.23 2022/02/15 00:27:11 jsg Exp $ */
/*
* Copyright (c) 1998-2005 Michael Shalayeff
@@ -63,7 +63,8 @@ static __inline int inst_return(u_int ins) {
(ins & 0xfc000000) == 0xe0000000;
}
static __inline int inst_trap_return(u_int ins) {
- return (ins & 0xfc001fc0) == 0x00000ca0;
+ return (ins & 0xfc001fff) == 0x00000c00 || /* rfi */
+ (ins & 0xfc001fff) == 0x00000ca0; /* rfir */
}
#if 0