mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-22 06:57:51 +00:00
hw: skeleton for building x86_64_muen
The hw_x86_64_muen platform is a x86/64 base-hw kernel which runs as isolated subject (guest) on the Muen Separation Kernel (SK) [1]. The platform is implemented as an extension to hw_x86_64 replacing the PIC and timer drivers with paravirtualized variants. The skeleton contains a dummy PIC and timer implementation for now. [1] - http://muen.sk
This commit is contained in:
parent
3420cc0b71
commit
dcd20f1566
3
repos/base-hw/lib/mk/x86_64_muen/base-common.mk
Normal file
3
repos/base-hw/lib/mk/x86_64_muen/base-common.mk
Normal file
@ -0,0 +1,3 @@
|
||||
include $(REP_DIR)/lib/mk/base-common.inc
|
||||
|
||||
vpath kernel/interface.cc $(REP_DIR)/src/base/x86_64
|
34
repos/base-hw/lib/mk/x86_64_muen/core.mk
Normal file
34
repos/base-hw/lib/mk/x86_64_muen/core.mk
Normal file
@ -0,0 +1,34 @@
|
||||
#
|
||||
# \brief Build config for Genodes core process
|
||||
# \author Stefan Kalkowski
|
||||
# \author Martin Stein
|
||||
# \date 2012-10-04
|
||||
#
|
||||
|
||||
# add include paths
|
||||
INC_DIR += $(REP_DIR)/src/core/include/spec/x86_64_muen
|
||||
INC_DIR += $(REP_DIR)/src/core/include/spec/x86_64
|
||||
INC_DIR += $(REP_DIR)/src/core/include/spec/x86
|
||||
|
||||
# add assembly sources
|
||||
SRC_S += spec/x86_64/mode_transition.s
|
||||
SRC_S += spec/x86_64/kernel/crt0.s
|
||||
SRC_S += spec/x86_64/kernel/crt0_translation_table.s
|
||||
SRC_S += spec/x86_64/crt0.s
|
||||
|
||||
# add C++ sources
|
||||
SRC_CC += spec/x86_64/kernel/thread_base.cc
|
||||
SRC_CC += spec/x86_64/platform_support.cc
|
||||
SRC_CC += spec/x86_64/idt.cc
|
||||
SRC_CC += spec/x86_64/tss.cc
|
||||
SRC_CC += spec/x86/platform_support.cc
|
||||
SRC_CC += spec/x86/kernel/thread.cc
|
||||
SRC_CC += spec/x86/kernel/cpu.cc
|
||||
SRC_CC += spec/x86/kernel/pd.cc
|
||||
SRC_CC += spec/x86/cpu.cc
|
||||
SRC_CC += x86/io_port_session_component.cc
|
||||
SRC_CC += x86/platform_services.cc
|
||||
SRC_CC += kernel/vm_thread.cc
|
||||
|
||||
# include less specific configuration
|
||||
include $(REP_DIR)/lib/mk/core.inc
|
19
repos/base-hw/mk/spec-hw_x86_64_muen.mk
Normal file
19
repos/base-hw/mk/spec-hw_x86_64_muen.mk
Normal file
@ -0,0 +1,19 @@
|
||||
#
|
||||
# \brief Build configs that are specific to base-hw/x86_64 on the Muen SK
|
||||
# \author Martin Stein
|
||||
# \date 2011-12-20
|
||||
#
|
||||
|
||||
# denote wich specs are also fullfilled by this spec
|
||||
SPECS += hw x86_64_muen
|
||||
SPECS += pci ps2 vesa framebuffer
|
||||
|
||||
# configure multiprocessor mode
|
||||
NR_OF_CPUS = 1
|
||||
|
||||
# set address where to link text segment at
|
||||
LD_TEXT_ADDR ?= 0x200000
|
||||
|
||||
# include implied specs
|
||||
include $(call select_from_repositories,mk/spec-hw.mk)
|
||||
include $(call select_from_repositories,mk/spec-x86_64.mk)
|
56
repos/base-hw/src/core/include/spec/x86_64_muen/pic.h
Normal file
56
repos/base-hw/src/core/include/spec/x86_64_muen/pic.h
Normal file
@ -0,0 +1,56 @@
|
||||
/*
|
||||
* \brief Programmable interrupt controller for core
|
||||
* \author Reto Buerki
|
||||
* \date 2015-04-14
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2015 Genode Labs GmbH
|
||||
*
|
||||
* This file is part of the Genode OS framework, which is distributed
|
||||
* under the terms of the GNU General Public License version 2.
|
||||
*/
|
||||
|
||||
#ifndef _PIC_H_
|
||||
#define _PIC_H_
|
||||
|
||||
namespace Genode
|
||||
{
|
||||
/**
|
||||
* Programmable interrupt controller for core
|
||||
*/
|
||||
class Pic;
|
||||
}
|
||||
|
||||
class Genode::Pic
|
||||
{
|
||||
public:
|
||||
|
||||
enum {
|
||||
/*
|
||||
* FIXME: dummy ipi value on non-SMP platform, should be removed
|
||||
* when SMP is an aspect of CPUs only compiled where
|
||||
* necessary
|
||||
*/
|
||||
IPI = 255,
|
||||
NR_OF_IRQ = 256,
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Dummies
|
||||
*/
|
||||
Pic() { }
|
||||
bool take_request(unsigned &irq) { return false; }
|
||||
void finish_request() { }
|
||||
void unmask(unsigned const i, unsigned) { }
|
||||
void mask(unsigned const i) { }
|
||||
void mask() { }
|
||||
void init_cpu_local() { }
|
||||
bool is_ip_interrupt(unsigned, unsigned) { return false; }
|
||||
void trigger_ip_interrupt(unsigned) { }
|
||||
};
|
||||
|
||||
namespace Kernel { class Pic : public Genode::Pic { }; }
|
||||
|
||||
#endif /* _PIC_H_ */
|
46
repos/base-hw/src/core/include/spec/x86_64_muen/timer.h
Normal file
46
repos/base-hw/src/core/include/spec/x86_64_muen/timer.h
Normal file
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* \brief Timer driver for core
|
||||
* \author Reto Buerki
|
||||
* \date 2015-04-14
|
||||
*/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2015 Genode Labs GmbH
|
||||
*
|
||||
* This file is part of the Genode OS framework, which is distributed
|
||||
* under the terms of the GNU General Public License version 2.
|
||||
*/
|
||||
|
||||
#ifndef _TIMER_H_
|
||||
#define _TIMER_H_
|
||||
|
||||
#include <base/stdint.h>
|
||||
|
||||
namespace Genode
|
||||
{
|
||||
/**
|
||||
* Timer driver for core on Muen
|
||||
*/
|
||||
class Timer;
|
||||
}
|
||||
|
||||
class Genode::Timer
|
||||
{
|
||||
public:
|
||||
|
||||
Timer() { }
|
||||
|
||||
static unsigned interrupt_id(int) { return 0; }
|
||||
|
||||
inline void start_one_shot(uint32_t const tics, unsigned) { }
|
||||
|
||||
uint32_t ms_to_tics(unsigned const ms) { return 0; }
|
||||
|
||||
unsigned value(unsigned) { return 0; }
|
||||
|
||||
static void disable_pit(void) { }
|
||||
};
|
||||
|
||||
namespace Kernel { class Timer : public Genode::Timer { }; }
|
||||
|
||||
#endif /* _TIMER_H_ */
|
9
tool/builddir/etc/build.conf.hw_x86_64_muen
Normal file
9
tool/builddir/etc/build.conf.hw_x86_64_muen
Normal file
@ -0,0 +1,9 @@
|
||||
REPOSITORIES += $(GENODE_DIR)/repos/base-hw
|
||||
|
||||
##
|
||||
## Kernel-specific run tool configuration
|
||||
##
|
||||
|
||||
RUN_OPT = --include boot_dir/hw \
|
||||
--include power_on/qemu --include log/qemu --include image/iso
|
||||
|
Loading…
Reference in New Issue
Block a user