2006-12-10  Dmitry V. Levin <ldv@altlinux.org>

	Add biarch support for "struct timeval".
	* defs.h (bitness_t): New enum type.
	(printtv_bitness, sprinttv): New function prototypes.
	(printtv): Convert to macro wrapper around printtv_bitness().
	(printtv32): Remove.
	* desc.c (decode_select): Use printtv_bitness() and sprinttv().
	(sys_oldselect, sys_osf_select, sys_select, sys_pselect6):
	Update decode_select() use.
	* file.c [ALPHA] (sys_osf_utimes): Use printtv_bitness().
	* time.c (printtv_bitness, sprinttv): New functions.
	(printtv, printtv32): Remove.
	[ALPHA] (sys_osf_settimeofday, sys_osf_settimeofday):
	Use printtv_bitness().
	Fixes RH#171626, RH#173050.
diff --git a/defs.h b/defs.h
index 344e4e1..0396b11 100644
--- a/defs.h
+++ b/defs.h
@@ -421,6 +421,8 @@
 #define P(args) ()
 #endif
 
+enum bitness_t { BITNESS_CURRENT = 0, BITNESS_32 };
+
 extern int set_personality P((int personality));
 extern char *xlookup P((const struct xlat *, int));
 extern struct tcb *alloctcb P((int));
@@ -449,7 +451,8 @@
 extern void printnum_int P((struct tcb *, long, char *));
 extern void printpath P((struct tcb *, long));
 extern void printpathn P((struct tcb *, long, int));
-extern void printtv P((struct tcb *, long));
+extern void printtv_bitness P((struct tcb *, long, enum bitness_t));
+extern void sprinttv P((struct tcb *, long, enum bitness_t, char *));
 #ifdef HAVE_SIGINFO_T
 extern void printsiginfo P((siginfo_t *, int));
 #endif
@@ -468,7 +471,6 @@
 extern void printtrailer P((struct tcb *));
 extern void tabto P((int));
 extern void call_summary P((FILE *));
-extern void printtv32 P((struct tcb*, long));
 extern void tprint_iov P((struct tcb *, unsigned long, unsigned long));
 
 #ifdef LINUX
@@ -512,6 +514,9 @@
 #define umove(pid, addr, objp)	\
 	umoven((pid), (addr), sizeof *(objp), (char *) (objp))
 
+#define printtv(tcp, addr)	\
+	printtv_bitness((tcp), (addr), BITNESS_CURRENT)
+
 #ifdef __STDC__
 #ifdef __GNUC__
 extern void tprintf(const char *fmt, ...)