Commit Graph

755 Commits

Author SHA1 Message Date
Ilya Leoshkevich 7de130a5d7 s390x/tcg: Fix BRASL and BRCL with large negative offsets
This is a backport of the following upstream commits:
- commit fc3dd86a290a ("s390x/tcg: Fix BRASL with a large negative offset")
- commit 16ed5f14215b ("s390x/tcg: Fix BRCL with a large negative offset")

Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
2022-03-17 14:23:57 +01:00
lazymio 09b15e9071
Fix exits wrongly cleared in nested uc_emu_start 2022-03-06 23:40:34 +01:00
lazymio 12fa73f2b6
Generate check_exit_request for the first tb
Consider this case:

   t:inc ecx,
     inc edx,
     jmp t

It would generate exactly one block and TB chain will generate an inline
jump. If we don't check exit at the entry of the block, we will never be
terminated.

This test case is recorded in the commit message since it's a bit
painful to write multithread related code that builds on all platforms.
2022-03-05 22:42:41 +01:00
lazymio b7bc13650c
Sync PC after we exit
We should sync PC if there is no UC_HOOK_CODE hook
2022-03-05 22:42:41 +01:00
lazymio 9f62c71094
Sync PC for SYS instruction hook 2022-02-27 15:30:27 +01:00
lazymio e5207a1363
Implement UC_HOOK_INSN for aarch64 MRS/MSR/SYS/SYSL 2022-02-27 15:28:31 +01:00
lazymio 8e2f70a35b
Merge pull request #1559 from yrashk/aarch64-use-map-jit
Problem: Could not allocate dynamic translator buffer
2022-02-25 22:46:19 +01:00
lazymio d946114dfe
Set EFLAGS correctly on startup 2022-02-25 22:44:42 +01:00
lazymio 84e796494f
Format code 2022-02-25 22:24:25 +01:00
lazymio caf2fe1ddb
Clear state when exiting from uc_emu_start
This may cause unexpected result when we are in a nested uc_emu_start
2022-02-25 22:23:44 +01:00
lazymio ad4b56ad54
Remove armeb and aarcheb in configure 2022-02-22 15:28:16 +01:00
Yurii Rashkovskii f652340bec Problem: Could not allocate dynamic translator buffer
`Could not allocate dynamic translator buffer` error while
trying to perform any memory-related operation.

This happens on aarch64 (MacBook Pro M1)

Solution: ensure aarch64 architecture is properly checked against

Fixes #1556
2022-02-20 07:46:30 -08:00
Bet4 d96083d4d1 Fix pc after ppc sc inst 2022-02-20 20:42:46 +08:00
lazymio 8d9ca1ce84
Format 2022-02-17 10:37:34 +01:00
lazymio 27ef63cc8d
Add UC_PPC_REG_CR 2022-02-15 22:07:53 +01:00
lazymio 73e4a90d3a
Manually revert 63a445cbba 2022-02-13 10:13:01 +01:00
lazymio 4266196b2d
Fix the divergence with master. 2022-02-13 10:08:58 +01:00
lazymio e382ca102a
Fix the regression bug 2022-02-13 09:52:00 +01:00
lazymio 05b9a021dc
Merge pull request #1453 from scribam/reg-read-write-fpscr
unicorn_arm: add reg_read/write operations for FPSCR and FPSID
2022-02-13 09:02:32 +01:00
lazymio 52e0963cc7
Backward compatibility to enable full 64bits address space 2022-02-12 22:54:21 +01:00
lazymio 81eb7da837
Backward compatibility for c13_c0_3 2022-02-12 22:31:10 +01:00
lazymio 3c4477d622
Fix another undefined shift found by sanitizer 2022-02-12 19:57:19 +01:00
lazymio 93c602ead1
FIx anohter undefined shift 2022-02-12 19:47:51 +01:00
lazymio e38b1c8af3
Fix the undefined shift 2022-02-12 19:37:32 +01:00
lazymio e548cd9eb1
Fix the undefined shift 2022-02-12 18:22:56 +01:00
lazymio d0de673208
Fix the undefined lshift negative numbers 2022-02-12 17:47:57 +01:00
lazymio 9ff335efdc
Fix memory leak of the empty_view 2022-02-12 15:47:25 +01:00
lazymio c2bb5c8838
Fix ns and s in cp reg encoding 2022-02-12 14:29:42 +01:00
lazymio 58fc952230
Remove armeb-softmmu and aarch64eb-softmmu 2022-02-12 14:15:54 +01:00
lazymio f511d4a807
Also return error for context read/write 2022-02-11 22:19:03 +01:00
lazymio 3e6665db00
Implement coprocessor register read/write for arm64 2022-02-11 22:13:01 +01:00
lazymio 8bc1489210
Implement coprocessor register read/write for arm 2022-02-11 21:45:37 +01:00
Nguyen Anh Quynh 141a558dd8 fix conflicts 2022-01-28 10:30:51 +08:00
Ilya Leoshkevich ad984b9366 s390x TCG shift instruction fixes
Cherry-pick the following upstream commits:

