aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qtmips_machine/machinedefs.h13
-rw-r--r--qtmips_machine/peripspiled.cpp16
-rw-r--r--qtmips_machine/qtmipsmachine.cpp3
3 files changed, 21 insertions, 11 deletions
diff --git a/qtmips_machine/machinedefs.h b/qtmips_machine/machinedefs.h
index f575648..16a72b0 100644
--- a/qtmips_machine/machinedefs.h
+++ b/qtmips_machine/machinedefs.h
@@ -58,12 +58,13 @@ enum AccessControl {
};
enum ExceptionCause {
- EXCAUSE_NONE,
- EXCAUSE_BREAK,
- EXCAUSE_SYSCALL,
- EXCAUSE_HWBREAK,
- EXCAUSE_TRAP,
- EXCAUSE_OVERFLOW,
+ EXCAUSE_NONE = 0,
+ EXCAUSE_INT = 1,
+ EXCAUSE_SYSCALL = 8,
+ EXCAUSE_BREAK = 9,
+ EXCAUSE_OVERFLOW = 12,
+ EXCAUSE_TRAP = 13,
+ EXCAUSE_HWBREAK = 14,
};
enum AluOp : std::uint8_t {
diff --git a/qtmips_machine/peripspiled.cpp b/qtmips_machine/peripspiled.cpp
index 03b74f9..c4333e7 100644
--- a/qtmips_machine/peripspiled.cpp
+++ b/qtmips_machine/peripspiled.cpp
@@ -46,7 +46,13 @@ using namespace machine;
#define SPILED_REG_KNOBS_8BIT_o 0x024
PeripSpiLed::PeripSpiLed() {
+ spiled_reg_led_line = 0;
+ spiled_reg_led_rgb1 = 0;
+ spiled_reg_led_rgb2 = 0;
+ spiled_reg_led_kbdwr_direct = 0;
+ spiled_reg_kbdrd_knobs_direct = 0;
+ spiled_reg_knobs_8bit = 0;
}
PeripSpiLed::~PeripSpiLed() {
@@ -83,10 +89,7 @@ bool PeripSpiLed::wword(std::uint32_t address, std::uint32_t value) {
std::uint32_t PeripSpiLed::rword(std::uint32_t address, bool debug_access) const {
(void)debug_access;
std::uint32_t value = 0x00000000;
-#if 0
- printf("PeripSpiLed::rword address 0x%08lx\n",
- (unsigned long)address);
-#endif
+
switch (address) {
case SPILED_REG_LED_LINE_o:
value = spiled_reg_led_line;
@@ -112,6 +115,11 @@ std::uint32_t PeripSpiLed::rword(std::uint32_t address, bool debug_access) const
emit read_notification(address, &value);
+#if 0
+ printf("PeripSpiLed::rword address 0x%08lx value 0x%08lx\n",
+ (unsigned long)address, (unsigned long)value);
+#endif
+
return value;
}
diff --git a/qtmips_machine/qtmipsmachine.cpp b/qtmips_machine/qtmipsmachine.cpp
index e1ecf93..171a50f 100644
--- a/qtmips_machine/qtmipsmachine.cpp
+++ b/qtmips_machine/qtmipsmachine.cpp
@@ -61,7 +61,8 @@ QtMipsMachine::QtMipsMachine(const MachineConfig &cc, bool load_symtab) :
cpu_mem = physaddrspace;
ser_port = new SerialPort();
- addressapce_insert_range(ser_port, 0xffffc000, 0xffffc0ff, true);
+ addressapce_insert_range(ser_port, 0xffffc000, 0xffffc03f, true);
+ addressapce_insert_range(ser_port, 0xffff0000, 0xffff003f, false);
perip_spi_led = new PeripSpiLed();
addressapce_insert_range(perip_spi_led, 0xffffc100, 0xffffc1ff, true);