* libc/envlock.c: Implemented code to let newlib's envlock share
the libio open/close mutex. Since both should be lightly used,
this should not lead to problems and saves resources.
* libc/newlibc.c: Per PR141, move the C library re-enterrant
support directly into the thread dispatch code. RTEMS needs
libc and so requiring libc to use a user extension with its
overhead is not the best solution. This patch lowers the
overhead to 2 pointer moves.
* include/rtems/score/thread.h, inline/rtems/score/thread.inl,
src/threaddispatch.c, src/threadinitialize.c:
Move the C library re-enterrant support directly into
the thread dispatch code. RTEMS needs libc and so requiring
libc to use a user extension with its overhead is not the best
solution. This patch lowers the overhead to 2 pointer moves.
* src/i386/any/remdeb_svc.c, src/m68k/any/remdeb_svc.c,
src/powerpc/new_exception_processing/remdeb_svc.c: Readding as
I accidentally deleted the incorrectly empty versions.
* Per PR212, added envlock support for newlib. This is used
by at least getenv()/putenv() to avoid race conditions.
* libc/envlock.c: New file.
* libc/Makefile.am: Modified to reflect above.
* include/sys/ioctl.h: Relocated from libnetworking/sys.
* include/sys/filio.h: Relocated from libnetworking/sys.
* include/sys/sockio.h: Relocated from libnetworking/sys.
* include/Makefile.am: Reflect changes above.
* configure.ac: Take out *NETWORKING*.
* bootloader/Makefile.am, console/Makefile.am, pci/Makefile.am:
Per PR215 address the following issues:
- _IO_BASE, _ISA_MEM_BASE and PCI_DRAM_OFFSET
are no longer defined by libcpu (powerpc/shared/include/io.h)
but by the BSP (who is the only one to know the values)
- the affected BSP (shared/motorola) headers have been fixed
in a separate "libbsp/powerpc/shared" patch.
- the DEC 21140 driver (libchip/network/dec21140.c) has been
fixed to use PCI_DRAM_OFFSET instead of PREP_PCI_DRAM_OFFSET.
and PCI_MEM_BASE instead of PREP_ISA_MEM_BASE. PCI_MEM_BASE
is to be defined by the BSP who is using this driver.
- the DEC driver also has been fixed to use the newer
rtems_bsp_delay_in_bus_cycles() instead of the obsolete
delay_in_bus_cycles().
* cpu.c: Per PR211 fix
saving/restoring floating point context. The fpsave and fprestore
routines are only used in a executing context which _is_ fp and hence
has the FPU enabled. The current behavior required the FPU always to
be on which is very dangerous if lazy context switching is used.
[Joel Note: Some ports explicitly enabled the FPU in the FP save and
restore routines to avoid this.]
The patch also makes sure (on powerpc only) that the FPU is disabled
for integer tasks. Note that this is crucial if deferred fp context
switching is used. Otherwise, fp context corruption may go undetected!
Also note that even tasks which merely push/pop FP registers to/from
the stack without modifying them still MUST be FP tasks - otherwise
(if lazy FP context switching is used), FP register corruption (of
other, FP, tasks may occur)!
Furthermore, (on PPC) by default, lazy FP context save/restore
is _disabled_.
* rtems/new-exceptions/cpu.h: Per PR211 fix
saving/restoring floating point context. The fpsave and fprestore
routines are only used in a executing context which _is_ fp and hence
has the FPU enabled. The current behavior required the FPU always to
be on which is very dangerous if lazy context switching is used.
[Joel Note: Some ports explicitly enabled the FPU in the FP save and
restore routines to avoid this.]
The patch also makes sure (on powerpc only) that the FPU is disabled
for integer tasks. Note that this is crucial if deferred fp context
switching is used. Otherwise, fp context corruption may go undetected!
Also note that even tasks which merely push/pop FP registers to/from
the stack without modifying them still MUST be FP tasks - otherwise
(if lazy FP context switching is used), FP register corruption (of
other, FP, tasks may occur)!
Furthermore, (on PPC) by default, lazy FP context save/restore
is _disabled_.