diff --git a/src/dev/lupio/LupioSYS.py b/src/dev/lupio/LupioSYS.py
new file mode 100644
index 0000000..d300e91
--- /dev/null
+++ b/src/dev/lupio/LupioSYS.py
@@ -0,0 +1,34 @@
+# Copyright (c) 2021 The Regents of the University of California
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met: redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer;
+# redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution;
+# neither the name of the copyright holders nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+from m5.objects.Device import BasicPioDevice
+from m5.params import Param
+
+class LupioSYS(BasicPioDevice):
+    type = 'LupioSYS'
+    cxx_class='gem5::LupioSYS'
+    cxx_header = 'dev/lupio/lupio_sys.hh'
+    pio_size = Param.Addr(0x1000, "PIO Size")
diff --git a/src/dev/lupio/SConscript b/src/dev/lupio/SConscript
index 47087f0..82fb81e 100644
--- a/src/dev/lupio/SConscript
+++ b/src/dev/lupio/SConscript
@@ -33,6 +33,7 @@
 SimObject('LupioRTC.py', tags='riscv isa')
 SimObject('LupioTMR.py', tags='riscv isa')
 SimObject('LupioTTY.py', tags='riscv isa')
+SimObject('LupioSYS.py', tags='riscv isa')
 
 DebugFlag('LupioBLK')
 DebugFlag('LupioIPI')
@@ -41,6 +42,7 @@
 DebugFlag('LupioRTC')
 DebugFlag('LupioTMR')
 DebugFlag('LupioTTY')
+DebugFlag('LupioSYS')
 
 Source('lupio_blk.cc', tags='riscv isa')
 Source('lupio_ipi.cc', tags='riscv isa')
@@ -49,3 +51,4 @@
 Source('lupio_rtc.cc', tags='riscv isa')
 Source('lupio_tmr.cc', tags='riscv isa')
 Source('lupio_tty.cc', tags='riscv isa')
+Source('lupio_sys.cc', tags='riscv isa')
diff --git a/src/dev/lupio/lupio_sys.cc b/src/dev/lupio/lupio_sys.cc
new file mode 100644
index 0000000..0596b0e
--- /dev/null
+++ b/src/dev/lupio/lupio_sys.cc
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2021 The Regents of the University of California
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "dev/lupio/lupio_sys.hh"
+
+#include "debug/LupioSYS.hh"
+#include "mem/packet_access.hh"
+#include "params/LupioSYS.hh"
+#include "sim/sim_exit.hh"
+
+namespace gem5
+{
+
+LupioSYS::LupioSYS(const Params &params) :
+    BasicPioDevice(params, params.pio_size)
+{
+    DPRINTF(LupioSYS, "LupioSYS initalized\n");
+}
+
+uint8_t
+LupioSYS::lupioSYSRead(uint8_t addr)
+{
+    return 0;
+}
+
+void
+LupioSYS::lupioSYSWrite(uint8_t addr, uint64_t val64)
+{
+    switch (addr >> 2) {
+        case LUPIO_SYS_HALT:
+            DPRINTF(LupioSYS, "Trying to halt\n");
+            exitSimLoopNow("LUPIO_SYS_HALT called, exiting", val64, 0, false);
+            break;
+        case LUPIO_SYS_REBT:
+            DPRINTF(LupioSYS, "Trying to reboot\n");
+            exitSimLoopNow("LUPIO_SYS_REBT called, exiting", val64, 0, false);
+            break;
+
+        default:
+            panic("Unexpected write to the LupioRTC device at address %d!",
+                    addr);
+            break;
+    }
+}
+
+Tick
+LupioSYS::read(PacketPtr pkt)
+{
+    Addr daddr = pkt->getAddr() - pioAddr;
+
+    DPRINTF(LupioSYS,
+        "Read request - addr: %#x, size: %#x\n", daddr, pkt->getSize());
+
+    uint64_t sys_read = lupioSYSRead(daddr);
+    DPRINTF(LupioSYS, "Packet Read: %#x\n", sys_read);
+    pkt->setUintX(sys_read, byteOrder);
+    pkt->makeResponse();
+
+    return pioDelay;
+}
+
+Tick
+LupioSYS::write(PacketPtr pkt)
+{
+    Addr daddr = pkt->getAddr() - pioAddr;
+
+    DPRINTF(LupioSYS, "Write register %#x value %#x\n", daddr,
+            pkt->getUintX(byteOrder));
+
+    lupioSYSWrite(daddr, pkt->getUintX(byteOrder));
+    DPRINTF(LupioSYS, "Packet Write Value: %d\n", pkt->getUintX(byteOrder));
+
+    pkt->makeResponse();
+
+    return pioDelay;
+}
+} // namespace gem5
diff --git a/src/dev/lupio/lupio_sys.hh b/src/dev/lupio/lupio_sys.hh
new file mode 100644
index 0000000..f9ee4f7
--- /dev/null
+++ b/src/dev/lupio/lupio_sys.hh
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2021 The Regents of the University of California
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met: redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer;
+ * redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution;
+ * neither the name of the copyright holders nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef __DEV_LUPIO_LUPIO_SYS_HH__
+#define __DEV_LUPIO_LUPIO_SYS_HH__
+
+#include "debug/LupioSYS.hh"
+#include "dev/io_device.hh"
+#include "dev/platform.hh"
+#include "params/LupioSYS.hh"
+#include "sim/system.hh"
+
+namespace gem5
+{
+
+/**
+ * LupioSYS:
+ * A Real-Time System Controller virtual device which provides a way for the
+ * software to halt or reboot the computer system
+ */
+class LupioSYS : public BasicPioDevice
+{
+  protected:
+    const ByteOrder byteOrder = ByteOrder::little;
+  // Register map
+  private:
+    enum
+    {
+      LUPIO_SYS_HALT,
+      LUPIO_SYS_REBT,
+
+      /* Max offset */
+      LUPIO_SYS_MAX,
+    };
+
+    uint8_t lupioSYSRead(const uint8_t addr);
+
+    void lupioSYSWrite(const uint8_t addr, const uint64_t val64);
+
+  public:
+    PARAMS(LupioSYS);
+    LupioSYS(const Params &params);
+
+    /**
+     * Implement BasicPioDevice virtual functions
+     */
+    Tick read(PacketPtr pkt) override;
+    Tick write(PacketPtr pkt) override;
+};
+
+} // namespace gem5
+
+#endif // __DEV_LUPIO_LUPIO_SYS_HH__
