From: Stefan Huber <stefan.hu...@oth-regensburg.de> add necessary files for developing tiny-demo inmate. Consists of modified copies from x86/arm.
Signed-off-by: Stefan Huber <stefan.hu...@oth-regensburg.de> Signed-off-by: Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> --- .gitignore | 1 + inmates/demos/riscv/Makefile | 19 ++++ inmates/demos/riscv/tiny-demo.c | 19 ++++ inmates/lib/include/inmate_common.h | 1 + inmates/lib/riscv/Makefile | 46 ++++++++ inmates/lib/riscv/Makefile.lib | 64 ++++++++++++ inmates/lib/riscv/header.S | 44 ++++++++ inmates/lib/riscv/include/inmate.h | 157 ++++++++++++++++++++++++++++ inmates/lib/riscv/inmate.lds.S | 74 +++++++++++++ inmates/lib/riscv/printk.c | 61 +++++++++++ inmates/lib/riscv/setup.c | 43 ++++++++ inmates/lib/riscv/uart.c | 47 +++++++++ 12 files changed, 576 insertions(+) create mode 100644 inmates/demos/riscv/tiny-demo.c create mode 100644 inmates/lib/riscv/Makefile.lib create mode 100644 inmates/lib/riscv/header.S create mode 100644 inmates/lib/riscv/include/inmate.h create mode 100644 inmates/lib/riscv/inmate.lds.S create mode 100644 inmates/lib/riscv/printk.c create mode 100644 inmates/lib/riscv/setup.c create mode 100644 inmates/lib/riscv/uart.c diff --git a/.gitignore b/.gitignore index 245733cb..80224289 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ include/jailhouse/config.h hypervisor/hypervisor.lds inmates/lib/arm/inmate.lds inmates/lib/arm64/inmate.lds +inmates/lib/riscv/inmate.lds pyjailhouse/pci_defs.py tools/demos/cache-timings tools/demos/ivshmem-demo diff --git a/inmates/demos/riscv/Makefile b/inmates/demos/riscv/Makefile index e69de29b..2f0bac84 100644 --- a/inmates/demos/riscv/Makefile +++ b/inmates/demos/riscv/Makefile @@ -0,0 +1,19 @@ +# +# Jailhouse, a Linux-based partitioning hypervisor +# +# Copyright (c) Siemens AG, 2013, 2014 +# +# Authors: +# Jan Kiszka <jan.kis...@siemens.com> +# +# This work is licensed under the terms of the GNU GPL, version 2. See +# the COPYING file in the top-level directory. +# + +include $(INMATES_LIB)/Makefile.lib + +INMATES := tiny-demo.bin + +tiny-demo-y := tiny-demo.o + +$(eval $(call DECLARE_TARGETS,$(INMATES))) diff --git a/inmates/demos/riscv/tiny-demo.c b/inmates/demos/riscv/tiny-demo.c new file mode 100644 index 00000000..e4af2642 --- /dev/null +++ b/inmates/demos/riscv/tiny-demo.c @@ -0,0 +1,19 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Copyright (c) OTH Regensburg, 2022 + * + * Authors: + * Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> + * Stefan Huber <stefan.hu...@oth-regensburg.de> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + */ + +#include <inmate.h> + +void inmate_main(void) +{ + printk("Hello from this tiny cell!\n"); +} diff --git a/inmates/lib/include/inmate_common.h b/inmates/lib/include/inmate_common.h index 1c20a0af..8f474264 100644 --- a/inmates/lib/include/inmate_common.h +++ b/inmates/lib/include/inmate_common.h @@ -72,6 +72,7 @@ #define MSIX_CTRL_FMASK 0x4000 #ifndef __ASSEMBLY__ + typedef s8 __s8; typedef u8 __u8; diff --git a/inmates/lib/riscv/Makefile b/inmates/lib/riscv/Makefile index e69de29b..9ff57721 100644 --- a/inmates/lib/riscv/Makefile +++ b/inmates/lib/riscv/Makefile @@ -0,0 +1,46 @@ +# +# Jailhouse, a Linux-based partitioning hypervisor +# +# Copyright (c) Siemens AG, 2015, 2016 +# +# Authors: +# Jan Kiszka <jan.kis...@siemens.com> +# +# This work is licensed under the terms of the GNU GPL, version 2. See +# the COPYING file in the top-level directory. +# +# Alternatively, you can use or redistribute this file under the following +# BSD license: +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. 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. +# +# 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 HOLDER 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 $(INMATES_LIB)/Makefile.lib + +always-y := lib.a inmate.lds + +lib-y := $(common-objs-y) +lib-y += header.o printk.o setup.o uart.o + +lib-y += ../cmdline.o ../printk.o ../setup.o ../string.o ../uart-8250.o diff --git a/inmates/lib/riscv/Makefile.lib b/inmates/lib/riscv/Makefile.lib new file mode 100644 index 00000000..9a87d8ff --- /dev/null +++ b/inmates/lib/riscv/Makefile.lib @@ -0,0 +1,64 @@ +# +# Jailhouse, a Linux-based partitioning hypervisor +# +# Copyright (c) Siemens AG, 2013, 2014 +# +# Authors: +# Jan Kiszka <jan.kis...@siemens.com> +# +# This work is licensed under the terms of the GNU GPL, version 2. See +# the COPYING file in the top-level directory. +# +# Alternatively, you can use or redistribute this file under the following +# BSD license: +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# 2. 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. +# +# 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 HOLDER 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 $(ALWAYS_COMPAT_MK) + +-include $(GEN_CONFIG_MK) + +#KBUILD_CFLAGS += -m64 -mno-red-zone +LINUXINCLUDE += -I$(INMATES_LIB)/include + +define DECLARE_TARGETS = + _TARGETS = $(1) + always-y := $$(_TARGETS) + # $(NAME-y) NAME-linked.o NAME.bin + targets += $$(foreach t,$$(_TARGETS:.bin=-y),$$($$t)) \ + $$(_TARGETS:.bin=-linked.o) $$(_TARGETS) +endef + +# prevent deleting intermediate files which would cause rebuilds +.SECONDARY: $(addprefix $(obj)/,$(targets)) + +# obj/NAME-linked.o: ... obj/$(NAME-y) lib/lib[32].a +.SECONDEXPANSION: +$(obj)/%-linked.o: $(INMATES_LIB)/inmate.lds $$(addprefix $$(obj)/,$$($$*-y)) \ + $(INMATES_LIB)/$$(if $$($$*_32),lib32.a,lib.a) FORCE + $(call if_changed,ld) + +$(obj)/%.bin: $(obj)/%-linked.o FORCE + $(call if_changed,objcopy) diff --git a/inmates/lib/riscv/header.S b/inmates/lib/riscv/header.S new file mode 100644 index 00000000..3a12f51f --- /dev/null +++ b/inmates/lib/riscv/header.S @@ -0,0 +1,44 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Copyright (c) OTH Regensburg, 2022 + * + * Authors: + * Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Alternatively, you can use or redistribute this file under the following + * BSD license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 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 HOLDER 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. + */ + +.section ".boot", "ax" + + .globl __reset_entry +__reset_entry: + la sp, __stack_top + j c_entry diff --git a/inmates/lib/riscv/include/inmate.h b/inmates/lib/riscv/include/inmate.h new file mode 100644 index 00000000..dac9f146 --- /dev/null +++ b/inmates/lib/riscv/include/inmate.h @@ -0,0 +1,157 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Copyright (c) OTH Regensburg + * + * Authors: + * Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Alternatively, you can use or redistribute this file under the following + * BSD license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 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 HOLDER 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 _JAILHOUSE_INMATE_H +#define _JAILHOUSE_INMATE_H + +#define __stringify_1(x...) #x +#define __stringify(x...) __stringify_1(x) + +#define COMM_REGION_BASE 0x100000 + +#define PAGE_SIZE (4 * 1024ULL) + +typedef signed char s8; +typedef unsigned char u8; + +typedef signed short s16; +typedef unsigned short u16; + +typedef signed int s32; +typedef unsigned int u32; + +typedef signed long long s64; +typedef unsigned long long u64; + +#define SR_SIE 0x00000002UL + +#define csr_read(csr) \ +({ \ + register unsigned long __v; \ + __asm__ __volatile__ ("csrr %0, " __stringify(csr) \ + : "=r" (__v) : \ + : "memory"); \ + __v; \ +}) + +#define csr_write(csr, val) \ +({ \ + unsigned long __v = (unsigned long)(val); \ + __asm__ __volatile__ ("csrw " __stringify(csr) ", %0" \ + : : "rK" (__v) \ + : "memory"); \ +}) + +#define csr_clear(csr, val) \ +({ \ + unsigned long __v = (unsigned long)(val); \ + __asm__ __volatile__ ("csrc " __stringify(csr) ", %0" \ + : : "rK" (__v) \ + : "memory"); \ +}) + +#define csr_set(csr, val) \ +({ \ + unsigned long __v = (unsigned long)(val); \ + __asm__ __volatile__ ("csrs " __stringify(csr) ", %0" \ + : : "rK" (__v) \ + : "memory"); \ +}) + +static inline void disable_irqs(void) +{ + csr_clear(sstatus, SR_SIE); +} + +static inline void cpu_relax(void) +{ + int dummy; + + asm volatile ("div %0, %0, zero" : "=r"(dummy)); + asm volatile ("" ::: "memory"); +} + +static inline void __attribute__((noreturn)) halt(void) +{ + while (1) + asm volatile ("wfi" : : : "memory"); +} + +static inline u8 mmio_read8(void *address) +{ + return *(volatile u8 *)address; +} + +static inline u16 mmio_read16(void *address) +{ + return *(volatile u16 *)address; +} + +static inline u32 mmio_read32(void *address) +{ + return *(volatile u32 *)address; +} + +static inline u64 mmio_read64(void *address) +{ + return *(volatile u64 *)address; +} + +static inline void mmio_write8(void *address, u8 value) +{ + *(volatile u8 *)address = value; +} + +static inline void mmio_write16(void *address, u16 value) +{ + *(volatile u16 *)address = value; +} + +static inline void mmio_write32(void *address, u32 value) +{ + *(volatile u32 *)address = value; +} + +static inline void mmio_write64(void *address, u64 value) +{ + *(volatile u64 *)address = value; +} + +#include <inmate_common.h> + +#endif /* !_JAILHOUSE_INMATE_H */ diff --git a/inmates/lib/riscv/inmate.lds.S b/inmates/lib/riscv/inmate.lds.S new file mode 100644 index 00000000..cb6e7a76 --- /dev/null +++ b/inmates/lib/riscv/inmate.lds.S @@ -0,0 +1,74 @@ +/* + * Jailhouse RISC-V support + * + * Copyright (C) 2022 OTH Regensburg + * + * Authors: + * Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Alternatively, you can use or redistribute this file under the following + * BSD license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 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 HOLDER 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 <inmate_common.h> + +SECTIONS { + . = CONFIG_INMATE_BASE; + .boot : { *(.boot) } + + . = CONFIG_INMATE_BASE + 0x100; + .cmdline : { + *(.cmdline) + BYTE(0); /* empty string in case no buffer is provided */ + } + + bss_start = .; + .bss : { + *(.bss) + } + + . = ALIGN(4); + .text : { + *(.text) + } + + .rodata : { + *(.rodata) + } + + .data : { + *(.data) + } + + . = ALIGN(4096); + . = . + 0x1000; + __stack_top = .; +} + +ENTRY(__reset_entry) diff --git a/inmates/lib/riscv/printk.c b/inmates/lib/riscv/printk.c new file mode 100644 index 00000000..5eb31537 --- /dev/null +++ b/inmates/lib/riscv/printk.c @@ -0,0 +1,61 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Copyright (c) Siemens AG, 2013 + * + * Authors: + * Jan Kiszka <jan.kis...@siemens.com> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Alternatively, you can use or redistribute this file under the following + * BSD license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 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 HOLDER 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 <inmate.h> +#include <uart.h> + +static void reg_out_mmio8(struct uart_chip *chip, unsigned int reg, u32 value) +{ + mmio_write8(chip->base + reg, value); +} + +static u32 reg_in_mmio8(struct uart_chip *chip, unsigned int reg) +{ + return mmio_read8(chip->base + reg); +} + +void arch_console_init(struct uart_chip *chip) +{ + struct jailhouse_console *console = &comm_region->console; + + if (cmdline_parse_bool("con-regdist-1", + CON_USES_REGDIST_1(console->flags))) { + chip->reg_out = reg_out_mmio8; + chip->reg_in = reg_in_mmio8; + } +} diff --git a/inmates/lib/riscv/setup.c b/inmates/lib/riscv/setup.c new file mode 100644 index 00000000..705c5630 --- /dev/null +++ b/inmates/lib/riscv/setup.c @@ -0,0 +1,43 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Copyright (c) OTH Regensburg, 2012 + * + * Authors: + * Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Alternatively, you can use or redistribute this file under the following + * BSD license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 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 HOLDER 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 <inmate.h> + +void arch_init_early(void) +{ +} diff --git a/inmates/lib/riscv/uart.c b/inmates/lib/riscv/uart.c new file mode 100644 index 00000000..4c394dee --- /dev/null +++ b/inmates/lib/riscv/uart.c @@ -0,0 +1,47 @@ +/* + * Jailhouse, a Linux-based partitioning hypervisor + * + * Copyright (c) OTH Regensburg, 2018-2022 + * + * Authors: + * Ralf Ramsauer <ralf.ramsa...@oth-regensburg.de> + * + * This work is licensed under the terms of the GNU GPL, version 2. See + * the COPYING file in the top-level directory. + * + * Alternatively, you can use or redistribute this file under the following + * BSD license: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. 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. + * + * 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 HOLDER 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 <inmate.h> +#include <uart.h> + +DECLARE_UART(8250); + +struct uart_chip *uart_array[] = { + &UART_OPS_NAME(8250), + NULL +}; -- 2.36.1 -- You received this message because you are subscribed to the Google Groups "Jailhouse" group. To unsubscribe from this group and stop receiving emails from it, send an email to jailhouse-dev+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/jailhouse-dev/20220627132905.4338-31-ralf.ramsauer%40oth-regensburg.de.