summaryrefslogtreecommitdiff
path: root/compiler/utils
diff options
context:
space:
mode:
authorKarel Gardas <karel.gardas@centrum.cz>2012-04-25 09:04:50 +0200
committerSimon Marlow <marlowsd@gmail.com>2012-04-27 11:13:06 +0100
commit3144f85661da176e3d80f28d652b42245becde09 (patch)
treef10ab746a7cf379e134960ca7daaa2c14643a46e /compiler/utils
parent18c2a2f71e38fad5e677b8f448f6135e5a691868 (diff)
downloadhaskell-3144f85661da176e3d80f28d652b42245becde09.tar.gz
add support for ARM hard-float ABI (fixes #5914)
This patch enhances Platform's ArchARM to include ARM ABI value. It also tweaks configure machinery to detect hard-float ABI and to set it wherever needed. Finally when hard-float ABI is in use, pass appropriate compiler option to the LLVM's llc. Fixes #5914.
Diffstat (limited to 'compiler/utils')
-rw-r--r--compiler/utils/Platform.hs12
1 files changed, 10 insertions, 2 deletions
diff --git a/compiler/utils/Platform.hs b/compiler/utils/Platform.hs
index 47dd7798cd..8252621661 100644
--- a/compiler/utils/Platform.hs
+++ b/compiler/utils/Platform.hs
@@ -7,6 +7,7 @@ module Platform (
OS(..),
ArmISA(..),
ArmISAExt(..),
+ ArmABI(..),
target32Bit,
osElfTarget
@@ -41,7 +42,9 @@ data Arch
| ArchSPARC
| ArchARM
{ armISA :: ArmISA
- , armISAExt :: [ArmISAExt] }
+ , armISAExt :: [ArmISAExt]
+ , armABI :: ArmABI
+ }
deriving (Read, Show, Eq)
@@ -61,7 +64,7 @@ data OS
| OSHaiku
deriving (Read, Show, Eq)
--- | ARM Instruction Set Architecture and Extensions
+-- | ARM Instruction Set Architecture, Extensions and ABI
--
data ArmISA
= ARMv5
@@ -77,6 +80,11 @@ data ArmISAExt
| IWMMX2
deriving (Read, Show, Eq)
+data ArmABI
+ = SOFT
+ | SOFTFP
+ | HARD
+ deriving (Read, Show, Eq)
target32Bit :: Platform -> Bool
target32Bit p = platformWordSize p == 4