521130f267 target/s390x: Fix SLDA sign bit index
57556b28af target/s390x: Fix SRDA CC calculation
df103c09bc target/s390x: Fix cc_calc_sla_64() missing overflows
6da170beda target/s390x: Fix shifting 32-bit values for more than 31 bits
2022-01-27 13:15:54 +01:00
lazymio 5f89981a3c
Free info->name on demand 2022-01-20 21:34:21 +01:00
lazymio 55b4865945
Fix memory leak of custom helpers 2022-01-20 19:50:57 +01:00
mio 7095605607
Merge branch 'dev' into systemz 2022-01-18 21:10:55 +01:00
mio 218bddc0e0
Only use MAP_JIT on Apple Silicon
MAP_JIT causes performance regression for fork()

See https://github.com/desktop/desktop/issues/12978
2022-01-18 21:01:49 +01:00
mio 28e791a37f
Add debug tracing feature
It's disabled by default, use -DUNICORN_TRACER=on to enable it
2022-01-18 19:35:43 +01:00
lazymio ea9c7425b0
Fix the wrong PC when arm translation fectches unmapped memory
This behavior keeps the same with Unicorn1, though, different from arm doc
2022-01-16 16:42:38 +01:00
lazymio a5ceca6d51
Remove the static variable in flatviews_init
Or we may get an invalid old (and free-ed) uc instance reference
2022-01-15 22:11:14 +01:00
lazymio 459a595a98
Merge branch 'dev' into s390x
Mostly for bindings update.
2022-01-15 20:56:39 +01:00
lazymio 6ed2214399
Rebuilt hflags when swithing modes
Or we may get the wrong mode during translation
2022-01-14 19:37:48 +01:00
lazymio 33afdcf872
Save CC at the end of emulation 2022-01-10 21:48:03 +01:00
lazymio 9ac796531a
Don't cache S390SkeyState and S390SkeysClass 2022-01-10 19:18:52 +01:00
lazymio 980eae7f44
Sync PC at the end of emulation 2022-01-10 15:45:56 +01:00
lazymio 441afe17e6
Add psw.mask register 2022-01-10 15:34:04 +01:00
lazymio 71f044ca50
Merge branch 'dev' into s390x 2022-01-10 15:17:42 +01:00
lazymio 36afa1022c
More PPC registers
Add FPR0-31, CR0-7, LR, CTR, MSR, XER, FPSCR for PPC

