kernel-mode #1

Manually merged
anton merged 69 commits from kernel-mode into master 2021-11-16 08:02:40 +01:00
2 changed files with 6 additions and 1 deletions
Showing only changes of commit f14bd2b983 - Show all commits

View File

@ -18,6 +18,7 @@ if typing.TYPE_CHECKING:
from riscemu import Executable, LoadedExecutable, LoadedInstruction
from riscemu.instructions.InstructionSet import InstructionSet
class PrivCPU(CPU):
"""
This is a CPU that has different modes, instruction sets and registers.
@ -84,6 +85,7 @@ class PrivCPU(CPU):
print(FMT_CPU + "Program exited with code {}".format(self.exit_code) + FMT_NONE)
sys.exit(self.exit_code)
elif self.launch_debug:
self.launch_debug = False
launch_debug_session(self, self.mmu, self.regs,
"Launching debugger:")
self._run(verbose)
@ -152,7 +154,7 @@ class PrivCPU(CPU):
# implement trap handling!
self.pending_traps.append(trap)
def step(self, verbose = True):
def step(self, verbose=True):
try:
self.cycle += 1
self._timer_step()

View File

@ -132,6 +132,9 @@ class PrivRV32I(RV32I):
self.regs.set(rd, self.pc)
self.pc = rs + imm - 4
def instruction_sbreak(self, ins: 'LoadedInstruction'):
raise LaunchDebuggerException()
def parse_crs_ins(self, ins: 'LoadedInstruction'):
ASSERT_LEN(ins.args, 3)
return ins.get_reg(0), ins.get_reg(1), ins.get_imm(2)