
293
Chapter 5 Operating System Issues
such as printf() are not reentrant. The OS–boot operating system, most often
used with HIF conforming library services, does not support task switching, but
other operating systems will, and the reentrant library procedure limitations will
become a problem.
Not all members of the 29K family support floating–point instructions directly
in hardware. It is the operating system’s responsibility to ensure that the desired
floating–point emulation routines (trapware) are installed. The operating
system vendor should also supply the appropriate transcendental library
services (sin(), cos(), etc.) for the chosen processor.
Floating–point instruction emulation is typically configured to operate with
interrupts not enabled. This avoids the need to save interrupted floating–point
context. However, the addition of floating–point environment saving during
application context switching is a requirement for some systems and an
unwanted burden for other systems. It is worth knowing the options an
operating system supports in this area.
It is often desirable and less expensive to purchase an operating system in
linkable or binary form, rather than source. This makes it more difficult to make
changes to the operating system code; this can be required to incorporate
support for specialized peripheral devices. It is best that the operating system
not consume all of the 32 global registers assigned for operating systems use
(
gr64
–
gr95
). Additionally, linkable operating system images can use link–time
register assignment rather than compile time. This enables the user to rearrange
the global register usage and utilize unassigned registers for peripheral support
tasks.
The 29K family has no hierarchical memory management unit policy built into
the hardware. Support of the translation look–aside buffers is left to software.
This offers great flexibility, but generates questions about the MMU support
policy adopted by the operating system. Even if address translation is not
supported by an operating system, it is still desirable to use the MMU hardware
(where available) to support address access protection with one–to–one address
translation.
There is a movement in the operating system business, which includes real–time
variants, to support POSIX conforming system calls. It may be worth knowing
how, and to what extent, the operating system vendor plans to support POSIX.
Support for debugging operating system activity and application code is very
important. Often operating systems have weaknesses in this area. The
Universal Debug Interface (UDI) has been influential in the 29K debug tool
business. It offers flexibility in debug tool configuration, flexibility and