Ski IA-64 Simulator Reference Manual 1.0L
7 | Linux and MS-DOS ABI Emulation |
| |
| |
As discussed in Section 6.1, “Application-Mode and System-Mode Simulation”, Ski can provide application programs with a Linux-compatible or MS-DOS-compatible environment. The environments aren’t full-blown operating system emulations, however. The most common OS functions are provided, as described below.
7.1Interruptions
The IA-64 architecture defines a large set of interruption types, including faults, traps, and interrupts. Interruptions may happen asynchronously, during an instruction, or between instructions. Like application programs running on a “real” Linux machine, IA-64 application-mode programs in Ski never see interruptions. Instead, Ski translates interruptions into the signal that a real IA-64 Linux kernel would generate. For example, a memory access violation gets translated into the SIGSEGV signal. Similarly, if Ski receives a keyboard signal such as the SIGINT generated (usually) by control-C, it passes this signal on to the IA-64 application. Ski does not accurately simulate the siginfo and sigcontext structures that a real IA-64 Linux kernel would pass to a signal handler. Thus, applications relying on either of these parameters can- not be simulated in Ski application mode.
7.2Linux Application Environment
Ski provides a commonly-used subset of the Linux environment to IA-64 application-mode programs. Both statically linked and dynamically linked programs are supported. The argc, argv, and envp parameters are created on the stack as described in Section 6.5.3.2, “Creating the argc, argv, and envp Parameters”. Ski initializes the IA-64 registers like this:
sp points to the top of the stack.
bsp, and bspstore are initialized in the same way the IA-64 version of Linux is likely to do.
rsc.pl is initialized to 3.
rsc.be and psr.be are cleared.
Ski supports the Linux system calls shown in Table 7-1.This list is subject to change; consult the release notes for the lat- est information. The data passed between the application program and the simulated Linux environment is interpreted as 64 bit (LP64) quantities.