Commit Graph

95 Commits

Author SHA1 Message Date
florian
b2f5f6ac7d + RiscV32: use sext.b if available 2025-02-24 23:05:49 +01:00
florian
da6c0e919b + RiscV: rv32gcb 2025-02-22 21:57:52 +01:00
florian
95c2a5a2d7 + RiscV: support ZMMUL extension 2025-01-26 14:43:57 +01:00
florian
cfc5f17b0d + CPURV_HAS_ZICOND 2025-01-20 22:52:23 +01:00
florian
971d97c179 + RiscV: make use of the fmv.w.x/fmv.d.x instruction to load 0.0 2025-01-11 21:03:54 +01:00
Pierre Muller
a9ab15c60d Fix compilation of riscv32 compiler 2025-01-10 12:10:02 +00:00
florian
c3110dfaa9 + RiscV: make use of the fneg.* instruction 2025-01-09 22:25:26 +01:00
florian
b7608b045b * RiscV: push_addr_param unified 2024-12-26 16:49:43 +01:00
florian
9ba3b12eaa * RiscV: unify push_addr_param 2024-12-25 23:33:11 +01:00
florian
b4a83e29a4 * fixes RiscV32 building 2024-12-25 22:48:40 +01:00
florian
57da25581e + write .option pic directive if needed 2024-12-25 18:35:46 +01:00
florian
8d0bdf2f16 + RiscV: vector registers 2024-12-25 10:34:46 +01:00
florian
49aa141703 * major parts of the RiscV paramgr unified, improves code generation and less failures in RiscV32 regression tests 2024-12-22 22:37:16 +01:00
florian
4bc9f64b70 * continued unification of RiscV paramgr 2024-12-19 22:55:36 +01:00
florian
d33e7920a2 * more RiscV paramgr unification 2024-12-16 22:50:46 +01:00
florian
98b1aee2a5 * more RiscV paramgr unification 2024-12-15 23:01:55 +01:00
florian
f32eaa1564 * skeleton to unify the RiscV paramgr
* first routines unified
2024-12-15 15:29:05 +01:00
florian
0b49fba637 + more RiscV extensions
* make use of F and D extension flags
2024-11-17 15:05:35 +01:00
florian
159d97e864 * Risc-V: make use of sext.h instruction if available 2024-08-15 21:53:04 +02:00
florian
a53eb8b230 + Risc-V: make use of zext.h if available 2024-08-14 22:37:26 +02:00
florian
0366df9fbd + Zb* cpu capabilities 2024-08-11 22:47:29 +02:00
florian
d4816d12f7 * Risc-V 32 has also a GC variant 2024-08-08 22:58:47 +02:00
florian
3e6cd16bb5 + Risc-V 32: tcpuparamanager.get_saved_registers_int 2024-08-05 22:37:18 +02:00
florian
4afb07cc5e + Risc-V 32: tcpuparamanager.get_saved_registers_fpu 2024-08-04 23:03:44 +02:00
florian
6d157b5bf0 + Risc-V 32: optimize QWord(1) shl ... 2024-07-28 21:17:25 +02:00
florian
d270c2ccdd * better zero extension for Risc-V32 2024-07-28 16:42:32 +02:00
florian
1737035501 + riscv32: trv32shlshrnode.second_64bit 2024-07-27 19:48:16 +02:00
Michael Ring
14b3c11c0d Initial support for esp32-c6-s2-s3. Support for idf versions 5.0.6 and 5.2.1 2024-07-18 20:16:04 +00:00
florian
39f7172ee8 * do no generated debug comment in assembler output of RiscV if not requested 2024-05-25 20:16:42 +02:00
florian
0a88683310 + do do_consttovar on RiscV 2024-05-25 20:09:02 +02:00
florian
fbf20eee31 + check for tf_init_final_units_by_calls in trv32nodeutils.insert_init_final_table 2024-05-25 19:28:50 +02:00
ccrause
c86e7b43b4 Add insert_init_final_table method 2024-05-25 17:26:15 +00:00
florian
f49da05633 * unified g_concatcopy_move 2024-05-15 22:52:24 +02:00
Pierre Muller
acf5675a90 Change AVOID_OVERFLOW to avoid warning about inequality being always true 2023-10-26 07:47:10 +00:00
Pierre Muller
b521ac967f Fix possible overflow in riscv32 compiler 2023-10-26 01:02:20 +00:00
florian
dd586da709 * formatting 2023-08-26 22:14:36 +02:00
Interferon
c482bafdaf There is code in the register allocator to restrict register allocation to the
first 16 registers in RISC-V RVE and RVEC modes.  However, there was still
code in tcpuparamanager.create_paraloc_info_intern that allowed the allocation
of up to register X17 in RVE and RVEC modes.  Modified this function to
take the processor mode into account and restrict it to X0..X15 in RVE and RVEC modes.

Also put conditional code in setjump.inc assembler code to only set the first
16 registers in RVE and RVEC modes.

The entire embedded-riscv32 RTL can now compile successfuly in RVEC mode.
2023-08-26 22:12:00 +02:00
Interferon
8382c6f586 Added generic WCH32Vx RISC-V processor types using memory size suffixes
Modified low-level startup code for RISCV32 embedded microcontrollers to
allow user code override of reset handlers for non-power-up reset events
as well as enabling user code override handlers for all 255 possible
interrupt vectors.
Separated out the low-level startup memory init into a callable procedure
to allow users that have caught reset events to init memory again if needed.

Signed-off-by: Interferon <brspm2@pinnaclesimulation.com>
2023-08-26 22:12:00 +02:00
florian
63199a0966 * memory sizes updated 2023-02-12 20:55:38 +01:00
florian
e9ec4a8bb3 * more riscv32-freertos-esp32c3 stuff added 2023-01-29 19:30:11 +01:00
florian
bedd4edc72 + first work for esp32-c3 support 2023-01-28 21:28:19 +01:00
Jeppe
c83e6c34a9 riscv32: Fix 64bit comparisons
- Code taken from MIPS backend
- Removed some unused code generated for RV32 64bit integer ops
2022-10-16 17:37:53 +02:00
florian
e2a26ecece * fixes tcg64frv.a_op64_const_reg_reg based on the analysis of Bart B, resolves #39953 2022-10-13 23:16:19 +02:00
florian
19ad26afd8 * Riscv32 and Riscv64 on linux: enable safecall support 2022-07-22 22:56:21 +02:00
florian
a16f35dcb1 + support RV32E Extension 2022-07-17 22:14:13 +02:00
Jeppe
f5cf8956c5 riscv: Merge stack code, fix interrupted code
- Stack pointer is kept below register save area. This ensures that
registers are not overwritten by interrupt handlers.
- RV32 and 64 code is merged to base class.
2022-07-02 15:07:42 +02:00
Jeppe
37b5147b19 riscv32: Fix potential FP proc_exit bug 2022-07-02 15:07:42 +02:00
florian
def37052f1 + RiscV32: patch by kupferstecher: compiler support of CH32V30*, part of #39777 2022-06-12 23:01:39 +02:00
florian
ae457a18ad * unified Risc-V 32 and 64 register data file 2022-05-30 21:10:34 +02:00
florian
6a00f9f403 * unified Risc-V 32 and 64 cpubase.pas 2022-05-28 21:15:53 +02:00