On Feb 25 14:44, Joel Sherrill wrote:
When running RTEMS paravirtualized in user space, the cli/sti instructions
can't be used. But I can't see why they are needed in either user or
supervisor state. Turning the use of them off for RTEMS.
This code is unmodified since the beginning of the repository, so I have
no insight into why it was done. I may even have been the one to add them.
Absolutely no idea except they aren't necessary.
---
newlib/configure.host | 2 ++
1 file changed, 2 insertions(+)
diff --git a/newlib/configure.host b/newlib/configure.host
index 5fa37d4..f6abb5c 100644
--- a/newlib/configure.host
+++ b/newlib/configure.host
@@ -592,6 +592,8 @@ case "${host}" in
newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DEXIT_PROVIDED -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_NANOSLEEP -DHAVE_BLKSIZE -DHAVE_FCNTL -DHAVE_ASSERT_FUNC"
# turn off unsupported items in posix directory
newlib_cflags="${newlib_cflags} -D_NO_GETLOGIN -D_NO_GETPWENT -D_NO_GETUT -D_NO_GETPASS -D_NO_SIGSET -D_NO_WORDEXP -D_NO_POPEN -D_NO_POSIX_SPAWN"
+ # turn off using cli/sti in i386 setjmp/longjmp
+ newlib_cflags="${newlib_cflags} -D_I386MACH_ALLOW_HW_INTERRUPTS"
;;
# VxWorks supplies its own version of malloc, and the newlib one
# doesn't work because VxWorks does not have sbrk.
Patch is ok, please apply.
Would it make sense to enable _I386MACH_ALLOW_HW_INTERRUPTS by default
on x86/x86_64?