summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2003-05-15 08:36:03 +0000
committermarcel <marcel@FreeBSD.org>2003-05-15 08:36:03 +0000
commit2983398f576394f65a8771518a865dfa4c5adba7 (patch)
treefb0747f3635f0c2f6a215b9893d17c926a8b7148 /tools
parent08a1cc9dd4b16cea02e361a9e0840772df52ca4d (diff)
downloadFreeBSD-src-2983398f576394f65a8771518a865dfa4c5adba7.zip
FreeBSD-src-2983398f576394f65a8771518a865dfa4c5adba7.tar.gz
This file creates register sets based on the runtime specification.
The advantage of using register sets is that you don't focus on each register seperately, but instead instroduce a level of abstraction. This reduces the chance of errors, and also simplifies the code. The register sers form the basis of everything register. The sets in this file are: struct _special contains all of the control related registers, such as instruction pointer and stack pointer. It also contains interrupt specific registers like the faulting address. The set is roughly split in 3 groups. The first contains the registers that define a context or thread. This is the only group that the kernel needs to switch threads. The second group contains registers needed in addition to the first group needed to switch userland threads. This group contains the thread pointer and the FP control register. The third group contains those registers we need for execption handling and are used on top of the first two groups. struct _callee_saved, struct _callee_saved_fp These sets contain the preserved registers, including the NaT after spilling. The general registers (including branch registers) are seperated from the FP registers for ptrace(2). struct _caller_saved, struct _caller_saved_fp These sets contain the scratch registers based on SDM 2.1, This means that both ar.csd and ar.ccd are included here, even though they contain ia32 segment register descriptions. We keep seperate NaT bits for scratch and preserved registers, because they are never saved/restored at the same time. struct _high_fp The upper 96 FP registers that can be enabled/disabled seperately on the CPU from the lower 32 FP registers. Due to the size of this set, we treat them specially, even though they are defined as scratch registers. CVS ----------------------------------------------------------------------
Diffstat (limited to 'tools')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud