diff --git a/repos/base-hw/src/core/include/spec/x86_64/pseudo_descriptor.h b/repos/base-hw/src/core/include/spec/x86_64/pseudo_descriptor.h
new file mode 100644
index 000000000..321a31fa5
--- /dev/null
+++ b/repos/base-hw/src/core/include/spec/x86_64/pseudo_descriptor.h
@@ -0,0 +1,26 @@
+#ifndef _PSEUDO_DESCRIPTOR_H_
+#define _PSEUDO_DESCRIPTOR_H_
+
+#include
+
+namespace Genode
+{
+ /**
+ * Pseudo Descriptor
+ *
+ * See Intel SDM Vol. 3A, section 3.5.1
+ */
+ class Pseudo_descriptor;
+}
+
+class Genode::Pseudo_descriptor
+{
+ private:
+ uint16_t _limit;
+ uint64_t _base;
+
+ public:
+ Pseudo_descriptor(uint16_t l, uint64_t b) : _limit(l), _base (b) { };
+} __attribute__((packed));
+
+#endif /* _PSEUDO_DESCRIPTOR_H_ */
diff --git a/repos/base-hw/src/core/spec/x86_64/idt.cc b/repos/base-hw/src/core/spec/x86_64/idt.cc
index 308a83720..10755c7da 100644
--- a/repos/base-hw/src/core/spec/x86_64/idt.cc
+++ b/repos/base-hw/src/core/spec/x86_64/idt.cc
@@ -1,3 +1,5 @@
+#include
+
#include "idt.h"
extern int _mt_begin;
@@ -5,16 +7,6 @@ extern int _mt_idt;
using namespace Genode;
-class Descriptor
-{
- private:
- uint16_t _limit;
- uint64_t _base;
-
- public:
- Descriptor(uint16_t l, uint64_t b) : _limit(l), _base (b) {};
-} __attribute__((packed));
-
addr_t Idt::_virt_mtc_addr(addr_t const virt_base, addr_t const label)
{
@@ -45,6 +37,6 @@ void Idt::setup()
void Idt::load(addr_t const virt_base)
{
- asm volatile ("lidt %0" : : "m" (Descriptor (sizeof(_table) - 1,
+ asm volatile ("lidt %0" : : "m" (Pseudo_descriptor (sizeof(_table) - 1,
_virt_mtc_addr(virt_base, (addr_t)&_mt_idt))));
}