Selaa lähdekoodia

* properly write RV32E/RV64E architecture tags

florian 6 kuukautta sitten
vanhempi
commit
e17c575123
2 muutettua tiedostoa jossa 9 lisäystä ja 2 poistoa
  1. 8 2
      compiler/riscv/nrvutil.pas
  2. 1 0
      compiler/riscv64/cpuinfo.pas

+ 8 - 2
compiler/riscv/nrvutil.pas

@@ -65,9 +65,15 @@ implementation
           current_asmdata.asmlists[al_start].Concat(tai_attribute.create(ait_attribute,tag_stack_align,target_info.stackalign));
           current_asmdata.asmlists[al_start].Concat(tai_attribute.create(ait_attribute,tag_unaligned_access,0));
 {$if defined(RISCV32)}
-          attr_arch:='rv32i2p1';
+          if CPURV_HAS_16REGISTERS in cpu_capabilities[current_settings.cputype] then
+            attr_arch:='rv32e2p0'
+          else
+            attr_arch:='rv32i2p1';
 {$elseif defined(RISCV64)}
-          attr_arch:='rv64i2p1';
+          if CPURV_HAS_16REGISTERS in cpu_capabilities[current_settings.cputype] then
+            attr_arch:='rv64e2p0'
+          else
+            attr_arch:='rv64i2p1';
 {$elseif defined(RISCV128)}
           attr_arch:='rv128i2p1';
 {$endif defined(RISCV32)}

+ 1 - 0
compiler/riscv64/cpuinfo.pas

@@ -127,6 +127,7 @@ Const
       (CPURV_HAS_MUL,
        CPURV_HAS_ATOMIC,
        CPURV_HAS_COMPACT,
+       CPURV_HAS_16REGISTERS,
        CPURV_HAS_ZBA,
        CPURV_HAS_ZBB,
        CPURV_HAS_ZBC,