We only support Sparc V9 and better as V8 lacks an atomic CAS instruction
which we need for SMP. This means that we have to pass -mcpu=v9 to GCC when
compiling and assembling. Hardcoding the flag is hackish but seems to be
our best bet at the moment. It can still be overridden by the user as GCC
picks the best -mcpu flag regardless of the ordering.
++ map SysTools.Option (
md_c_flags
++ pic_c_flags
++ map SysTools.Option (
md_c_flags
++ pic_c_flags
+#ifdef sparc_TARGET_ARCH
+ -- We only support SparcV9 and better because V8 lacks an atomic CAS
+ -- instruction. Note that the user can still override this
+ -- (e.g., -mcpu=ultrasparc) as GCC picks the "best" -mcpu flag
+ -- regardless of the ordering.
+ --
+ -- This is a temporary hack.
+ ++ ["-mcpu=v9"]
+#endif
++ (if hcc && mangle
then md_regd_c_flags
else [])
++ (if hcc && mangle
then md_regd_c_flags
else [])
SysTools.runAs dflags
(map SysTools.Option as_opts
++ [ SysTools.Option ("-I" ++ p) | p <- cmdline_include_paths ]
SysTools.runAs dflags
(map SysTools.Option as_opts
++ [ SysTools.Option ("-I" ++ p) | p <- cmdline_include_paths ]
+#ifdef sparc_TARGET_ARCH
+ -- We only support SparcV9 and better because V8 lacks an atomic CAS
+ -- instruction so we have to make sure that the assembler accepts the
+ -- instruction set. Note that the user can still override this
+ -- (e.g., -mcpu=ultrasparc). GCC picks the "best" -mcpu flag
+ -- regardless of the ordering.
+ --
+ -- This is a temporary hack.
+ ++ [ SysTools.Option "-mcpu=v9" ]
+#endif
++ [ SysTools.Option "-c"
, SysTools.FileOption "" input_fn
, SysTools.Option "-o"
++ [ SysTools.Option "-c"
, SysTools.FileOption "" input_fn
, SysTools.Option "-o"