summaryrefslogtreecommitdiff
path: root/arch/arm/vfp/vfp.h
diff options
context:
space:
mode:
authorRussell King <rmk@dyn-67.arm.linux.org.uk>2008-01-10 20:07:08 +0300
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-01-10 20:07:08 +0300
commit90e6b048365950416419c031f2f2d9a8afb5b70c (patch)
tree9be821f3d0abf5d9773bb1d4f57f013be445fdac /arch/arm/vfp/vfp.h
parent198a6d5a6189501e2b8abf4e3149ccb337866f65 (diff)
downloadlinux-90e6b048365950416419c031f2f2d9a8afb5b70c.tar.xz
[ARM] vfp: fix fuitod/fsitod instructions
These two instructions exceptionally take a single precision register as their operand. This means we can't use vfp_get_dm() to read the register number - we need to use vfp_get_sm() instead. Add a flag to indicate this exception to the general rule. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/vfp/vfp.h')
-rw-r--r--arch/arm/vfp/vfp.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/vfp/vfp.h b/arch/arm/vfp/vfp.h
index 54a2ad6d9ca2..791d0238c68f 100644
--- a/arch/arm/vfp/vfp.h
+++ b/arch/arm/vfp/vfp.h
@@ -361,10 +361,12 @@ u32 vfp_estimate_sqrt_significand(u32 exponent, u32 significand);
* OP_SCALAR - this operation always operates in scalar mode
* OP_SD - the instruction exceptionally writes to a single precision result.
* OP_DD - the instruction exceptionally writes to a double precision result.
+ * OP_SM - the instruction exceptionally reads from a single precision operand.
*/
#define OP_SCALAR (1 << 0)
#define OP_SD (1 << 1)
#define OP_DD (1 << 1)
+#define OP_SM (1 << 2)
struct op {
u32 (* const fn)(int dd, int dn, int dm, u32 fpscr);