Difference between revisions of "KThreadContext"
Jump to navigation
Jump to search
Line 2: | Line 2: | ||
Size : 0x1000 bytes (1 page) | Size : 0x1000 bytes (1 page) | ||
+ | |||
+ | |||
+ | {| class="wikitable" border="1" | ||
+ | |- | ||
+ | ! Offset | ||
+ | ! Type | ||
+ | ! Description | ||
+ | |- | ||
+ | | 0xF50 | ||
+ | | u32[10] | ||
+ | | SVC mode registers, r4-r11, r13, r14 | ||
+ | |- | ||
+ | | 0xFF8 | ||
+ | | u32 | ||
+ | | FPEXC, floating point exception register for thread- stored and loaded on context switches | ||
+ | |} | ||
+ | |||
+ | When switching thread contexts the kernel does, in order: | ||
+ | |||
+ | * Load FPEXC | ||
+ | * Save the LR to r1- this LR is the return back to the main scheduling and context switching function | ||
+ | * Load r4-r11, SP, LR | ||
+ | * Branch back to r1, preserving the LR which was just reloaded, back to the main scheduling function, but in the context of the newly switched-to thread |
Revision as of 20:46, 28 August 2016
Size : 0x1000 bytes (1 page)
Offset | Type | Description |
---|---|---|
0xF50 | u32[10] | SVC mode registers, r4-r11, r13, r14 |
0xFF8 | u32 | FPEXC, floating point exception register for thread- stored and loaded on context switches |
When switching thread contexts the kernel does, in order:
- Load FPEXC
- Save the LR to r1- this LR is the return back to the main scheduling and context switching function
- Load r4-r11, SP, LR
- Branch back to r1, preserving the LR which was just reloaded, back to the main scheduling function, but in the context of the newly switched-to thread