diff --git a/src/frontend/A32/decoder/thumb32.inc b/src/frontend/A32/decoder/thumb32.inc
index 73a6d591..edba3f26 100644
--- a/src/frontend/A32/decoder/thumb32.inc
+++ b/src/frontend/A32/decoder/thumb32.inc
@@ -59,7 +59,7 @@ INST(thumb32_BIC_imm,        "BIC (imm)",                "11110v00001Snnnn0vvvdd
 INST(thumb32_MOV_imm,        "MOV (imm)",                "11110v00010S11110vvvddddvvvvvvvv")
 INST(thumb32_ORR_imm,        "ORR (imm)",                "11110v00010Snnnn0vvvddddvvvvvvvv")
 INST(thumb32_MVN_imm,        "MVN (imm)",                "11110v00011S11110vvvddddvvvvvvvv")
-//INST(thumb32_ORN_imm,        "ORN (imm)",                "11110-00011-----0---------------")
+INST(thumb32_ORN_imm,        "ORN (imm)",                "11110v00011Snnnn0vvvddddvvvvvvvv")
 //INST(thumb32_TEQ_imm,        "TEQ (imm)",                "11110-001001----0---1111--------")
 //INST(thumb32_EOR_imm,        "EOR (imm)",                "11110-00100-----0---------------")
 //INST(thumb32_CMN_imm,        "CMN (imm)",                "11110-010001----0---1111--------")
diff --git a/src/frontend/A32/translate/impl/thumb32_data_processing_modified_immediate.cpp b/src/frontend/A32/translate/impl/thumb32_data_processing_modified_immediate.cpp
index c09cb229..17507de4 100644
--- a/src/frontend/A32/translate/impl/thumb32_data_processing_modified_immediate.cpp
+++ b/src/frontend/A32/translate/impl/thumb32_data_processing_modified_immediate.cpp
@@ -108,4 +108,22 @@ bool ThumbTranslatorVisitor::thumb32_MVN_imm(Imm<1> i, bool S, Imm<3> imm3, Reg
     return true;
 }
 
+bool ThumbTranslatorVisitor::thumb32_ORN_imm(Imm<1> i, bool S, Reg n, Imm<3> imm3, Reg d, Imm<8> imm8) {
+    ASSERT_MSG(n != Reg::PC, "Decode error");
+    if (d == Reg::PC) {
+        return UnpredictableInstruction();
+    }
+
+    const auto imm_carry = ThumbExpandImm_C(i, imm3, imm8, ir.GetCFlag());
+    const auto result = ir.Or(ir.GetRegister(n), ir.Imm32(~imm_carry.imm32));
+
+    ir.SetRegister(d, result);
+    if (S) {
+        ir.SetNFlag(ir.MostSignificantBit(result));
+        ir.SetZFlag(ir.IsZero(result));
+        ir.SetCFlag(imm_carry.carry);
+    }
+    return true;
+}
+
 } // namespace Dynarmic::A32
diff --git a/src/frontend/A32/translate/impl/translate_thumb.h b/src/frontend/A32/translate/impl/translate_thumb.h
index 5bc0935c..a5465c35 100644
--- a/src/frontend/A32/translate/impl/translate_thumb.h
+++ b/src/frontend/A32/translate/impl/translate_thumb.h
@@ -155,6 +155,7 @@ struct ThumbTranslatorVisitor final {
     bool thumb32_MOV_imm(Imm<1> i, bool S, Imm<3> imm3, Reg d, Imm<8> imm8);
     bool thumb32_ORR_imm(Imm<1> i, bool S, Reg n, Imm<3> imm3, Reg d, Imm<8> imm8);
     bool thumb32_MVN_imm(Imm<1> i, bool S, Imm<3> imm3, Reg d, Imm<8> imm8);
+    bool thumb32_ORN_imm(Imm<1> i, bool S, Reg n, Imm<3> imm3, Reg d, Imm<8> imm8);
 
     // thumb32 miscellaneous control instructions
     bool thumb32_UDF();