aboutsummaryrefslogtreecommitdiffstats
path: root/mppa_k1c/TargetPrinter.ml
diff options
context:
space:
mode:
authorDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-02-01 21:28:00 +0100
committerDavid Monniaux <david.monniaux@univ-grenoble-alpes.fr>2019-02-01 21:28:00 +0100
commit1dffd83e6b621c6ad8d820431339c5dd58e651d1 (patch)
treef6556fabc96e1a362c6bfa26836cac22065713bc /mppa_k1c/TargetPrinter.ml
parent931df6260ade89d034ff2d29347ee8f441fe4711 (diff)
downloadcompcert-kvx-1dffd83e6b621c6ad8d820431339c5dd58e651d1.tar.gz
compcert-kvx-1dffd83e6b621c6ad8d820431339c5dd58e651d1.zip
Ugly hack to get at the k1c standard library stdin/stdout/stderr
Diffstat (limited to 'mppa_k1c/TargetPrinter.ml')
-rw-r--r--mppa_k1c/TargetPrinter.ml7
1 files changed, 6 insertions, 1 deletions
diff --git a/mppa_k1c/TargetPrinter.ml b/mppa_k1c/TargetPrinter.ml
index 9b5e31a3..93b03907 100644
--- a/mppa_k1c/TargetPrinter.ml
+++ b/mppa_k1c/TargetPrinter.ml
@@ -124,12 +124,17 @@ module Target (*: TARGET*) =
(* Generate code to load the address of id + ofs in register r *)
+(* FIXME DMonniaux ugly ugly hack to get at standard __thread data *)
let loadsymbol oc r id ofs =
if Archi.pic_code () then begin
assert (ofs = Integers.Ptrofs.zero);
fprintf oc " make %a = %s\n" ireg r (extern_atom id)
end else begin
- fprintf oc " make %a = %a\n" ireg r symbol_offset (id, ofs)
+ if (extern_atom id) = "_impure_thread_data" then begin
+ fprintf oc " make %a = @tprel(%a)\n;;\n addd %a = %a, $r13\n" ireg r symbol_offset (id, ofs) ireg r ireg r
+ end else begin
+ fprintf oc " make %a = %a\n" ireg r symbol_offset (id, ofs)
+ end
end
(* Emit .file / .loc debugging directives *)