[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 4/9] build: Move architecture headers to family/architecture folder
I would prefer a description that says that this patch reflects the CPU family scheme also to the Unikrafts base include folder. On 15.03.2018 04:39, Wei Chen wrote: As we have introduced the UK_FAMILY in previous patch. We have to place the architecture specified headers to arch/family/<actual architecture>: unikraft/include/uk/arch----arm----arm32 | |-----arm64 | |-----x86----x86 |-----x86_64 And, because of arch/*.h are wrappers of actual architecture headers, we have to modify these headers to include files from new folder. Signed-off-by: Wei Chen <Wei.Chen@xxxxxxx> --- include/uk/arch/arm/arm32/atomic.h | 64 ++++++++++++++++++++++++++++++ include/uk/arch/arm/arm32/intsizes.h | 45 +++++++++++++++++++++ include/uk/arch/arm/arm32/lcpu.h | 59 ++++++++++++++++++++++++++++ include/uk/arch/arm/arm32/limits.h | 45 +++++++++++++++++++++ include/uk/arch/arm/arm32/types.h | 35 +++++++++++++++++ include/uk/arch/arm/atomic.h | 64 ------------------------------ include/uk/arch/arm/intsizes.h | 45 --------------------- include/uk/arch/arm/lcpu.h | 59 ---------------------------- include/uk/arch/arm/limits.h | 45 --------------------- include/uk/arch/arm/types.h | 35 ----------------- include/uk/arch/atomic.h | 8 ++-- include/uk/arch/lcpu.h | 8 ++-- include/uk/arch/limits.h | 16 ++++---- include/uk/arch/types.h | 16 ++++---- include/uk/arch/x86/x86_64/atomic.h | 45 +++++++++++++++++++++ include/uk/arch/x86/x86_64/intsizes.h | 45 +++++++++++++++++++++ include/uk/arch/x86/x86_64/lcpu.h | 73 +++++++++++++++++++++++++++++++++++ include/uk/arch/x86/x86_64/limits.h | 46 ++++++++++++++++++++++ include/uk/arch/x86/x86_64/types.h | 38 ++++++++++++++++++ include/uk/arch/x86_64/atomic.h | 45 --------------------- include/uk/arch/x86_64/intsizes.h | 45 --------------------- include/uk/arch/x86_64/lcpu.h | 73 ----------------------------------- include/uk/arch/x86_64/limits.h | 46 ---------------------- include/uk/arch/x86_64/types.h | 38 ------------------ 24 files changed, 519 insertions(+), 519 deletions(-) create mode 100644 include/uk/arch/arm/arm32/atomic.h create mode 100644 include/uk/arch/arm/arm32/intsizes.h create mode 100644 include/uk/arch/arm/arm32/lcpu.h create mode 100644 include/uk/arch/arm/arm32/limits.h create mode 100644 include/uk/arch/arm/arm32/types.h delete mode 100644 include/uk/arch/arm/atomic.h delete mode 100644 include/uk/arch/arm/intsizes.h delete mode 100644 include/uk/arch/arm/lcpu.h delete mode 100644 include/uk/arch/arm/limits.h delete mode 100644 include/uk/arch/arm/types.h create mode 100644 include/uk/arch/x86/x86_64/atomic.h create mode 100644 include/uk/arch/x86/x86_64/intsizes.h create mode 100644 include/uk/arch/x86/x86_64/lcpu.h create mode 100644 include/uk/arch/x86/x86_64/limits.h create mode 100644 include/uk/arch/x86/x86_64/types.h delete mode 100644 include/uk/arch/x86_64/atomic.h delete mode 100644 include/uk/arch/x86_64/intsizes.h delete mode 100644 include/uk/arch/x86_64/lcpu.h delete mode 100644 include/uk/arch/x86_64/limits.h delete mode 100644 include/uk/arch/x86_64/types.h diff --git a/include/uk/arch/arm/arm32/atomic.h b/include/uk/arch/arm/arm32/atomic.h new file mode 100644 index 0000000..9d54eea --- /dev/null +++ b/include/uk/arch/arm/arm32/atomic.h @@ -0,0 +1,64 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Port from Mini-OS: include/arm/os.h + */ +/* + * Copyright (c) 2009 Citrix Systems, Inc. All rights reserved. + * + * 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 AUTHOR 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 AUTHOR 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 __UKARCH_ATOMIC_H__ +#error Do not include this header directly +#endif + +/** + * ukarch_find_lsbit - find first (lowest) set bit in word. + * @word: The word to search + * + * Undefined if no bit exists, so code should check against 0 first. + */ +static inline unsigned long ukarch_find_lsbit(unsigned long word) +{ + int clz; + + /* xxxxx10000 = word + * xxxxx01111 = word - 1 + * 0000011111 = word ^ (word - 1) + * 4 = 31 - clz(word ^ (word - 1)) + */ + + __asm__("sub r0, %[word], #1\n" + "eor r0, r0, %[word]\n" + "clz %[clz], r0\n" + : + /* Outputs: */ + [clz] "=r"(clz) + : + /* Inputs: */ + [word] "r"(word) + : + /* Clobbers: */ + "r0"); + + return 31 - clz; +} diff --git a/include/uk/arch/arm/arm32/intsizes.h b/include/uk/arch/arm/arm32/intsizes.h new file mode 100644 index 0000000..5b36c4b --- /dev/null +++ b/include/uk/arch/arm/arm32/intsizes.h @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Authors: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> + * + * + * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. All rights reserved. + * + * 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. + * 3. Neither the name of the copyright holder 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 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. + * + * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. + */ + +#if ((!defined __UKARCH_TYPES_H__) && (!defined __UKARCH_LIMITS_H__)) +#error Do not include this header directly +#endif + +#define __C_IS_8 /* char */ +#define __S_IS_16 /* short */ +#define __I_IS_32 /* int */ +#define __L_IS_32 /* long */ +#define __LL_IS_64 /* long long */ +#define __PTR_IS_32 /* void * */ diff --git a/include/uk/arch/arm/arm32/lcpu.h b/include/uk/arch/arm/arm32/lcpu.h new file mode 100644 index 0000000..cdeffc3 --- /dev/null +++ b/include/uk/arch/arm/arm32/lcpu.h @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Copyright (c) 2009, Citrix Systems, Inc. + * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. + * + * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LCPU_H__ +#error Do not include this header directly +#endif + +struct __regs { + unsigned long r0; + unsigned long r1; + unsigned long r2; + unsigned long r3; + unsigned long r4; + unsigned long r5; + unsigned long r6; + unsigned long r7; + unsigned long r8; + unsigned long r9; + unsigned long r10; + unsigned long r11; + unsigned long r12; +}; + +/* We probably only need "dmb" here, but we'll start by being paranoid. */ +#ifndef mb +#define mb() __asm__("dsb" : : : "memory") +#endif + +#ifndef rmb +#define rmb() __asm__("dsb" : : : "memory") +#endif + +#ifndef wmb +#define wmb() __asm__("dsb" : : : "memory") +#endif diff --git a/include/uk/arch/arm/arm32/limits.h b/include/uk/arch/arm/arm32/limits.h new file mode 100644 index 0000000..085761c --- /dev/null +++ b/include/uk/arch/arm/arm32/limits.h @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Copyright (c) 2009, Citrix Systems, Inc. + * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. + * + * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LIMITS_H__ +#error Do not include this header directly +#endif + +#define __PAGE_SHIFT 12 + +#ifdef __ASSEMBLY__ +#define __PAGE_SIZE (1 << __PAGE_SHIFT) +#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) +#else +#define __PAGE_SIZE (1ULL << __PAGE_SHIFT) +#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) +#endif + +#define __STACK_SIZE_PAGE_ORDER 2 +#define __STACK_SIZE (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER)) + +#define __WORDSIZE 32 diff --git a/include/uk/arch/arm/arm32/types.h b/include/uk/arch/arm/arm32/types.h new file mode 100644 index 0000000..e745c0c --- /dev/null +++ b/include/uk/arch/arm/arm32/types.h @@ -0,0 +1,35 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright (c) 2002-2003, K A Fraser & R Neugebauer + * Copyright (c) 2005, Grzegorz Milos, Intel Research Cambridge + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef __UKARCH_TYPES_H__ +#error Do not include this header directly +#endif + +#ifndef __ASSEMBLY__ + +struct __pte { unsigned long pte_low, pte_high; }; +#define npte(x) ({ unsigned long long _x = (x); \ + ((pte_t) {(unsigned long)(_x), (unsigned long)(_x>>32)}); }) + +#endif /* !__ASSEMBLY__ */ diff --git a/include/uk/arch/arm/atomic.h b/include/uk/arch/arm/atomic.h deleted file mode 100644 index 9d54eea..0000000 --- a/include/uk/arch/arm/atomic.h +++ /dev/null @@ -1,64 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ -/* - * Port from Mini-OS: include/arm/os.h - */ -/* - * Copyright (c) 2009 Citrix Systems, Inc. All rights reserved. - * - * 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 AUTHOR 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 AUTHOR 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 __UKARCH_ATOMIC_H__ -#error Do not include this header directly -#endif - -/** - * ukarch_find_lsbit - find first (lowest) set bit in word. - * @word: The word to search - * - * Undefined if no bit exists, so code should check against 0 first. - */ -static inline unsigned long ukarch_find_lsbit(unsigned long word) -{ - int clz; - - /* xxxxx10000 = word - * xxxxx01111 = word - 1 - * 0000011111 = word ^ (word - 1) - * 4 = 31 - clz(word ^ (word - 1)) - */ - - __asm__("sub r0, %[word], #1\n" - "eor r0, r0, %[word]\n" - "clz %[clz], r0\n" - : - /* Outputs: */ - [clz] "=r"(clz) - : - /* Inputs: */ - [word] "r"(word) - : - /* Clobbers: */ - "r0"); - - return 31 - clz; -} diff --git a/include/uk/arch/arm/intsizes.h b/include/uk/arch/arm/intsizes.h deleted file mode 100644 index 5b36c4b..0000000 --- a/include/uk/arch/arm/intsizes.h +++ /dev/null @@ -1,45 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause */ -/* - * Authors: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> - * - * - * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. All rights reserved. - * - * 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. - * 3. Neither the name of the copyright holder 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 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. - * - * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. - */ - -#if ((!defined __UKARCH_TYPES_H__) && (!defined __UKARCH_LIMITS_H__)) -#error Do not include this header directly -#endif - -#define __C_IS_8 /* char */ -#define __S_IS_16 /* short */ -#define __I_IS_32 /* int */ -#define __L_IS_32 /* long */ -#define __LL_IS_64 /* long long */ -#define __PTR_IS_32 /* void * */ diff --git a/include/uk/arch/arm/lcpu.h b/include/uk/arch/arm/lcpu.h deleted file mode 100644 index cdeffc3..0000000 --- a/include/uk/arch/arm/lcpu.h +++ /dev/null @@ -1,59 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ -/* - * Copyright (c) 2009, Citrix Systems, Inc. - * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. - * - * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LCPU_H__ -#error Do not include this header directly -#endif - -struct __regs { - unsigned long r0; - unsigned long r1; - unsigned long r2; - unsigned long r3; - unsigned long r4; - unsigned long r5; - unsigned long r6; - unsigned long r7; - unsigned long r8; - unsigned long r9; - unsigned long r10; - unsigned long r11; - unsigned long r12; -}; - -/* We probably only need "dmb" here, but we'll start by being paranoid. */ -#ifndef mb -#define mb() __asm__("dsb" : : : "memory") -#endif - -#ifndef rmb -#define rmb() __asm__("dsb" : : : "memory") -#endif - -#ifndef wmb -#define wmb() __asm__("dsb" : : : "memory") -#endif diff --git a/include/uk/arch/arm/limits.h b/include/uk/arch/arm/limits.h deleted file mode 100644 index 085761c..0000000 --- a/include/uk/arch/arm/limits.h +++ /dev/null @@ -1,45 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ -/* - * Copyright (c) 2009, Citrix Systems, Inc. - * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. - * - * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LIMITS_H__ -#error Do not include this header directly -#endif - -#define __PAGE_SHIFT 12 - -#ifdef __ASSEMBLY__ -#define __PAGE_SIZE (1 << __PAGE_SHIFT) -#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) -#else -#define __PAGE_SIZE (1ULL << __PAGE_SHIFT) -#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) -#endif - -#define __STACK_SIZE_PAGE_ORDER 2 -#define __STACK_SIZE (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER)) - -#define __WORDSIZE 32 diff --git a/include/uk/arch/arm/types.h b/include/uk/arch/arm/types.h deleted file mode 100644 index e745c0c..0000000 --- a/include/uk/arch/arm/types.h +++ /dev/null @@ -1,35 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Copyright (c) 2002-2003, K A Fraser & R Neugebauer - * Copyright (c) 2005, Grzegorz Milos, Intel Research Cambridge - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#ifndef __UKARCH_TYPES_H__ -#error Do not include this header directly -#endif - -#ifndef __ASSEMBLY__ - -struct __pte { unsigned long pte_low, pte_high; }; -#define npte(x) ({ unsigned long long _x = (x); \ - ((pte_t) {(unsigned long)(_x), (unsigned long)(_x>>32)}); }) - -#endif /* !__ASSEMBLY__ */ diff --git a/include/uk/arch/atomic.h b/include/uk/arch/atomic.h index 331bd81..48a4a74 100644 --- a/include/uk/arch/atomic.h +++ b/include/uk/arch/atomic.h @@ -37,16 +37,16 @@ extern "C" { #endif#ifdef __X86_32__-#include <uk/arch/x86/atomic.h> +#include <uk/arch/x86/x86/atomic.h> #endif #ifdef __X86_64__ -#include <uk/arch/x86_64/atomic.h> +#include <uk/arch/x86/x86_64/atomic.h> #endif #ifdef __ARM_32__ -#include <uk/arch/arm/atomic.h> +#include <uk/arch/arm/arm32/atomic.h> #endif #ifdef __ARM_64__ -#include <uk/arch/arm64/atomic.h> +#include <uk/arch/arm/arm64/atomic.h> #endif/**diff --git a/include/uk/arch/lcpu.h b/include/uk/arch/lcpu.h index ea780f7..0604a92 100644 --- a/include/uk/arch/lcpu.h +++ b/include/uk/arch/lcpu.h @@ -43,16 +43,16 @@ extern "C" { #endif#ifdef __X86_32__-#include <uk/arch/x86/lcpu.h> +#include <uk/arch/x86/x86/lcpu.h> #endif #ifdef __X86_64__ -#include <uk/arch/x86_64/lcpu.h> +#include <uk/arch/x86/x86_64/lcpu.h> #endif #ifdef __ARM_32__ -#include <uk/arch/arm/lcpu.h> +#include <uk/arch/arm/arm32/lcpu.h> #endif #ifdef __ARM_64__ -#include <uk/arch/arm64/lcpu.h> +#include <uk/arch/arm/arm64/lcpu.h> #endif#ifndef likelydiff --git a/include/uk/arch/limits.h b/include/uk/arch/limits.h index 81694d9..7bcdc92 100644 --- a/include/uk/arch/limits.h +++ b/include/uk/arch/limits.h @@ -37,31 +37,31 @@ #define __UKARCH_LIMITS_H__#ifdef __X86_32__-#include <uk/arch/x86/limits.h> +#include <uk/arch/x86/x86/limits.h> #endif #ifdef __X86_64__ -#include <uk/arch/x86_64/limits.h> +#include <uk/arch/x86/x86_64/limits.h> #endif #ifdef __ARM_32__ -#include <uk/arch/arm/limits.h> +#include <uk/arch/arm/arm32/limits.h> #endif #ifdef __ARM_64__ -#include <uk/arch/arm64/limits.h> +#include <uk/arch/arm/arm64/limits.h> #endif#ifndef __ASSEMBLY__ #ifdef __X86_32__-#include <uk/arch/x86/intsizes.h> +#include <uk/arch/x86/x86/intsizes.h> #endif #ifdef __X86_64__ -#include <uk/arch/x86_64/intsizes.h> +#include <uk/arch/x86/x86_64/intsizes.h> #endif #ifdef __ARM_32__ -#include <uk/arch/arm/intsizes.h> +#include <uk/arch/arm/arm32/intsizes.h> #endif #ifdef __ARM_64__ -#include <uk/arch/arm64/intsizes.h> +#include <uk/arch/arm/arm64/intsizes.h> #endif#if (defined __C_IS_8)diff --git a/include/uk/arch/types.h b/include/uk/arch/types.h index e8d7726..d2c8ff9 100644 --- a/include/uk/arch/types.h +++ b/include/uk/arch/types.h @@ -41,20 +41,20 @@ extern "C" { #endif#ifdef __X86_32__-#include <uk/arch/x86/intsizes.h> -#include <uk/arch/x86/types.h> +#include <uk/arch/x86/x86/intsizes.h> +#include <uk/arch/x86/x86/types.h> #endif #ifdef __X86_64__ -#include <uk/arch/x86_64/intsizes.h> -#include <uk/arch/x86_64/types.h> +#include <uk/arch/x86/x86_64/intsizes.h> +#include <uk/arch/x86/x86_64/types.h> #endif #ifdef __ARM_32__ -#include <uk/arch/arm/intsizes.h> -#include <uk/arch/arm/types.h> +#include <uk/arch/arm/arm32/intsizes.h> +#include <uk/arch/arm/arm32/types.h> #endif #ifdef __ARM_64__ -#include <uk/arch/arm64/intsizes.h> -#include <uk/arch/arm64/types.h> +#include <uk/arch/arm/arm64/intsizes.h> +#include <uk/arch/arm/arm64/types.h> #endif#ifndef __ASSEMBLY__diff --git a/include/uk/arch/x86/x86_64/atomic.h b/include/uk/arch/x86/x86_64/atomic.h new file mode 100644 index 0000000..985c388 --- /dev/null +++ b/include/uk/arch/x86/x86_64/atomic.h @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Port from Mini-OS: include/x86/os.h + */ +/* + * Copyright (c) 2009 Citrix Systems, Inc. All rights reserved. + * + * 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 AUTHOR 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 AUTHOR 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 __UKARCH_ATOMIC_H__ +#error Do not include this header directly +#endif + +/** + * ukarch_find_lsbit - find first (lowest) set bit in word. + * @word: The word to search + * + * Undefined if no bit exists, so code should check against 0 first. + */ +static inline unsigned long ukarch_find_lsbit(unsigned long word) +{ + __asm__("bsfq %1,%0" + :"=r" (word) + :"rm" (word)); + return word; +} diff --git a/include/uk/arch/x86/x86_64/intsizes.h b/include/uk/arch/x86/x86_64/intsizes.h new file mode 100644 index 0000000..e3ef510 --- /dev/null +++ b/include/uk/arch/x86/x86_64/intsizes.h @@ -0,0 +1,45 @@ +/* SPDX-License-Identifier: BSD-3-Clause */ +/* + * Authors: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> + * + * + * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. All rights reserved. + * + * 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. + * 3. Neither the name of the copyright holder 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 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. + * + * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. + */ + +#if ((!defined __UKARCH_TYPES_H__) && (!defined __UKARCH_LIMITS_H__)) +#error Do not include this header directly +#endif + +#define __C_IS_8 /* char */ +#define __S_IS_16 /* short */ +#define __I_IS_32 /* int */ +#define __L_IS_64 /* long */ +#define __LL_IS_64 /* long long */ +#define __PTR_IS_64 /* void * */ diff --git a/include/uk/arch/x86/x86_64/lcpu.h b/include/uk/arch/x86/x86_64/lcpu.h new file mode 100644 index 0000000..cd667e5 --- /dev/null +++ b/include/uk/arch/x86/x86_64/lcpu.h @@ -0,0 +1,73 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Authors: Grzegorz Milos <gm281@xxxxxxxxx> + * Simon Kuenzer <simon.kuenzer@xxxxxxxxx> + * + * Copyright (c) 2005, Grzegorz Milos, Intel Research Cambridge + * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. + * + * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LCPU_H__ +#error Do not include this header directly +#endif + +struct __regs { + unsigned long r15; + unsigned long r14; + unsigned long r13; + unsigned long r12; + unsigned long rbp; + unsigned long rbx; +/* arguments: non interrupts/non tracing syscalls only save upto here*/ + unsigned long r11; + unsigned long r10; + unsigned long r9; + unsigned long r8; + unsigned long rax; + unsigned long rcx; + unsigned long rdx; + unsigned long rsi; + unsigned long rdi; + unsigned long orig_rax; +/* end of arguments */ +/* cpu exception frame or undefined */ + unsigned long rip; + unsigned long cs; + unsigned long eflags; + unsigned long rsp; + unsigned long ss; +/* top of stack page */ +}; + +#ifndef mb +#define mb() __asm__ __volatile__ ("mfence" : : : "memory") +#endif + +#ifndef rmb +#define rmb() __asm__ __volatile__ ("lfence" : : : "memory") +#endif + +#ifndef wmb +#define wmb() __asm__ __volatile__ ("sfence" : : : "memory") +#endif diff --git a/include/uk/arch/x86/x86_64/limits.h b/include/uk/arch/x86/x86_64/limits.h new file mode 100644 index 0000000..a969bd1 --- /dev/null +++ b/include/uk/arch/x86/x86_64/limits.h @@ -0,0 +1,46 @@ +/* SPDX-License-Identifier: BSD-2-Clause */ +/* + * Copyright (c) 2009, Citrix Systems, Inc. + * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. + * + * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LIMITS_H__ +#error Do not include this header directly +#endif + +#define __PAGE_SHIFT 12 + +#ifdef __ASSEMBLY__ +#define __PAGE_SIZE (1 << __PAGE_SHIFT) +#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) +#else +#define __PAGE_SIZE (1ULL << __PAGE_SHIFT) +#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) +#endif + +#define __STACK_SIZE_PAGE_ORDER 4 +#define __STACK_SIZE (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER)) + +#define __WORDSIZE 64 +#define __WORDSIZE_COMPAT32 1 diff --git a/include/uk/arch/x86/x86_64/types.h b/include/uk/arch/x86/x86_64/types.h new file mode 100644 index 0000000..5547b37 --- /dev/null +++ b/include/uk/arch/x86/x86_64/types.h @@ -0,0 +1,38 @@ +/* SPDX-License-Identifier: MIT */ +/* + * Copyright (c) 2002-2003, K A Fraser & R Neugebauer + * Copyright (c) 2005, Grzegorz Milos, Intel Research Cambridge + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef __UKARCH_TYPES_H__ +#error Do not include this header directly +#endif + +#ifndef __ASSEMBLY__ + +struct __pte { unsigned long pte; }; +#define npte(x) ((struct __pte) { (x) }) + +#define _WORD ".quad" + +#else +#define _WORD .quad +#endif /* !__ASSEMBLY__ */ diff --git a/include/uk/arch/x86_64/atomic.h b/include/uk/arch/x86_64/atomic.h deleted file mode 100644 index 985c388..0000000 --- a/include/uk/arch/x86_64/atomic.h +++ /dev/null @@ -1,45 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ -/* - * Port from Mini-OS: include/x86/os.h - */ -/* - * Copyright (c) 2009 Citrix Systems, Inc. All rights reserved. - * - * 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 AUTHOR 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 AUTHOR 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 __UKARCH_ATOMIC_H__ -#error Do not include this header directly -#endif - -/** - * ukarch_find_lsbit - find first (lowest) set bit in word. - * @word: The word to search - * - * Undefined if no bit exists, so code should check against 0 first. - */ -static inline unsigned long ukarch_find_lsbit(unsigned long word) -{ - __asm__("bsfq %1,%0" - :"=r" (word) - :"rm" (word)); - return word; -} diff --git a/include/uk/arch/x86_64/intsizes.h b/include/uk/arch/x86_64/intsizes.h deleted file mode 100644 index e3ef510..0000000 --- a/include/uk/arch/x86_64/intsizes.h +++ /dev/null @@ -1,45 +0,0 @@ -/* SPDX-License-Identifier: BSD-3-Clause */ -/* - * Authors: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> - * - * - * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. All rights reserved. - * - * 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. - * 3. Neither the name of the copyright holder 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 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. - * - * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY. - */ - -#if ((!defined __UKARCH_TYPES_H__) && (!defined __UKARCH_LIMITS_H__)) -#error Do not include this header directly -#endif - -#define __C_IS_8 /* char */ -#define __S_IS_16 /* short */ -#define __I_IS_32 /* int */ -#define __L_IS_64 /* long */ -#define __LL_IS_64 /* long long */ -#define __PTR_IS_64 /* void * */ diff --git a/include/uk/arch/x86_64/lcpu.h b/include/uk/arch/x86_64/lcpu.h deleted file mode 100644 index cd667e5..0000000 --- a/include/uk/arch/x86_64/lcpu.h +++ /dev/null @@ -1,73 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ -/* - * Authors: Grzegorz Milos <gm281@xxxxxxxxx> - * Simon Kuenzer <simon.kuenzer@xxxxxxxxx> - * - * Copyright (c) 2005, Grzegorz Milos, Intel Research Cambridge - * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. - * - * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LCPU_H__ -#error Do not include this header directly -#endif - -struct __regs { - unsigned long r15; - unsigned long r14; - unsigned long r13; - unsigned long r12; - unsigned long rbp; - unsigned long rbx; -/* arguments: non interrupts/non tracing syscalls only save upto here*/ - unsigned long r11; - unsigned long r10; - unsigned long r9; - unsigned long r8; - unsigned long rax; - unsigned long rcx; - unsigned long rdx; - unsigned long rsi; - unsigned long rdi; - unsigned long orig_rax; -/* end of arguments */ -/* cpu exception frame or undefined */ - unsigned long rip; - unsigned long cs; - unsigned long eflags; - unsigned long rsp; - unsigned long ss; -/* top of stack page */ -}; - -#ifndef mb -#define mb() __asm__ __volatile__ ("mfence" : : : "memory") -#endif - -#ifndef rmb -#define rmb() __asm__ __volatile__ ("lfence" : : : "memory") -#endif - -#ifndef wmb -#define wmb() __asm__ __volatile__ ("sfence" : : : "memory") -#endif diff --git a/include/uk/arch/x86_64/limits.h b/include/uk/arch/x86_64/limits.h deleted file mode 100644 index a969bd1..0000000 --- a/include/uk/arch/x86_64/limits.h +++ /dev/null @@ -1,46 +0,0 @@ -/* SPDX-License-Identifier: BSD-2-Clause */ -/* - * Copyright (c) 2009, Citrix Systems, Inc. - * Copyright (c) 2017, NEC Europe Ltd., NEC Corporation. - * - * 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 AUTHOR 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 AUTHOR 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 __UKARCH_LIMITS_H__ -#error Do not include this header directly -#endif - -#define __PAGE_SHIFT 12 - -#ifdef __ASSEMBLY__ -#define __PAGE_SIZE (1 << __PAGE_SHIFT) -#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) -#else -#define __PAGE_SIZE (1ULL << __PAGE_SHIFT) -#define __PAGE_MASK (~((__PAGE_SIZE) - 1)) -#endif - -#define __STACK_SIZE_PAGE_ORDER 4 -#define __STACK_SIZE (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER)) - -#define __WORDSIZE 64 -#define __WORDSIZE_COMPAT32 1 diff --git a/include/uk/arch/x86_64/types.h b/include/uk/arch/x86_64/types.h deleted file mode 100644 index 5547b37..0000000 --- a/include/uk/arch/x86_64/types.h +++ /dev/null @@ -1,38 +0,0 @@ -/* SPDX-License-Identifier: MIT */ -/* - * Copyright (c) 2002-2003, K A Fraser & R Neugebauer - * Copyright (c) 2005, Grzegorz Milos, Intel Research Cambridge - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to - * deal in the Software without restriction, including without limitation the - * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - * sell copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#ifndef __UKARCH_TYPES_H__ -#error Do not include this header directly -#endif - -#ifndef __ASSEMBLY__ - -struct __pte { unsigned long pte; }; -#define npte(x) ((struct __pte) { (x) }) - -#define _WORD ".quad" - -#else -#define _WORD .quad -#endif /* !__ASSEMBLY__ */ _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |