diff --git a/repos/base-hw/lib/mk/spec/imx53_qsb/core-hw.mk b/repos/base-hw/lib/mk/spec/imx53_qsb/core-hw.mk
index c38e5d26ec..378bd99bbd 100644
--- a/repos/base-hw/lib/mk/spec/imx53_qsb/core-hw.mk
+++ b/repos/base-hw/lib/mk/spec/imx53_qsb/core-hw.mk
@@ -8,7 +8,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/imx53_qsb
INC_DIR += $(REP_DIR)/src/core/spec/imx53
-INC_DIR += $(REP_DIR)/src/core/spec/imx
SRC_CC += spec/imx53/pic.cc
SRC_CC += spec/imx53/timer.cc
diff --git a/repos/base-hw/lib/mk/spec/imx6/core-hw.mk b/repos/base-hw/lib/mk/spec/imx6/core-hw.mk
index c95150fc1b..d9b4337b1e 100644
--- a/repos/base-hw/lib/mk/spec/imx6/core-hw.mk
+++ b/repos/base-hw/lib/mk/spec/imx6/core-hw.mk
@@ -8,7 +8,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/wand_quad
-INC_DIR += $(REP_DIR)/src/core/spec/imx
# add C++ sources
SRC_CC += platform_services.cc
diff --git a/repos/base-hw/lib/mk/spec/panda/core-hw.mk b/repos/base-hw/lib/mk/spec/panda/core-hw.mk
index 8883929c2a..783e035cdb 100644
--- a/repos/base-hw/lib/mk/spec/panda/core-hw.mk
+++ b/repos/base-hw/lib/mk/spec/panda/core-hw.mk
@@ -7,7 +7,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/panda
-INC_DIR += $(REP_DIR)/src/core/spec/tl16c750
# add C++ sources
SRC_CC += platform_services.cc
diff --git a/repos/base-hw/lib/mk/spec/pbxa9/core-hw.mk b/repos/base-hw/lib/mk/spec/pbxa9/core-hw.mk
index b87782f57d..6816f9fc35 100644
--- a/repos/base-hw/lib/mk/spec/pbxa9/core-hw.mk
+++ b/repos/base-hw/lib/mk/spec/pbxa9/core-hw.mk
@@ -7,7 +7,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/pbxa9
-INC_DIR += $(REP_DIR)/src/core/spec/pl011
# add C++ sources
SRC_CC += platform_services.cc
diff --git a/repos/base-hw/lib/mk/spec/rpi/core-hw.mk b/repos/base-hw/lib/mk/spec/rpi/core-hw.mk
index 4d4f230adc..ef12aab5ef 100644
--- a/repos/base-hw/lib/mk/spec/rpi/core-hw.mk
+++ b/repos/base-hw/lib/mk/spec/rpi/core-hw.mk
@@ -6,7 +6,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/rpi
-INC_DIR += $(REP_DIR)/src/core/spec/pl011
# add C++ sources
SRC_CC += platform_services.cc
diff --git a/repos/base-hw/lib/mk/spec/usb_armory/core-hw.mk b/repos/base-hw/lib/mk/spec/usb_armory/core-hw.mk
index 1057ae01d6..3094d8611e 100644
--- a/repos/base-hw/lib/mk/spec/usb_armory/core-hw.mk
+++ b/repos/base-hw/lib/mk/spec/usb_armory/core-hw.mk
@@ -7,7 +7,6 @@
# add include paths
INC_DIR += $(REP_DIR)/src/core/spec/usb_armory
INC_DIR += $(REP_DIR)/src/core/spec/imx53
-INC_DIR += $(REP_DIR)/src/core/spec/imx
INC_DIR += $(REP_DIR)/src/core/spec/arm_v7/trustzone
INC_DIR += $(REP_DIR)/src/core/spec/imx53/trustzone
diff --git a/repos/base-hw/lib/mk/spec/zynq_qemu/core-hw.mk b/repos/base-hw/lib/mk/spec/zynq_qemu/core-hw.mk
index 86931d6681..fe4c1e701b 100644
--- a/repos/base-hw/lib/mk/spec/zynq_qemu/core-hw.mk
+++ b/repos/base-hw/lib/mk/spec/zynq_qemu/core-hw.mk
@@ -5,7 +5,6 @@
#
# add include paths
-INC_DIR += $(REP_DIR)/src/core/spec/xilinx_uartps_0
INC_DIR += $(REP_DIR)/src/core/spec/zynq_qemu
NR_OF_CPUS = 1
diff --git a/repos/base-hw/src/core/kernel_log.cc b/repos/base-hw/src/core/kernel_log.cc
index 2df756b871..354fd5a672 100644
--- a/repos/base-hw/src/core/kernel_log.cc
+++ b/repos/base-hw/src/core/kernel_log.cc
@@ -15,13 +15,14 @@
/* base-internal includes */
#include
-#include
+#include
+#include
#include
void Kernel::log(char const c)
{
- using Genode::Serial;
+ using namespace Board;
enum {
ASCII_LINE_FEED = 10,
@@ -29,7 +30,8 @@ void Kernel::log(char const c)
BAUD_RATE = 115200
};
- Serial & serial = *unmanaged_singleton(BAUD_RATE);
+ static Serial serial { Genode::Platform::mmio_to_virt(UART_BASE),
+ UART_CLOCK, BAUD_RATE };
if (c == ASCII_LINE_FEED) serial.put_char(ASCII_CARRIAGE_RETURN);
serial.put_char(c);
}
diff --git a/repos/base-hw/src/core/spec/arndale/board.h b/repos/base-hw/src/core/spec/arndale/board.h
index e279b43bfb..6e34318464 100644
--- a/repos/base-hw/src/core/spec/arndale/board.h
+++ b/repos/base-hw/src/core/spec/arndale/board.h
@@ -16,12 +16,19 @@
/* base includes */
#include
+#include
#include
namespace Board {
using namespace Arndale;
using Cpu_mmio = Hw::Cortex_a15_mmio;
+ using Serial = Genode::Exynos_uart;
+
+ enum {
+ UART_BASE = UART_2_MMIO_BASE,
+ UART_CLOCK = UART_2_CLOCK,
+ };
static constexpr bool SMP = true;
}
diff --git a/repos/base-hw/src/core/spec/exynos5/serial.h b/repos/base-hw/src/core/spec/exynos5/serial.h
deleted file mode 100644
index 9c89c086d0..0000000000
--- a/repos/base-hw/src/core/spec/exynos5/serial.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Martin Stein
- * \author Stefan Kalkowski
- * \date 2013-01-09
- */
-
-/*
- * Copyright (C) 2013-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__EXYNOS5__SERIAL_H_
-#define _CORE__SPEC__EXYNOS5__SERIAL_H_
-
-/* core includes */
-#include
-#include
-
-/* Genode includes */
-#include
-
-namespace Genode
-{
- /**
- * Serial output driver for core
- */
- class Serial : public Exynos_uart
- {
- public:
-
- /**
- * Constructor
- *
- * \param baud_rate targeted transfer baud-rate
- */
- Serial(unsigned const baud_rate)
- :
- Exynos_uart(Platform::mmio_to_virt(Board::UART_2_MMIO_BASE),
- Board::UART_2_CLOCK, baud_rate)
- { }
- };
-}
-
-#endif /* _CORE__SPEC__EXYNOS5__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/imx/serial.h b/repos/base-hw/src/core/spec/imx/serial.h
deleted file mode 100644
index 4d9f3da9da..0000000000
--- a/repos/base-hw/src/core/spec/imx/serial.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Stefan Kalkowski
- * \date 2012-10-24
- */
-
-/*
- * Copyright (C) 2012-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__IMX__SERIAL_H_
-#define _CORE__SPEC__IMX__SERIAL_H_
-
-/* core includes */
-#include
-#include
-
-/* Genode includes */
-#include
-
-namespace Genode
-{
- /**
- * Serial output driver for core
- */
- class Serial : public Imx_uart
- {
- public:
-
- Serial(unsigned baudrate)
- : Imx_uart(Platform::mmio_to_virt(Board::UART_1_MMIO_BASE),
- /* ignored clock rate */ 0, baudrate) { }
- };
-}
-
-#endif /* _CORE__SPEC__IMX__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/imx53_qsb/board.h b/repos/base-hw/src/core/spec/imx53_qsb/board.h
index d16148148b..8c5ced7391 100644
--- a/repos/base-hw/src/core/spec/imx53_qsb/board.h
+++ b/repos/base-hw/src/core/spec/imx53_qsb/board.h
@@ -16,9 +16,17 @@
#define _CORE__SPEC__IMX53_QSB__BOARD_H_
#include
+#include
namespace Board {
using namespace Imx53_qsb;
+ using Serial = Genode::Imx_uart;
+
+ enum {
+ UART_BASE = UART_1_MMIO_BASE,
+ UART_CLOCK = 0, /* ignored value */
+ };
+
static constexpr bool SMP = false;
}
diff --git a/repos/base-hw/src/core/spec/odroid_xu/board.h b/repos/base-hw/src/core/spec/odroid_xu/board.h
index a871dc008c..9dcbf56f50 100644
--- a/repos/base-hw/src/core/spec/odroid_xu/board.h
+++ b/repos/base-hw/src/core/spec/odroid_xu/board.h
@@ -16,12 +16,19 @@
/* base includes */
#include
+#include
#include
namespace Board {
using namespace Odroid_xu;
using Cpu_mmio = Hw::Cortex_a15_mmio;
+ using Serial = Genode::Exynos_uart;
+
+ enum {
+ UART_BASE = UART_2_MMIO_BASE,
+ UART_CLOCK = UART_2_CLOCK,
+ };
static constexpr bool SMP = true;
}
diff --git a/repos/base-hw/src/core/spec/panda/board.h b/repos/base-hw/src/core/spec/panda/board.h
index 1ac5b5e184..c15fa29e20 100644
--- a/repos/base-hw/src/core/spec/panda/board.h
+++ b/repos/base-hw/src/core/spec/panda/board.h
@@ -17,6 +17,7 @@
/* base includes */
#include
+#include
#include
#include
@@ -26,6 +27,12 @@ namespace Board {
using namespace Panda;
using Cpu_mmio = Hw::Cortex_a9_mmio;
+ using Serial = Genode::Tl16c750_uart;
+
+ enum {
+ UART_BASE = TL16C750_3_MMIO_BASE,
+ UART_CLOCK = TL16C750_CLOCK,
+ };
static constexpr bool SMP = true;
diff --git a/repos/base-hw/src/core/spec/pbxa9/board.h b/repos/base-hw/src/core/spec/pbxa9/board.h
index c3b9891c8e..3d9747bc3a 100644
--- a/repos/base-hw/src/core/spec/pbxa9/board.h
+++ b/repos/base-hw/src/core/spec/pbxa9/board.h
@@ -16,14 +16,22 @@
/* base includes */
#include
+#include
#include
#include
namespace Board {
using namespace Pbxa9;
+
using Cpu_mmio = Hw::Cortex_a9_mmio;
using L2_cache = Hw::Pl310;
+ using Serial = Genode::Pl011_uart;
+
+ enum {
+ UART_BASE = PL011_0_MMIO_BASE,
+ UART_CLOCK = PL011_0_CLOCK,
+ };
static constexpr bool SMP = true;
diff --git a/repos/base-hw/src/core/spec/pl011/serial.h b/repos/base-hw/src/core/spec/pl011/serial.h
deleted file mode 100644
index 38a465bddf..0000000000
--- a/repos/base-hw/src/core/spec/pl011/serial.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Martin Stein
- * \date 2012-04-23
- */
-
-/*
- * Copyright (C) 2012-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__PL011__SERIAL_H_
-#define _CORE__SPEC__PL011__SERIAL_H_
-
-/* core includes */
-#include
-#include
-
-/* Genode includes */
-#include
-
-namespace Genode { class Serial; }
-
-
-class Genode::Serial : public Pl011_uart
-{
- public:
-
- /**
- * Constructor
- *
- * \param baud_rate targeted transfer baud-rate
- */
- Serial(unsigned const baud_rate)
- :
- Pl011_uart(Platform::mmio_to_virt(Board::PL011_0_MMIO_BASE),
- Board::PL011_0_CLOCK, baud_rate)
- { }
-};
-
-#endif /* _CORE__SPEC__PL011__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/riscv/board.h b/repos/base-hw/src/core/spec/riscv/board.h
index 226dbb96d5..a65aa80153 100644
--- a/repos/base-hw/src/core/spec/riscv/board.h
+++ b/repos/base-hw/src/core/spec/riscv/board.h
@@ -14,6 +14,10 @@
#ifndef _CORE__SPEC__RISCV__BOARD_H_
#define _CORE__SPEC__RISCV__BOARD_H_
-namespace Board { }
+namespace Board {
+ enum { UART_BASE, UART_CLOCK };
+ struct Serial : Hw::Riscv_uart {
+ Serial(unsigned, unsigned, unsigned) {} };
+}
#endif /* _CORE__SPEC__RISCV__BOARD_H_ */
diff --git a/repos/base-hw/src/core/spec/riscv/serial.h b/repos/base-hw/src/core/spec/riscv/serial.h
deleted file mode 100644
index a9b8f7ace3..0000000000
--- a/repos/base-hw/src/core/spec/riscv/serial.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Sebastian Sumpf
- * \date 2015-06-02
- */
-
-/*
- * Copyright (C) 2015-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__RISCV__SERIAL_H_
-#define _CORE__SPEC__RISCV__SERIAL_H_
-
-#include
-
-namespace Genode { struct Serial; }
-
-/**
- * Serial output driver for core
- */
-struct Genode::Serial : Hw::Riscv_uart
-{
- Serial(unsigned) { }
-};
-
-#endif /* _CORE__SPEC__RISCV__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/rpi/board.h b/repos/base-hw/src/core/spec/rpi/board.h
index 6af776238a..651895520e 100644
--- a/repos/base-hw/src/core/spec/rpi/board.h
+++ b/repos/base-hw/src/core/spec/rpi/board.h
@@ -15,12 +15,19 @@
#ifndef _CORE__SPEC__RPI__BOARD_H_
#define _CORE__SPEC__RPI__BOARD_H_
-/* core includes */
#include
+#include
namespace Board {
using namespace Rpi;
+ using Serial = Genode::Pl011_uart;
+
+ enum {
+ UART_BASE = Rpi::PL011_0_MMIO_BASE,
+ UART_CLOCK = Rpi::PL011_0_CLOCK,
+ };
+
static constexpr bool SMP = false;
};
diff --git a/repos/base-hw/src/core/spec/tl16c750/serial.h b/repos/base-hw/src/core/spec/tl16c750/serial.h
deleted file mode 100644
index efd2054375..0000000000
--- a/repos/base-hw/src/core/spec/tl16c750/serial.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Martin Stein
- * \date 2012-04-23
- */
-
-/*
- * Copyright (C) 2012-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__TL16C750__SERIAL_H_
-#define _CORE__SPEC__TL16C750__SERIAL_H_
-
-/* core includes */
-#include
-#include
-
-/* Genode includes */
-#include
-
-namespace Genode
-{
- /**
- * Serial output driver for core
- */
- class Serial : public Tl16c750_uart
- {
- public:
-
- /**
- * Constructor
- *
- * \param baud_rate targeted transfer baud-rate
- */
- Serial(unsigned const baud_rate)
- :
- Tl16c750_uart(Platform::mmio_to_virt(Board::TL16C750_3_MMIO_BASE),
- Board::TL16C750_CLOCK, baud_rate)
- { }
- };
-}
-
-#endif /* _CORE__SPEC__TL16C750__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/usb_armory/board.h b/repos/base-hw/src/core/spec/usb_armory/board.h
index 7e079b51d7..cf530eb342 100644
--- a/repos/base-hw/src/core/spec/usb_armory/board.h
+++ b/repos/base-hw/src/core/spec/usb_armory/board.h
@@ -16,9 +16,17 @@
#define _CORE__SPEC__USB_ARMORY__BOARD_H_
#include
+#include
namespace Board {
using namespace Usb_armory;
+ using Serial = Genode::Imx_uart;
+
+ enum {
+ UART_BASE = UART_1_MMIO_BASE,
+ UART_CLOCK = 0, /* dummy value, not used */
+ };
+
static constexpr bool SMP = false;
}
diff --git a/repos/base-hw/src/core/spec/wand_quad/board.h b/repos/base-hw/src/core/spec/wand_quad/board.h
index 9868f46ad8..d5c4d74a91 100644
--- a/repos/base-hw/src/core/spec/wand_quad/board.h
+++ b/repos/base-hw/src/core/spec/wand_quad/board.h
@@ -17,6 +17,7 @@
/* base includes */
#include
+#include
#include
#include
@@ -25,6 +26,12 @@ namespace Board {
using namespace Wand_quad;
using Cpu_mmio = Hw::Cortex_a9_mmio;
using L2_cache = Hw::Pl310;
+ using Serial = Genode::Imx_uart;
+
+ enum {
+ UART_BASE = UART_1_MMIO_BASE,
+ UART_CLOCK = 0, /* dummy value, not used */
+ };
static constexpr bool SMP = true;
diff --git a/repos/base-hw/src/core/spec/x86_64/board.h b/repos/base-hw/src/core/spec/x86_64/board.h
index f67c564863..38f40fbcda 100644
--- a/repos/base-hw/src/core/spec/x86_64/board.h
+++ b/repos/base-hw/src/core/spec/x86_64/board.h
@@ -14,17 +14,23 @@
#ifndef _CORE__SPEC__X86_64__BOARD_H_
#define _CORE__SPEC__X86_64__BOARD_H_
-namespace Genode
-{
- struct Board
- {
- enum {
- VECTOR_REMAP_BASE = 48,
- TIMER_VECTOR_KERNEL = 32,
- TIMER_VECTOR_USER = 50,
- ISA_IRQ_END = 15,
- };
+#include
+
+namespace Board {
+ struct Serial;
+ enum Dummies { UART_BASE, UART_CLOCK };
+
+ enum {
+ VECTOR_REMAP_BASE = 48,
+ TIMER_VECTOR_KERNEL = 32,
+ TIMER_VECTOR_USER = 50,
+ ISA_IRQ_END = 15,
};
}
+
+struct Board::Serial : Genode::X86_uart {
+ Serial(Genode::addr_t, Genode::size_t, unsigned);
+};
+
#endif /* _CORE__SPEC__X86_64__BOARD_H_ */
diff --git a/repos/base-hw/src/core/spec/x86_64/muen/board.h b/repos/base-hw/src/core/spec/x86_64/muen/board.h
index b4e158dab8..64f78b303c 100644
--- a/repos/base-hw/src/core/spec/x86_64/muen/board.h
+++ b/repos/base-hw/src/core/spec/x86_64/muen/board.h
@@ -14,23 +14,29 @@
#ifndef _CORE__SPEC__X86_64__MUEN__BOARD_H_
#define _CORE__SPEC__X86_64__MUEN__BOARD_H_
-namespace Genode
-{
- struct Board
- {
- enum {
- TIMER_BASE_ADDR = 0xe00010000,
- TIMER_SIZE = 0x1000,
- TIMER_PREEMPT_BASE_ADDR = 0xe00011000,
- TIMER_PREEMPT_SIZE = 0x1000,
+#include
- VECTOR_REMAP_BASE = 48,
- TIMER_EVENT_PREEMPT = 30,
- TIMER_EVENT_KERNEL = 31,
- TIMER_VECTOR_KERNEL = 32,
- TIMER_VECTOR_USER = 50,
- };
+namespace Board {
+ struct Serial;
+ enum Dummies { UART_BASE, UART_CLOCK };
+
+ enum {
+ TIMER_BASE_ADDR = 0xe00010000,
+ TIMER_SIZE = 0x1000,
+ TIMER_PREEMPT_BASE_ADDR = 0xe00011000,
+ TIMER_PREEMPT_SIZE = 0x1000,
+
+ VECTOR_REMAP_BASE = 48,
+ TIMER_EVENT_PREEMPT = 30,
+ TIMER_EVENT_KERNEL = 31,
+ TIMER_VECTOR_KERNEL = 32,
+ TIMER_VECTOR_USER = 50,
};
}
+
+struct Board::Serial : Genode::X86_uart {
+ Serial(Genode::addr_t, Genode::size_t, unsigned);
+};
+
#endif /* _CORE__SPEC__X86_64__MUEN__BOARD_H_ */
diff --git a/repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc b/repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc
index cb7bd1363e..c7d18fa9d1 100644
--- a/repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc
+++ b/repos/base-hw/src/core/spec/x86_64/muen/platform_support.cc
@@ -94,3 +94,8 @@ void Platform::_init_additional()
Rom_module((addr_t)Sinfo::PHYSICAL_BASE_ADDR,
Sinfo::SIZE, "subject_info_page"));
}
+
+
+enum { COM1_PORT = 0x3f8 };
+Board::Serial::Serial(Genode::addr_t, Genode::size_t, unsigned baudrate)
+:X86_uart(COM1_PORT, 0, baudrate) {}
diff --git a/repos/base-hw/src/core/spec/x86_64/muen/serial.h b/repos/base-hw/src/core/spec/x86_64/muen/serial.h
deleted file mode 100644
index 121a4a4e67..0000000000
--- a/repos/base-hw/src/core/spec/x86_64/muen/serial.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Stefan Kalkowski
- * \author Adrian-Ken Rueegsegger
- * \date 2015-08-20
- */
-
-/*
- * Copyright (C) 2012-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__X86_64__MUEN__SERIAL_H_
-#define _CORE__SPEC__X86_64__MUEN__SERIAL_H_
-
-/* Genode includes */
-#include
-
-namespace Genode { class Serial; }
-
-/**
- * Serial output driver for core
- */
-class Genode::Serial : public X86_uart
-{
- private:
-
- enum {
- CLOCK_UNUSED = 0,
- COM1_PORT = 0x3f8
- };
-
- public:
-
- Serial(unsigned baud_rate)
- :
- X86_uart(COM1_PORT, CLOCK_UNUSED, baud_rate)
- { }
-};
-
-#endif /* _CORE__SPEC__X86_64__MUEN__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/x86_64/platform_support.cc b/repos/base-hw/src/core/spec/x86_64/platform_support.cc
index 465989c35e..0cedb682d6 100644
--- a/repos/base-hw/src/core/spec/x86_64/platform_support.cc
+++ b/repos/base-hw/src/core/spec/x86_64/platform_support.cc
@@ -11,7 +11,7 @@
* under the terms of the GNU Affero General Public License version 3.
*/
-/* core includes */
+#include
#include
#include
@@ -29,3 +29,7 @@ void Platform::setup_irq_mode(unsigned irq_number, unsigned trigger,
bool Platform::get_msi_params(const addr_t mmconf, addr_t &address,
addr_t &data, unsigned &irq_number) {
return false; }
+
+
+Board::Serial::Serial(addr_t, size_t, unsigned baudrate)
+:X86_uart(Bios_data_area::singleton()->serial_port(), 0, baudrate) {}
diff --git a/repos/base-hw/src/core/spec/x86_64/serial.h b/repos/base-hw/src/core/spec/x86_64/serial.h
deleted file mode 100644
index d9d1436169..0000000000
--- a/repos/base-hw/src/core/spec/x86_64/serial.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Stefan Kalkowski
- * \date 2012-10-24
- */
-
-/*
- * Copyright (C) 2012-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__X86_64__SERIAL_H_
-#define _CORE__SPEC__X86_64__SERIAL_H_
-
-/* Genode includes */
-#include
-#include
-
-namespace Genode { class Serial; }
-
-/**
- * Serial output driver for core
- */
-class Genode::Serial : public X86_uart
-{
- private:
-
- enum { CLOCK_UNUSED = 0 };
-
- public:
-
- Serial(unsigned baud_rate)
- :
- X86_uart(Bios_data_area::singleton()->serial_port(),
- CLOCK_UNUSED, baud_rate)
- { }
-};
-
-#endif /* _CORE__SPEC__X86_64__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/xilinx_uartps_0/serial.h b/repos/base-hw/src/core/spec/xilinx_uartps_0/serial.h
deleted file mode 100644
index ffec6da028..0000000000
--- a/repos/base-hw/src/core/spec/xilinx_uartps_0/serial.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * \brief Serial output driver for core
- * \author Johannes Schlatow
- * \date 2014-12-15
- */
-
-/*
- * Copyright (C) 2014-2017 Genode Labs GmbH
- *
- * This file is part of the Genode OS framework, which is distributed
- * under the terms of the GNU Affero General Public License version 3.
- */
-
-#ifndef _CORE__SPEC__XILINX_UARTPS_0__SERIAL_H_
-#define _CORE__SPEC__XILINX_UARTPS_0__SERIAL_H_
-
-/* core includes */
-#include
-#include
-
-/* Genode includes */
-#include
-
-namespace Genode { class Serial; }
-
-/**
- * Serial output driver for core
- */
-class Genode::Serial : public Xilinx_uart
-{
- public:
-
- /**
- * Constructor
- *
- * \param baud_rate targeted transfer baud-rate
- */
- Serial(unsigned const baud_rate)
- :
- Xilinx_uart(Platform::mmio_to_virt(Board::UART_0_MMIO_BASE),
- Board::UART_CLOCK, baud_rate)
- { }
-};
-
-#endif /* _CORE__SPEC__XILINX_UARTPS_0__SERIAL_H_ */
diff --git a/repos/base-hw/src/core/spec/zynq_qemu/board.h b/repos/base-hw/src/core/spec/zynq_qemu/board.h
index 65068d7342..6adfc82f76 100644
--- a/repos/base-hw/src/core/spec/zynq_qemu/board.h
+++ b/repos/base-hw/src/core/spec/zynq_qemu/board.h
@@ -18,6 +18,7 @@
/* base includes */
#include
+#include
#include
#include
@@ -26,6 +27,11 @@ namespace Board {
using namespace Zynq_qemu;
using Cpu_mmio = Hw::Cortex_a9_mmio;
using L2_cache = Hw::Pl310;
+ using Serial = Genode::Xilinx_uart;
+
+ enum {
+ UART_BASE = UART_0_MMIO_BASE,
+ };
static constexpr bool SMP = true;
diff --git a/repos/base/mk/spec/exynos5.mk b/repos/base/mk/spec/exynos5.mk
index 8152be41d4..694d34bb23 100644
--- a/repos/base/mk/spec/exynos5.mk
+++ b/repos/base/mk/spec/exynos5.mk
@@ -5,11 +5,10 @@
#
# denote specs that are fullfilled by this spec
-SPECS += exynos cortex_a15 framebuffer usb
+SPECS += cortex_a15 framebuffer usb
# add repository relative paths
REP_INC_DIR += include/spec/exynos5
-REP_INC_DIR += include/spec/exynos
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a15.mk
diff --git a/repos/base/mk/spec/imx53.mk b/repos/base/mk/spec/imx53.mk
index 74c19a94fa..c0d647a9ba 100644
--- a/repos/base/mk/spec/imx53.mk
+++ b/repos/base/mk/spec/imx53.mk
@@ -5,11 +5,10 @@
#
# denote wich specs are also fullfilled by this spec
-SPECS += cortex_a8 imx gpio framebuffer
+SPECS += cortex_a8 gpio framebuffer
# add repository relative include paths
REP_INC_DIR += include/spec/imx53
-REP_INC_DIR += include/spec/imx
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a8.mk
diff --git a/repos/base/mk/spec/imx6.mk b/repos/base/mk/spec/imx6.mk
index a85cdb4158..cff68f5238 100644
--- a/repos/base/mk/spec/imx6.mk
+++ b/repos/base/mk/spec/imx6.mk
@@ -7,11 +7,10 @@
#
# denote wich specs are also fullfilled by this spec
-SPECS += cortex_a9 imx
+SPECS += cortex_a9
# add repository relative include paths
REP_INC_DIR += include/spec/imx6
-REP_INC_DIR += include/spec/imx
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a9.mk
diff --git a/repos/base/mk/spec/odroid_x2.mk b/repos/base/mk/spec/odroid_x2.mk
index 24cc06b51d..3edd01cf2f 100644
--- a/repos/base/mk/spec/odroid_x2.mk
+++ b/repos/base/mk/spec/odroid_x2.mk
@@ -7,12 +7,11 @@
#
# denote specs that are fullfilled by this spec
-SPECS += exynos exynos4 cortex_a9 usb framebuffer gpio
+SPECS += exynos4 cortex_a9 usb framebuffer gpio
# add repository relative paths
REP_INC_DIR += include/spec/odroid_x2
REP_INC_DIR += include/spec/exynos4
-REP_INC_DIR += include/spec/exynos
# include implied specs
include $(BASE_DIR)/mk/spec/cortex_a9.mk
diff --git a/repos/base/mk/spec/panda.mk b/repos/base/mk/spec/panda.mk
index aaca51c817..ab98946ce0 100644
--- a/repos/base/mk/spec/panda.mk
+++ b/repos/base/mk/spec/panda.mk
@@ -1,7 +1,7 @@
#
# Enable peripherals of the platform
#
-SPECS += omap4 usb cortex_a9 tl16c750 panda gpio framebuffer
+SPECS += omap4 usb cortex_a9 panda gpio framebuffer
#
# Pull in CPU specifics
@@ -14,5 +14,4 @@ SPECS += arm_v7a
REP_INC_DIR += include/spec/panda
include $(BASE_DIR)/mk/spec/cortex_a9.mk
-include $(BASE_DIR)/mk/spec/tl16c750.mk
include $(BASE_DIR)/mk/spec/arm_v7a.mk
diff --git a/repos/base/mk/spec/pbxa9.mk b/repos/base/mk/spec/pbxa9.mk
index 54ae754fb9..4fa3ee9c54 100644
--- a/repos/base/mk/spec/pbxa9.mk
+++ b/repos/base/mk/spec/pbxa9.mk
@@ -1,7 +1,7 @@
#
# Enable peripherals of the platform
#
-SPECS += pl050 pl11x ps2 pl180 lan9118 pl011 framebuffer
+SPECS += pl050 pl11x ps2 pl180 lan9118 framebuffer
#
# Pull in CPU specifics
@@ -14,4 +14,3 @@ SPECS += cortex_a9
REP_INC_DIR += include/spec/pbxa9
include $(BASE_DIR)/mk/spec/cortex_a9.mk
-include $(BASE_DIR)/mk/spec/pl011.mk
diff --git a/repos/base/mk/spec/pl011.mk b/repos/base/mk/spec/pl011.mk
deleted file mode 100644
index 8ff6c0180d..0000000000
--- a/repos/base/mk/spec/pl011.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# \brief Build-system configurations specifically for the ARM PL011
-# \author Martin Stein
-# \date 2011-12-20
-#
-
-# add repository relative include paths
-REP_INC_DIR += include/spec/pl011
-
diff --git a/repos/base/mk/spec/rpi.mk b/repos/base/mk/spec/rpi.mk
index e1b82818ab..b9dc94055b 100644
--- a/repos/base/mk/spec/rpi.mk
+++ b/repos/base/mk/spec/rpi.mk
@@ -12,4 +12,3 @@ REP_INC_DIR += include/spec/rpi
# include implied specs
include $(BASE_DIR)/mk/spec/arm_v6.mk
-include $(BASE_DIR)/mk/spec/pl011.mk
diff --git a/repos/base/mk/spec/tl16c750.mk b/repos/base/mk/spec/tl16c750.mk
deleted file mode 100644
index ebeedec51e..0000000000
--- a/repos/base/mk/spec/tl16c750.mk
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# \brief Build-system configurations specifically for the TL16C750
-# \author Martin Stein
-# \date 2011-12-20
-#
-
-# add repository relative include paths
-REP_INC_DIR += include/spec/tl16c750
-
diff --git a/repos/base/mk/spec/zynq_qemu.mk b/repos/base/mk/spec/zynq_qemu.mk
index f119a39f1b..75ee033f84 100644
--- a/repos/base/mk/spec/zynq_qemu.mk
+++ b/repos/base/mk/spec/zynq_qemu.mk
@@ -4,6 +4,5 @@
SPECS += zynq cadence_gem
REP_INC_DIR += include/spec/zynq_qemu
-REP_INC_DIR += include/spec/xilinx
include $(BASE_DIR)/mk/spec/zynq.mk