Commit c357556
committed
Add RISC-V 64-bit JIT backend, tests, and CI integration
Implement jit_riscv64.erl backend with full JIT compilation support:
- RV64IMAC calling convention (a0=context, s1-s11 callee-saved)
- All required backend exports (new, stream, call_primitive,
move_to_native_register, jump_to_label, cond_jump_to_label, etc.)
- Register value caching to avoid redundant loads
- Branch patching with compressed instruction support
- DWARF debug info integration (jit_dwarf.erl machine type,
jit_dwarf.hrl register constant)
C-side integration:
- Architecture detection in jit.h (__riscv with __riscv_xlen == 64)
- Struct offset static assertions in jit.c
- Atom registration for riscv64 in nifs.c and defaultatoms.def
- CMake JIT_TARGET_ARCH=riscv64 support
CI pipeline:
- Cross-compiled plain, JIT, and JIT+DWARF builds
- Uses crossbuild-essential-riscv64 with QEMU user emulation
Test infrastructure:
- jit_riscv64_tests.erl for backend operation tests
- jit_tests_common.erl binutils support for riscv64-linux-gnu
- Registration in tests.erl and CMakeLists.txt1 parent 16204bf commit c357556
File tree
16 files changed
+3951
-15
lines changed- .github/workflows
- libs/jit
- include
- src
- src/libAtomVM
- tests/libs/jit
16 files changed
+3951
-15
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
411 | 411 | | |
412 | 412 | | |
413 | 413 | | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
| 431 | + | |
| 432 | + | |
| 433 | + | |
| 434 | + | |
| 435 | + | |
| 436 | + | |
| 437 | + | |
| 438 | + | |
| 439 | + | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
414 | 455 | | |
415 | 456 | | |
416 | 457 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| 64 | + | |
| 65 | + | |
64 | 66 | | |
65 | 67 | | |
66 | 68 | | |
67 | 69 | | |
68 | 70 | | |
69 | | - | |
| 71 | + | |
70 | 72 | | |
71 | 73 | | |
72 | 74 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
28 | 28 | | |
29 | 29 | | |
30 | 30 | | |
| 31 | + | |
31 | 32 | | |
32 | 33 | | |
33 | 34 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
| 39 | + | |
| 40 | + | |
39 | 41 | | |
40 | 42 | | |
41 | 43 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
343 | 343 | | |
344 | 344 | | |
345 | 345 | | |
346 | | - | |
| 346 | + | |
| 347 | + | |
347 | 348 | | |
348 | 349 | | |
349 | 350 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
105 | 105 | | |
106 | 106 | | |
107 | 107 | | |
| 108 | + | |
108 | 109 | | |
109 | 110 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| 122 | + | |
122 | 123 | | |
123 | 124 | | |
124 | 125 | | |
| |||
0 commit comments