2003-01-14  Roland McGrath  <roland@redhat.com>

	* util.c [LINUX] (restore_arg0, restore_arg1): New macros, defined
	appropriately via set_arg0 or no-ops for each architecture.
	(clearbpt): Use those instead of set_arg0 and set_arg1.
diff --git a/util.c b/util.c
index 9c4a9e5..d3cec2d 100644
--- a/util.c
+++ b/util.c
@@ -1190,18 +1190,22 @@
 # define get_arg1(tcp, state, valp) (*(valp) = (state)->r_o1, 0)
 # define set_arg0(tcp, state, val) ((state)->r_o0 = (val), 0)
 # define set_arg1(tcp, state, val) ((state)->r_o1 = (val), 0)
+# define restore_arg0(tcp, state, val) 0
 
 #else
 
 # if defined S390 || defined S390X
 #  define arg0_offset	PT_ORIGGPR2
 #  define arg1_offset	PT_GPR2
+#  define restore_arg0(tcp, state, val) 0
+#  define restore_arg1(tcp, state, val) 0
 # elif defined (ALPHA) || defined (MIPS)
 #  define arg0_offset	REG_A0
 #  define arg1_offset	(REG_A0+1)
 # elif defined (POWERPC)
 #  define arg0_offset	(4*PT_R3)
 #  define arg1_offset	(4*PT_R4)
+#  define restore_arg0(tcp, state, val) 0
 # elif defined (HPPA)
 #  define arg0_offset	 PT_GR26
 #  define arg1_offset	 (PT_GR26-4)
@@ -1211,6 +1215,9 @@
 # else
 #  define arg0_offset	0
 #  define arg1_offset	4
+#  if defined SH || defined ARM
+#   define restore_arg0(tcp, state, val) 0
+#  endif
 # endif
 
 typedef int arg_setup_state;
@@ -1236,6 +1243,12 @@
 
 #endif
 
+#ifndef restore_arg0
+# define restore_arg0(tcp, state, val) set_arg0((tcp), (state), (val))
+#endif
+#ifndef restore_arg1
+# define restore_arg1(tcp, state, val) set_arg1((tcp), (state), (val))
+#endif
 
 int
 setbpt(tcp)
@@ -1295,8 +1308,8 @@
 {
 	arg_setup_state state;
 	if (arg_setup (tcp, &state) < 0
-	    || set_arg0 (tcp, &state, tcp->inst[0]) < 0
-	    || set_arg1 (tcp, &state, tcp->inst[1]) < 0
+	    || restore_arg0 (tcp, &state, tcp->inst[0]) < 0
+	    || restore_arg1 (tcp, &state, tcp->inst[1]) < 0
 	    || arg_finish_change (tcp, &state))
 		return -1;
 	tcp->flags &= ~TCB_BPTSET;