aboutsummaryrefslogtreecommitdiffstats
path: root/driver
diff options
context:
space:
mode:
authorXavier Leroy <xavierleroy@users.noreply.github.com>2016-08-24 11:24:59 +0200
committerGitHub <noreply@github.com>2016-08-24 11:24:59 +0200
commit0a7288fb65ebaed329e06c1fd14aef83e8defcda (patch)
treec2c7ac666c62be0f97a20c74286e0457890ddd8d /driver
parent954b01e1ac6189f4a8b5ad1b6accf6eb01261d1f (diff)
parente0f0f573a4a8fc1f564a31388afa9c23e48bb016 (diff)
downloadcompcert-0a7288fb65ebaed329e06c1fd14aef83e8defcda.tar.gz
compcert-0a7288fb65ebaed329e06c1fd14aef83e8defcda.zip
Merge pull request #118 from AbsInt/armeb
Support for ARM Big Endian
Diffstat (limited to 'driver')
-rw-r--r--driver/Configuration.ml5
-rw-r--r--driver/Configuration.mli3
-rw-r--r--driver/Driver.ml4
3 files changed, 11 insertions, 1 deletions
diff --git a/driver/Configuration.ml b/driver/Configuration.ml
index 0a2b3eec..87e29e0f 100644
--- a/driver/Configuration.ml
+++ b/driver/Configuration.ml
@@ -121,6 +121,11 @@ let arch =
| v -> bad_config "arch" [v]
let model = get_config_string "model"
let abi = get_config_string "abi"
+let is_big_endian =
+ match get_config_string "endianness" with
+ | "big" -> true
+ | "little" -> false
+ | v -> bad_config "endianness" [v]
let system = get_config_string "system"
let has_runtime_lib =
match get_config_string "has_runtime_lib" with
diff --git a/driver/Configuration.mli b/driver/Configuration.mli
index 7087c3c2..197e8ad2 100644
--- a/driver/Configuration.mli
+++ b/driver/Configuration.mli
@@ -19,6 +19,9 @@ val model: string
val abi: string
(** ABI to use *)
+val is_big_endian: bool
+ (** Endianness to use *)
+
val system: string
(** Flavor of operating system that runs CompCert *)
diff --git a/driver/Driver.ml b/driver/Driver.ml
index eccd233c..0bfc7167 100644
--- a/driver/Driver.ml
+++ b/driver/Driver.ml
@@ -525,7 +525,9 @@ let _ =
| "powerpc" -> if Configuration.system = "linux"
then Machine.ppc_32_bigendian
else Machine.ppc_32_diab_bigendian
- | "arm" -> Machine.arm_littleendian
+ | "arm" -> if Configuration.is_big_endian
+ then Machine.arm_bigendian
+ else Machine.arm_littleendian
| "ia32" -> if Configuration.abi = "macosx"
then Machine.x86_32_macosx
else Machine.x86_32