As the AMD64 manuals describe, the processor changes mode to handle exceptions, which may be synchronous, floating-point/coprocessor or asynchronous. Synchronous and floating-point/coprocessor exceptions, being caused by instruction execution, can be explicitly generated by a process. This section, therefore, specifies those exception types with defined behavior. The AMD64 architecture classifies exceptions as faults, traps, and aborts. See the Intel386 ABI for more information about their differences.
Number | Exception name | Signal |
0 | divide error fault | SIGFPE |
1 | single step trap/fault | SIGTRAP |
2 | nonmaskable interrupt | none |
3 | breakpoint trap | SIGTRAP |
4 | overflow trap | SIGSEGV |
5 | (reserved) | |
6 | invalid opcode fault | SIGILL |
7 | no coprocessor fault | SIGFPE |
8 | double fault abort | none |
9 | coprocessor overrun abort | SIGSEGV |
10 | invalid TSS fault | none |
11 | segment no present fault | none |
12 | stack exception fault | SIGSEGV |
13 | general protection fault/abort | SIGSEGV |
14 | page fault | SIGSEGV |
15 | (reserved) | |
16 | coprocessor error fault | SIGFPE |
other | (unspecified) | SIGILL |
The AMD64 architecture defines floating point instructions. At process startup the two floating point units, SSE2 and x87, both have all floating-point exception status flags cleared. The status of the control words is as defined in tables and .
Although the AMD64 architecture uses 64-bit pointers, implementations are only required to handle 48-bit addresses. Therefore, conforming processes may only use addresses from 0x0000000000000000 to 0x00007fffffffffff3.15.
No other changes required.
Systems are permitted to use any power-of-two page size between 4KB and 64KB, inclusive.
No other changes required.
Conceptually processes have the full address space available. In practice, however, several factors limit the size of a process.
Although applications may control their memory assignments, the typical arrangement appears in figure .