aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qtmips_machine/alu.cpp5
-rw-r--r--qtmips_machine/qtmips_machine.pro3
-rw-r--r--qtmips_machine/utils.h10
3 files changed, 15 insertions, 3 deletions
diff --git a/qtmips_machine/alu.cpp b/qtmips_machine/alu.cpp
index 2d5783d..0d40bf0 100644
--- a/qtmips_machine/alu.cpp
+++ b/qtmips_machine/alu.cpp
@@ -1,5 +1,6 @@
#include "alu.h"
#include "qtmipsexception.h"
+#include "utils.h"
using namespace machine;
@@ -42,13 +43,13 @@ std::uint32_t machine::alu_operate(enum AluOp operation, std::uint32_t s, std::u
case ALU_OP_ADD:
if (s > (0xFFFFFFFF - t))
throw QTMIPS_EXCEPTION(Overflow, "ADD operation overflow/underflow", QString::number(s) + QString(" + ") + QString::number(t));
- // Intentional falltrough
+ FALLTROUGH
case ALU_OP_ADDU:
return s + t;
case ALU_OP_SUB:
if (s < t)
throw QTMIPS_EXCEPTION(Overflow, "SUB operation overflow/underflow", QString::number(s) + QString(" - ") + QString::number(t));
- // Intentional falltrough
+ FALLTROUGH
case ALU_OP_SUBU:
return s - t;
case ALU_OP_AND:
diff --git a/qtmips_machine/qtmips_machine.pro b/qtmips_machine/qtmips_machine.pro
index ff5cc3f..94d1a26 100644
--- a/qtmips_machine/qtmips_machine.pro
+++ b/qtmips_machine/qtmips_machine.pro
@@ -34,4 +34,5 @@ HEADERS += \
programloader.h \
cache.h \
alu.h \
- machineconfig.h
+ machineconfig.h \
+ utils.h
diff --git a/qtmips_machine/utils.h b/qtmips_machine/utils.h
new file mode 100644
index 0000000..7d30364
--- /dev/null
+++ b/qtmips_machine/utils.h
@@ -0,0 +1,10 @@
+#ifndef UTILS_H
+#define UTILS_H
+
+#if __GNUC__ >= 7
+#define FALLTROUGH __attribute__((fallthrough));
+#else
+#define FALLTROUGH
+#endif
+
+#endif // UTILS_H