From 30ebbcd0731f680d1d283afb99318fb9d6e9cead Mon Sep 17 00:00:00 2001 From: Bernhard Schommer Date: Wed, 2 Sep 2015 15:56:42 +0200 Subject: Allow only CT values of 0 and 2 in dcbtls instruction. The dcbtls instruction allows only the values 0 and 2 according to the PPC Isa. --- powerpc/Asmexpand.ml | 2 +- powerpc/TargetPrinter.ml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/powerpc/Asmexpand.ml b/powerpc/Asmexpand.ml index e0357a4a..caf256ef 100644 --- a/powerpc/Asmexpand.ml +++ b/powerpc/Asmexpand.ml @@ -363,7 +363,7 @@ let expand_builtin_prefetch addr rw loc = expand_builtin_cache_common addr emit_prefetch_instr let expand_builtin_dcbtls addr loc = - if not ((loc >= _0) && (loc <= _2)) then + if not ((loc == _0) || (loc = _2)) then raise (Error "the second argument of __builtin_dcbtls must be a constant between 0 and 2"); let emit_inst addr = emit (Pdcbtls (loc,addr)) in expand_builtin_cache_common addr emit_inst diff --git a/powerpc/TargetPrinter.ml b/powerpc/TargetPrinter.ml index b5fa50dc..764ad8a3 100644 --- a/powerpc/TargetPrinter.ml +++ b/powerpc/TargetPrinter.ml @@ -463,11 +463,11 @@ module Target (System : SYSTEM):TARGET = | Pdcbi (r1,r2) -> fprintf oc " dcbi %a, %a\n" ireg r1 ireg r2 | Pdcbt (c,r1) -> - fprintf oc " dcbt %s, %a, %a\n" (Z.to_string c) ireg GPR0 ireg r1 + fprintf oc " dcbt %ld, %a, %a\n" (camlint_of_coqint c) ireg GPR0 ireg r1 | Pdcbtst (c,r1) -> - fprintf oc " dcbtst %s, %a, %a\n" (Z.to_string c) ireg GPR0 ireg r1 + fprintf oc " dcbtst %ld, %a, %a\n" (camlint_of_coqint c) ireg GPR0 ireg r1 | Pdcbtls (c,r1) -> - fprintf oc " dcbtls %s, %a, %a\n" (Z.to_string c) ireg GPR0 ireg r1 + fprintf oc " dcbtls %ld, %a, %a\n" (camlint_of_coqint c) ireg GPR0 ireg r1 | Pdivw(r1, r2, r3) -> fprintf oc " divw %a, %a, %a\n" ireg r1 ireg r2 ireg r3 | Pdivwu(r1, r2, r3) -> -- cgit