Difference between revisions of "KThreadContext"

From 3dbrew
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