Commit Graph

136 Commits

Author SHA1 Message Date
Denis Drakhnia bd5206f3dd e2k: add gen_staaq 2024-04-25 20:09:00 +03:00
Denis Drakhnia 446abed271 e2k: add helper getf{s,d}_v5 2024-04-25 20:09:00 +03:00
Denis Drakhnia 5e41d8106d e2k: remove aau state from global mem 2024-04-25 20:09:00 +03:00
Denis Drakhnia df03a68a6d e2k: use separate array for global regs 2024-04-25 20:09:00 +03:00
Denis Drakhnia 297d302688 e2k: optimize helper probe_{read,write}_access for user targets 2024-04-25 20:09:00 +03:00
Denis Drakhnia f1714370c4 e2k: allow getpl write to ctpr 2024-04-25 20:09:00 +03:00
Denis Drakhnia 83b4e4af52 e2k: poison store 2024-04-25 20:09:00 +03:00
Denis Drakhnia 8f19d2e3fa e2k: movep tags 2024-04-25 20:09:00 +03:00
Denis Drakhnia 6e72472145 e2k: poison result 2024-04-25 20:09:00 +03:00
Denis Drakhnia 9d869d8b4e e2k: refactor gen_advance_loop_counters 2024-04-25 20:08:59 +03:00
Denis Drakhnia 7458cfadc2 e2k: gettagd write 32-bit result 2024-04-25 20:08:59 +03:00
Denis Drakhnia bec013fab1 e2k: check mrgc tag 2024-04-25 20:08:59 +03:00
Denis Drakhnia ca5b13ca4e e2k: check tag for ct qual 2024-04-25 20:08:59 +03:00
Denis Drakhnia 9044a3bb28 e2k: check predicate registers tags 2024-04-25 20:08:59 +03:00
Denis Drakhnia b7aa8589e9 e2k: track writes to ctprs in disas context 2024-04-25 20:08:59 +03:00
Denis Drakhnia 624fe3175c e2k: gen exception if call wbs is greater than wsz 2024-04-25 20:08:59 +03:00
Denis Drakhnia 0db57d1579 e2k: add gen_rrs 2024-04-25 20:08:59 +03:00
Denis Drakhnia 5afa8efc6e e2k: cpu always spill/fill 32 bytes for every 2 regs 2024-04-25 20:08:59 +03:00
Denis Drakhnia e381e6d3f5 e2k: remove delayed tag check 2024-04-25 20:08:59 +03:00
Denis Drakhnia b3baf0539d e2k: refactor gen stubs 2024-04-25 20:08:59 +03:00
Denis Drakhnia 8a6ee164b5 e2k: remove unused gen_result_init 2024-04-25 20:08:59 +03:00
Denis Drakhnia 6dcaff62e5 e2k: move complex getf{s,d} to helper and optimize for literal 2024-04-25 20:08:59 +03:00
Denis Drakhnia 36ef654ea1 e2k: optimize sxt for imm5 in src1 2024-04-25 20:08:59 +03:00
Denis Drakhnia 1a5aeee39a e2k: refactor preg read/write 2024-04-25 20:08:59 +03:00
Denis Drakhnia d4961a8a3e e2k: refactor GPR reads and writes 2024-04-25 20:08:59 +03:00
Denis Drakhnia 55278b45c5 e2k: use Int128 for X/QP ops 2024-04-25 20:08:59 +03:00
Denis Drakhnia b78874bdb0 e2k: refactor alop src generation 2024-04-25 20:08:59 +03:00
Denis Drakhnia d23cf508ba e2k: gen return only for ctpr3 2024-04-25 20:08:59 +03:00
Denis Drakhnia 335042809b e2k: illop if pc is not aligned by 8 bytes 2024-04-25 20:08:59 +03:00
Denis Drakhnia a84db39085 e2k: v9.0.0 fixes 2024-04-25 20:07:04 +03:00
Denis Drakhnia 0cd2e9c69b e2k: do not dissabmle fake kernel code
Signed-off-by: Denis Drakhnia <numas13@gmail.com>
2022-09-07 21:34:01 +03:00
Denis Drakhnia fb9330bd0e e2k: Add cctop* insns.
Signed-off-by: Denis Drakhnia <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia bcc04e0c5b e2k: Increase the number of NR to 224.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia 0a0655109a e2k: Gen illopc for mirrored ld+st.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia 48290cb80c e2k: Update get/set state regs.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia 21ff5cbef9 e2k: Remove syscall helper.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia c8ed74f626 e2k: Add tags and force_save_alc_dst properties.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia d84636d73a e2k: Restore basic tags support.
Disabled at compile time.
2022-06-10 11:48:20 +03:00
Denis Drakhnia 0c634e952b e2k: Do not generate loop_end for stores outside of loops.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia 52e67df3a1 e2k: Reorg usage of registers.
Till then we had separate stage to write results of
an operations to registers. Now operations will write
result immediately to a destination register. Registers
will be saved to a temporary location if following
operations in a bundle must read them.

The change elliminates additional branches for
conditional operations in the write stage and reduces
data movements.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia ba89b350dc e2k: signals: Save and restore more state.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:20 +03:00
Denis Drakhnia c03d91b7c0 e2k: Fix read and write probe access.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia 6cbcdc4d5c e2k: Implement basic v6 support.
Not tested on a real hardware.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia 8f4de9d485 e2k: Implement basic v5 support.
Add gdb xml files for e2k.
Tags are partially disabled for better performance.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia 6fb98e718e e2k: Move TCG translation parts into single file.
The TCG translation was splitted into multiple files and
it was painful because it has a lot of cross references.

Reorg FX helpers.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia b0a1af39c6 e2k: Add a fake atomic execution.
QEMU has cpu_exec_step_atomic function to run
one instruction in an exclusive mode but we need
to execute multiple instructions in that mode.
I don't want to modify the function.

The solution provides a correct execution of
atomic operations like on real CPU but needs
more testing to prove that it works correctly
in all cases.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia 374e658eb1 e2k: Add access_hw_stacks and backtrace syscalls.
Special system calls for managing hardware stacks.
Required for C++ exceptions.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia f49a9d8df0 e2k: Fix incorrect initialization of mlock.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia e440ebc3db e2k: Basic impl of e2k32-linux-user.
Fix target_stat64 field types in 32-bit mode.
Basic impl of getpl.
Basic impl of ldgd{b,h,w,d}.
Basic impl of stgd{b,h,w,d}.
Add e2k exceptions.
Add Dynamic hw stacks expansion.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00
Denis Drakhnia ab620f7a2b e2k: Delete redundant unimplemented messages.
DAM has not been yet implemented. We always generate
a jump to a fixing code. All these messages are redundant.

Signed-off-by: Denis Drakhnya <numas13@gmail.com>
2022-06-10 11:48:19 +03:00