diff options
author | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-02-01 21:28:00 +0100 |
---|---|---|
committer | David Monniaux <david.monniaux@univ-grenoble-alpes.fr> | 2019-02-01 21:28:00 +0100 |
commit | 1dffd83e6b621c6ad8d820431339c5dd58e651d1 (patch) | |
tree | f6556fabc96e1a362c6bfa26836cac22065713bc /mppa_k1c/TargetPrinter.ml | |
parent | 931df6260ade89d034ff2d29347ee8f441fe4711 (diff) | |
download | compcert-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.ml | 7 |
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 *) |