Commit Graph

204 Commits

Author SHA1 Message Date
Anton Lydike
d0c5abe845 added a whole lot of debugging info for privileged emulation 2021-09-30 20:58:44 +02:00
Anton Lydike
3d4d36bfe4 moved dependency on pyelftools into scoped function where it's used to reduce the number of dependencies required overall 2021-09-03 15:01:55 +02:00
Anton Lydike
0c96a87dcb added RV32A extension, only missing LR.W and SC.W 2021-09-03 14:59:34 +02:00
Anton Lydike
3033eb9985 tranlsation from absolute addressed to symbol-relative names for debugging 2021-08-30 20:10:22 +02:00
Anton Lydike
ca71e196c2 added verbose flag and improved verbose output 2021-08-30 19:40:13 +02:00
Anton Lydike
f2d07f90b5 priv: added __main__ script to module which correctly configures the cpu depending on --kernel or --image options 2021-08-30 15:40:13 +02:00
Anton Lydike
0651eabe18 fixed how ecalls are represented and handled 2021-08-30 15:09:31 +02:00
Anton Lydike
684c858300 added support for IO modules 2021-08-26 10:48:26 +02:00
Anton Lydike
df9e610d14 forgot to commit image loader code 2021-08-26 10:47:47 +02:00
Anton Lydike
1f03449694 added memory image support to priv emulator 2021-08-26 10:46:06 +02:00
Anton Lydike
4c352d8567 [MMU] caching last used code section 2021-06-08 16:34:45 +02:00
Anton Lydike
e8685af328 [PrivMMU] cleaned up file formatting 2021-06-08 16:34:19 +02:00
Anton Lydike
3d07c97a52 [PrivCPU] improved step function performance by checking time every tenth cycle 2021-06-08 16:33:48 +02:00
Anton Lydike
60a2a8d546 [CSR] adding cache to mstatus register 2021-06-08 16:32:39 +02:00
Anton Lydike
6b4f38d030 [ElfLoader] added cache for already decoded instructions 2021-06-08 15:07:51 +02:00
Anton Lydike
05c17bc029 [PrivCPU] fixed debugger skipping over ebreak instructions 2021-06-08 14:44:13 +02:00
Anton Lydike
baa1f24eb7 [CpuTraps] fixed formatting for mcause registers 2021-06-08 14:42:44 +02:00
Anton Lydike
777717ed2e [PrivRV32I] fixed csrrw instruction to correctly switch register contents 2021-06-08 11:36:33 +02:00
Anton Lydike
c7b3693740 [Regsietrs] ensuring register values are 32bit 2021-06-08 11:36:00 +02:00
Anton Lydike
cc598c0910 [PrivCPU] changed timer compare to lower equals to trigger exactly on time 2021-06-08 11:35:20 +02:00
Anton Lydike
affaa60d22 [PrivCPU] adding performance counter 2021-06-08 11:34:28 +02:00
Anton Lydike
48ce44993b [CSR] Adding dump_mstatus method to csr 2021-06-08 11:32:51 +02:00
Anton Lydike
639f91b192 [decoder] removed sign extension for CSR type instructions 2021-06-08 11:31:58 +02:00
Anton Lydike
c25b9f2343 [PrivCPU] implemented CPU interrupt handling context switch 2021-06-08 00:23:09 +02:00
Anton Lydike
4c7f3ffe67 [PrivCPU] fixed perf-counter not comparing against shifted time 2021-06-08 00:22:30 +02:00
Anton Lydike
c2002cd46d [PrivCPU] fixed naming for csr mtimecmp callback function 2021-06-08 00:21:51 +02:00
Anton Lydike
5b2b12507d [PrivRV32I] added half od csrrs instruction (reading only) 2021-06-08 00:21:05 +02:00
Anton Lydike
052ad56310 [CSR] fixed call to enum value member 2021-06-08 00:20:25 +02:00
Anton Lydike
d9e5d78f87 [Registers] removed info when writing to zero register 2021-06-08 00:19:36 +02:00
Anton Lydike
79d913baaf [decoder] fixed formatting in print_ins function 2021-06-08 00:19:04 +02:00
Anton Lydike
9278235e44 [decoder] fixed botched j immediate decoding 2021-06-08 00:18:44 +02:00
Anton Lydike
6351f1e84d [PrivRV32I] fixed bug with blt backwards jumps missing by one 2021-06-06 09:55:15 +02:00
Anton Lydike
f14bd2b983 [PrivCPU, PrivRV32I] fixed bug where ebreaks where missed during debugging 2021-06-05 16:19:35 +02:00
Anton Lydike
c1110b9ce3 [ElfLoader] better formatting for jump and load/store instructions 2021-06-05 15:29:40 +02:00
Anton Lydike
37910018b9 [PrivRV32I] finally correct parsing of load/store instruction args 2021-06-05 15:29:06 +02:00
Anton Lydike
e4537f86d9 [PrivRV32I] implemented csrrwi instruction 2021-06-05 15:28:27 +02:00
Anton Lydike
c770cc05cf [Priv Exceptions] added __str__ as __repr__ alias to CpuTrap to correctly format exceptions when printed 2021-06-05 15:25:39 +02:00
Anton Lydike
3e4920f5d9 [decoder] fixed bug when decoding add/sub instruction 2021-06-05 15:24:40 +02:00
Anton Lydike
849d5f4fc3 [decoder, ElfLoader] decoing an instruction now returns all args as int 2021-06-05 15:24:16 +02:00
Anton Lydike
f9b0bac245 [Priv Exceptions] fixed constructor typo in TimerInterrupt 2021-06-05 09:56:05 +02:00
Anton Lydike
9424390b65 [decoder] Added mret, sret, uret, wfi instruction decoding support 2021-06-05 09:54:58 +02:00
Anton Lydike
198d14d5fb [Priv Exceptions] added __repr__ to CpuTrap class 2021-06-05 09:29:20 +02:00
Anton Lydike
ca3b4099d4 [Priv] moved CSR constants to a separate file 2021-06-05 09:27:03 +02:00
79369889f4 [CSR] fixed method naming for _addr_to_name (now _name_to_addr) 2021-06-04 20:37:08 +02:00
de261c4c43 [Priv] overhauled instruction architecture 2021-06-04 20:36:33 +02:00
c963fe3989 [Priv] small fixes for overlooked things 2021-05-26 18:40:42 +02:00
85af9b992f [PrivCPU] overhaul of instruction cycle, adding more CSR interaction 2021-05-25 23:50:38 +02:00
7239212729 [CSR] adding virtual csr registers 2021-05-25 23:49:37 +02:00
6653ef7e7c [CPU] set correct MISA 2021-05-25 11:14:52 +02:00
a1f29b9d97 [CPU] cleaned up constructor 2021-05-25 11:14:18 +02:00