sel4: replace syscalls.patch by macros.patch

This commit is contained in:
Norman Feske 2014-10-29 14:42:23 +01:00 committed by Christian Helmuth
parent 52c4dc8ec8
commit 9bf7568909
5 changed files with 21 additions and 15 deletions

View File

@ -789,6 +789,12 @@ lines:
Since we modified the port-description file, we need to update the
accompanied hash via './tool/ports/update_hash sel4'.
_Edit: After consulting the seL4 mailing list, Adrian Danis pointed out that_
_the actual issue is an off-by-one bug in the SEL4_FORCE_LONG_ENUM macro._
_So instead of explicitly casting all opcodes to integers, the macro_
_can be fixed at one place. Hence, I replaced the syscalls.patch by a_
_macros.patch until the fix appears upstream._
Anyway, after all the steps, our test-sel4 program can be successfully
built. Executing the run script produces the result that we longed for:

View File

@ -1 +1 @@
39b692f97c6a83fdc35e22909b80ce804cc3aa84
aaedf65867d799944024bab904c344c160069c0f

View File

@ -7,5 +7,5 @@ URL(sel4) := https://github.com/seL4/seL4.git
REV(sel4) := b6fbb78cb1233aa8549ea3acb90524306f49a8d2
DIR(sel4) := src/kernel/sel4
PATCHES := src/kernel/syscalls.patch
PATCHES := src/kernel/macros.patch
PATCH_OPT := -p1 -d src/kernel/sel4

View File

@ -0,0 +1,13 @@
diff --git a/libsel4/include/sel4/macros.h b/libsel4/include/sel4/macros.h
index 99b18e1..0eea3fb 100644
--- a/libsel4/include/sel4/macros.h
+++ b/libsel4/include/sel4/macros.h
@@ -17,7 +17,7 @@
* the same size as an 'int'.
*/
#define SEL4_FORCE_LONG_ENUM(type) \
- _enum_pad_ ## type = (1U << ((sizeof(int)*8) - 1))
+ _enum_pad_ ## type = ((1U << ((sizeof(int)*8) - 1)) - 1)
#ifndef CONST
#define CONST __attribute__((__const__))

View File

@ -1,13 +0,0 @@
diff --git a/libsel4/arch_include/ia32/sel4/arch/syscalls.h b/libsel4/arch_include/ia32/sel4/arch/syscalls.h
index aef583b..d550343 100644
--- a/libsel4/arch_include/ia32/sel4/arch/syscalls.h
+++ b/libsel4/arch_include/ia32/sel4/arch/syscalls.h
@@ -475,7 +475,7 @@ seL4_DebugPutChar(char c)
"sysenter \n"
"popl %%ebp \n"
:
- : "a" (seL4_SysDebugPutChar),
+ : "a" ((int)seL4_SysDebugPutChar),
"b" (c)
: "%ecx", "%edx", "%esi", "%edi", "memory"
);