Commit 169d1a4a authored by Helge Deller's avatar Helge Deller
Browse files

parisc: Provide an extru_safe() macro to extract unsigned bits



The extru instruction leaves the most significant 32 bits of the
target register in an undefined state on PA 2.0 systems.
Provide a macro to safely use extru on 32- and 64-bit machines.

Suggested-by: default avatarJohn David Anglin <dave.anglin@bell.net>
Signed-off-by: default avatarHelge Deller <deller@gmx.de>
parent 8d192bec
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -147,6 +147,17 @@
	extrd,u \r, 63-(\sa), 64-(\sa), \t
	.endm

	/* Extract unsigned for 32- and 64-bit
	 * The extru instruction leaves the most significant 32 bits of the
	 * target register in an undefined state on PA 2.0 systems. */
	.macro extru_safe r, p, len, t
#ifdef CONFIG_64BIT
	extrd,u	\r, 32+(\p), \len, \t
#else
	extru	\r, \p, \len, \t
#endif
	.endm

	/* load 32-bit 'value' into 'reg' compensating for the ldil
	 * sign-extension when running in wide mode.
	 * WARNING!! neither 'value' nor 'reg' can be expressions