mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-19 21:57:55 +00:00
parent
b29db99f1c
commit
920e240f67
@ -11,10 +11,11 @@ diff --git a/l4/pkg/l4re-core/l4sys/include/kdebug.h b/l4/pkg/l4re-core/l4sys/in
|
|||||||
index cfb17464..64ee9900 100644
|
index cfb17464..64ee9900 100644
|
||||||
--- a/l4/pkg/l4re-core/l4sys/include/kdebug.h
|
--- a/l4/pkg/l4re-core/l4sys/include/kdebug.h
|
||||||
+++ b/l4/pkg/l4re-core/l4sys/include/kdebug.h
|
+++ b/l4/pkg/l4re-core/l4sys/include/kdebug.h
|
||||||
@@ -133,6 +133,13 @@ __kdebug_op_1(unsigned op, l4_mword_t val) L4_NOTHROW
|
@@ -133,6 +133,14 @@ __kdebug_op_1(unsigned op, l4_mword_t val) L4_NOTHROW
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+__attribute__((optimize("no-tree-loop-distribute-patterns")))
|
||||||
+L4_INLINE unsigned __kdebug_strlen(char const * s)
|
+L4_INLINE unsigned __kdebug_strlen(char const * s)
|
||||||
+{
|
+{
|
||||||
+ unsigned r = 0;
|
+ unsigned r = 0;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
L4: enable GCC 10
|
L4: enable GCC 12
|
||||||
|
|
||||||
diff --git a/l4/mk/Makeconf b/l4/mk/Makeconf
|
diff --git a/l4/mk/Makeconf b/l4/mk/Makeconf
|
||||||
index eb59b51..a7b5955 100644
|
index eb59b51..a7b5955 100644
|
||||||
@ -9,7 +9,7 @@ index eb59b51..a7b5955 100644
|
|||||||
L4_STACK_SIZE ?= $(if $(L4_STACK_SIZE_MAIN_THREAD),$(L4_STACK_SIZE_MAIN_THREAD),0x8000)
|
L4_STACK_SIZE ?= $(if $(L4_STACK_SIZE_MAIN_THREAD),$(L4_STACK_SIZE_MAIN_THREAD),0x8000)
|
||||||
|
|
||||||
-CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9
|
-CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9
|
||||||
+CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9 10
|
+CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9 10 11 12
|
||||||
CC_WHITELIST-clang := 3.5 3.6 3.7 3.8 3.9
|
CC_WHITELIST-clang := 3.5 3.6 3.7 3.8 3.9
|
||||||
|
|
||||||
# This is quite bad: There is no other chance to disable the page-alignedment
|
# This is quite bad: There is no other chance to disable the page-alignedment
|
@ -1,4 +1,4 @@
|
|||||||
FOC: enable GCC 10
|
FOC: enable GCC 12
|
||||||
|
|
||||||
diff --git a/src/Makeconf b/src/Makeconf
|
diff --git a/src/Makeconf b/src/Makeconf
|
||||||
index de5b656..7660daa 100644
|
index de5b656..7660daa 100644
|
||||||
@ -9,7 +9,7 @@ index de5b656..7660daa 100644
|
|||||||
|
|
||||||
|
|
||||||
-CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9
|
-CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9
|
||||||
+CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9 10
|
+CC_WHITELIST-gcc := 4.7 4.8 4.9 5 6 7 8 9 10 11 12
|
||||||
CC_WHITELIST-clang := 3.6 3.7 3.8 3.9 4.0 5.0 6.0 7.0 8.0 9.0
|
CC_WHITELIST-clang := 3.6 3.7 3.8 3.9 4.0 5.0 6.0 7.0 8.0 9.0
|
||||||
CC_WHITELIST := $(CC_WHITELIST-$(CC_TYPE))
|
CC_WHITELIST := $(CC_WHITELIST-$(CC_TYPE))
|
||||||
|
|
@ -0,0 +1,94 @@
|
|||||||
|
From 8d55cdc73b07dd56ae59a42bcc11cde82614334a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Frank Mehnert <frank.mehnert@kernkonzept.com>
|
||||||
|
Date: Mon, 10 May 2021 00:00:00 +0000
|
||||||
|
Subject: [PATCH] ia32: add implementation for '__udivmoddi4()'
|
||||||
|
|
||||||
|
This function is implicitly required by code in jdb.cpp performing a
|
||||||
|
64-bit integer division on 32-bit systems. This function is required
|
||||||
|
by code generated with gcc-11. Code generated with older versions of
|
||||||
|
gcc was satisfied with the existing implementation for '__udivdi3'.
|
||||||
|
|
||||||
|
Also fix cosmetic issues in gcc_lib.c and add Doxygen documentation.
|
||||||
|
|
||||||
|
Change-Id: If5b44a9e98429c4fc3eacdd5af8bdaf33c9c2a8f
|
||||||
|
---
|
||||||
|
src/lib/libk/gcc_lib.c | 49 +++++++++++++++++++++++++++++++++++-------
|
||||||
|
1 file changed, 41 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/lib/libk/gcc_lib.c b/src/lib/libk/gcc_lib.c
|
||||||
|
index e5626145..b121cb63 100644
|
||||||
|
--- a/src/lib/libk/gcc_lib.c
|
||||||
|
+++ b/src/lib/libk/gcc_lib.c
|
||||||
|
@@ -1,6 +1,8 @@
|
||||||
|
|
||||||
|
unsigned long long __umoddi3(unsigned long long, unsigned long long);
|
||||||
|
unsigned long long __udivdi3(unsigned long long, unsigned long long);
|
||||||
|
+unsigned long long __udivmoddi4(unsigned long long, unsigned long long,
|
||||||
|
+ unsigned long long *);
|
||||||
|
|
||||||
|
struct llmoddiv_t
|
||||||
|
{
|
||||||
|
@@ -31,15 +33,15 @@ static struct llmoddiv_t llmoddiv(unsigned long long div, unsigned long long s)
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
if (div >= s)
|
||||||
|
- {
|
||||||
|
- div -= s;
|
||||||
|
- i |= tmp;
|
||||||
|
- }
|
||||||
|
+ {
|
||||||
|
+ div -= s;
|
||||||
|
+ i |= tmp;
|
||||||
|
+ }
|
||||||
|
if (div == 0)
|
||||||
|
- break;
|
||||||
|
+ break;
|
||||||
|
tmp >>= 1;
|
||||||
|
if (!tmp)
|
||||||
|
- break;
|
||||||
|
+ break;
|
||||||
|
s >>= 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -47,8 +49,39 @@ static struct llmoddiv_t llmoddiv(unsigned long long div, unsigned long long s)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * 64-bit unsigned modulo for 32-bit machines.
|
||||||
|
+ *
|
||||||
|
+ * \param div Dividend.
|
||||||
|
+ * \param s Divisor.
|
||||||
|
+ * \return div / s.
|
||||||
|
+ */
|
||||||
|
unsigned long long __umoddi3(unsigned long long div, unsigned long long s)
|
||||||
|
-{ return llmoddiv(div,s).mod; }
|
||||||
|
+{ return llmoddiv(div, s).mod; }
|
||||||
|
|
||||||
|
+/**
|
||||||
|
+ * 64-bit unsigned division for 32-bit machines.
|
||||||
|
+ *
|
||||||
|
+ * \param div Dividend.
|
||||||
|
+ * \param s Divisor.
|
||||||
|
+ * \return div / s.
|
||||||
|
+ */
|
||||||
|
unsigned long long __udivdi3(unsigned long long div, unsigned long long s)
|
||||||
|
-{ return llmoddiv(div,s).div; }
|
||||||
|
+{ return llmoddiv(div, s).div; }
|
||||||
|
+
|
||||||
|
+/**
|
||||||
|
+ * 64-bit unsigned division + modulo for 32-bit machines.
|
||||||
|
+ *
|
||||||
|
+ * \param n Dividend.
|
||||||
|
+ * \param d Divisor.
|
||||||
|
+ * \param[out] r Pointer to the result holding div % s.
|
||||||
|
+ * \return div / s.
|
||||||
|
+ */
|
||||||
|
+unsigned long long __udivmoddi4(unsigned long long div, unsigned long long s,
|
||||||
|
+ unsigned long long *r)
|
||||||
|
+{
|
||||||
|
+ struct llmoddiv_t md = llmoddiv(div, s);
|
||||||
|
+ if (r)
|
||||||
|
+ *r = md.mod;
|
||||||
|
+ return md.div;
|
||||||
|
+}
|
@ -0,0 +1,17 @@
|
|||||||
|
Fix reboot loop when built with GCC 12.
|
||||||
|
|
||||||
|
diff --git a/src/Makeconf b/src/Makeconf
|
||||||
|
index bb7ad16c..2fe11226 100644
|
||||||
|
--- a/src/Makeconf
|
||||||
|
+++ b/src/Makeconf
|
||||||
|
@@ -167,8 +167,8 @@ NOOPT_SHARED_FLAGS += $(NOOPT_SHARED_FLAGS-$(CC_TYPE))
|
||||||
|
# Standard compile flags
|
||||||
|
ASFLAGS += $(SHARED_FLAGS) -DASSEMBLER
|
||||||
|
ASFLAGS-clang += -no-integrated-as
|
||||||
|
-CFLAGS += $(SHARED_FLAGS) -Wbad-function-cast -Wstrict-prototypes
|
||||||
|
-CXXFLAGS += $(SHARED_FLAGS) -fno-rtti -fno-exceptions
|
||||||
|
+CFLAGS += $(SHARED_FLAGS) -Wbad-function-cast -Wstrict-prototypes -fno-tree-loop-distribute-patterns
|
||||||
|
+CXXFLAGS += $(SHARED_FLAGS) -fno-rtti -fno-exceptions -fno-tree-loop-distribute-patterns
|
||||||
|
OPT_CFLAGS += $(OPT_SHARED_FLAGS)
|
||||||
|
OPT_CXXFLAGS += $(OPT_SHARED_FLAGS)
|
||||||
|
NOOPT_CFLAGS += $(NOOPT_SHARED_FLAGS)
|
@ -1 +1 @@
|
|||||||
abe2de76835f33297ca4e4ac687e69bc04f83dc5
|
00cfb7994fee75bb5aae010a3d2c16a7ffd29ec9
|
||||||
|
@ -37,11 +37,13 @@ PATCH_OPT(patches/0014-Always-enable-user-mode-access-for-performance-monit.patc
|
|||||||
PATCH_OPT(patches/0015-VMX-disable-event-injection-if-requested-by-VMM.patch) := -p3 -d${DIR(foc)}
|
PATCH_OPT(patches/0015-VMX-disable-event-injection-if-requested-by-VMM.patch) := -p3 -d${DIR(foc)}
|
||||||
PATCH_OPT(patches/0016-svm-provide-cr0-to-guest-if-np-enabled.patch) := -p3 -d${DIR(foc)}
|
PATCH_OPT(patches/0016-svm-provide-cr0-to-guest-if-np-enabled.patch) := -p3 -d${DIR(foc)}
|
||||||
PATCH_OPT(patches/0017-svm-avoid-forceful-exit-on-task-switch.patch) := -p3 -d${DIR(foc)}
|
PATCH_OPT(patches/0017-svm-avoid-forceful-exit-on-task-switch.patch) := -p3 -d${DIR(foc)}
|
||||||
PATCH_OPT(patches/0018-L4-enable-gcc_10.patch) := -p2 -d${DIR(mk)}
|
PATCH_OPT(patches/0018-L4-enable-gcc_12.patch) := -p2 -d${DIR(mk)}
|
||||||
PATCH_OPT(patches/0019-Bootstrap-do-not-depend-on-any-libstdcxx-feature.patch) := -p1 -d${DIR(bootstrap)}
|
PATCH_OPT(patches/0019-Bootstrap-do-not-depend-on-any-libstdcxx-feature.patch) := -p1 -d${DIR(bootstrap)}
|
||||||
PATCH_OPT(patches/0020-Bootstrap-fix-amd64-build-with-binutils-2_32.patch) := -p1 -d${DIR(bootstrap)}
|
PATCH_OPT(patches/0020-Bootstrap-fix-amd64-build-with-binutils-2_32.patch) := -p1 -d${DIR(bootstrap)}
|
||||||
PATCH_OPT(patches/0021-FOC-enable-gcc_10.patch) := -p1 -d${DIR(foc)}
|
PATCH_OPT(patches/0021-FOC-enable-gcc_12.patch) := -p1 -d${DIR(foc)}
|
||||||
PATCH_OPT(patches/0022-FOC-amd64-split-_syscall_entry-into-code-and-data.patch) := -p1 -d${DIR(foc)}
|
PATCH_OPT(patches/0022-FOC-amd64-split-_syscall_entry-into-code-and-data.patch) := -p1 -d${DIR(foc)}
|
||||||
PATCH_OPT(patches/0023-FOC-arm-link-bootstrap-as-et_rel.patch) := -p1 -d${DIR(foc)}
|
PATCH_OPT(patches/0023-FOC-arm-link-bootstrap-as-et_rel.patch) := -p1 -d${DIR(foc)}
|
||||||
|
PATCH_OPT(patches/0024-FOC-ia32-add-implementation-for-__udivmoddi4.patch) := -p1 -d${DIR(foc)}
|
||||||
|
PATCH_OPT(patches/0025-FOC-no-tree-loop-distribute-patterns.patch) := -p1 -d${DIR(foc)}
|
||||||
|
|
||||||
$(call check_tool,gawk)
|
$(call check_tool,gawk)
|
||||||
|
Loading…
Reference in New Issue
Block a user