The registers a7, s2-11, and t3-6 were missing from seL4_UserContext. We also add these to frameRegisters and gpRegisters, which are used to implement the TCB invocations for reading and writing these registers. Zero-length arrays aren't valid expressions or types in ISO C, so to keep the c parser happy we need to either remove gpRegisters or provide some contents for it. In the past, frameRegisters and gpRegisters distinguished between those registers preserved across a syscall and those that weren't. TCB_CopyRegisters allows the caller to choose which set to copy. Since we preserve all non-return registers, this distinction isn't relevant anymore and there's no easy way to justify the members of frameRegisters and gpRegisters. We arbitrarily choose to put the 'last' register t6 in gpRegisters, for consistency with the register list in registerset.h and with the order that registers are restored. |
||
|---|---|---|
| .. | ||
| arm | ||
| riscv | ||
| x86 | ||