Add a test for ppc32 float point
2022-01-10 15:16:10 +01:00
lazymio be7fbf1306
Handle CPU fault when invalidating TB cache 2022-01-08 22:10:17 +01:00
lazymio 8ad9f8ecb1
This reverts Hack 05ba21160619724033ec83469bbb66bda9e3f5fb and applies the correct fix
And enable experimental v8 support for arm max cpu
2022-01-05 21:58:40 +01:00
lazymio c3a49766d8
Fix #1522 2022-01-05 20:02:41 +01:00
lazymio 7a886f59df
Fix #1525 2022-01-05 19:38:22 +01:00
lazymio 6fabf30537
Fix a invalid memory access
Note: This probably addresses the ramdom failed CI on mingw64
2022-01-05 19:12:36 +01:00
lazymio d854e22301
Add x87 FPU registers #1524 2022-01-04 21:12:12 +01:00
lazymio 47097b55b7
Fix #1520 2022-01-04 21:01:20 +01:00
scribam 039cd50187 unicorn_arm: add reg_read/write operations for FPSCR and FPSID 2022-01-04 11:36:06 +01:00
Nguyen Anh Quynh e55b76f057 s390x: cleanup & re-enable some skey code 2021-12-31 10:05:05 +08:00
Nguyen Anh Quynh 1a0f0d0768 s390x: remove some unused fields in S390CPU 2021-12-31 09:48:16 +08:00
lazymio a06563ecdd
Fix memory leak 2021-12-31 00:24:18 +01:00
lazymio 3b667338cf
Fix s390x warnings 2021-12-31 00:10:50 +01:00
Nguyen Anh Quynh fa3fb82c9c s390x: fix warning on commented code 2021-12-30 17:17:49 +08:00
mio 085ee07c73
No more hard-coded cpu models 2021-12-30 01:05:10 +01:00
mio fdbd743c21
Remove hard-coded cpu model 2021-12-30 00:54:55 +01:00
mio a72cbda6de
Initialize empty structs explictly to build on MSVC 2021-12-30 00:51:07 +01:00
mio 03f9dd8b61
Expand case ranges to build on MSVC 2021-12-30 00:42:13 +01:00
mio dc402d78ec
Ignore QEMU_BUILD_BUG_MSG on MSVC 2021-12-30 00:28:24 +01:00
mio ab4ef2e1de
Fix MSVC build and remove warning about unused functions 2021-12-30 00:26:25 +01:00
mio 298795a9f8
Fix build on MSVC 2021-12-29 23:18:49 +01:00
mio 034a1aa5f2
Make s390x stopping mechanism work 2021-12-27 23:48:20 +01:00
mio a38151bf77
Make s390x skey work 2021-12-27 23:19:17 +01:00
mio e977f81813
Make s390x build 2021-12-26 23:09:25 +01:00
mio faa689c0f0
Merge systemz to the latest uc2 codebase 2021-12-26 22:58:32 +01:00
lazymio cddc9cf2ed
Fix arm post init 2021-12-25 00:16:51 +01:00
lazymio 4f73d75ea8
Fix #1500 2021-12-23 21:46:27 +01:00
lazymio ef6f8a2427
Fix x86 CPUID 2021-12-22 23:39:41 +01:00
lazymio 7bb756249a
Better design of cpuid instruction hook 2021-12-22 20:36:56 +01:00
Dimitris Glynos 63a445cbba
fxsave / fxsave64 should store the floating point instruction pointer (fpip) (#1467)
* fxsave / fxsave64 should store the floating point instruction pointer (fpip)
- fxsave / fxsave64 happen to be used as GetPC code in exploits

* unit tests for the storage of FPIP in fxsave (x86) and fxsave64 (x64)
2021-12-13 08:40:32 +08:00
Nguyen Anh Quynh 09b0c66f11 move all static vars in translate.c to tcg.h 2021-12-07 04:53:32 +08:00
Fedor Nis'kov 4059906e78 Bug fix for LUI instruction (MIPS) 2021-12-06 19:15:00 +03:00
Nguyen Anh Quynh b042a6a01d add missing files 2021-12-06 04:28:13 +08:00
Nguyen Anh Quynh 97b92d8861 initial systemz support 2021-12-06 04:19:37 +08:00
lazymio 8a0ca8715e
Fix SR read/write and a test 2021-12-04 23:22:28 +01:00
Brandon Miller d204dc6374
Added SR to M68K reg_read and reg_write (#1507) 2021-12-02 14:12:49 +08:00
lazymio 221cde18df
Write CPSR as it is initiated from instructions to allow regs switch 2021-11-24 17:10:51 +01:00
lazymio 78e0ddbc4d
Fix mmio unmap 2021-11-24 00:18:19 +01:00
lazymio c733bbada3
Fix wrong offset used in split_region 2021-11-23 23:22:53 +01:00
lazymio c1c5f72918
Fix the sizemask for inline hooking 2021-11-23 21:18:21 +01:00
lazymio 7a1de17f37
Fix UC_HOOK_EDGE_GENERATED to work with indirect jump
For an indirect jump (lookup_tb_ptr), last_tb would be NULL
2021-11-23 00:25:55 +01:00
lazymio 083ccf160b
Use fprintf 2021-11-22 21:22:21 +01:00
lazymio 87a391d549
Inline uc_tracecode when there is only exactly one hook 2021-11-21 16:44:39 +01:00
lazymio c1106b811b
Fix a memory leak in mmio 2021-11-16 22:44:03 +01:00
lazymio fc467edbc6
Fix 32bit target getting wrong offset for mmio 2021-11-16 22:40:57 +01:00
lazymio 247ffbe0e8
Support nested uc_emu_start calls 2021-11-16 21:07:03 +01:00
lazymio 43c643d4af
Fix #1488 2021-11-16 09:41:21 +01:00
lazymio 7e244f87b4
Fix UC_HOOK_EDGE_GENERATED implementation 2021-11-11 22:15:15 +01:00
lazymio 23ef5da491
Merge pull request #1481 from bet4it/cp15
Restore cp15 registers
2021-11-09 16:50:31 +01:00
Bet4 acaed986b5 Restore cp15 registers 2021-11-09 13:13:08 +08:00
lazymio 640251e1aa
Leave out size parameter in callback 2021-11-09 00:21:34 +01:00
lazymio 2f61592ff9
Fix uc_mem_protect 2021-11-07 20:37:58 +01:00