KThreadContext

From 3dbrew
Revision as of 01:11, 29 August 2016 by Bond697 (talk | contribs)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.


Size : 0x1000 bytes (1 page)


Offset Type Description
0xF38 u32[4] SVC access control data copied from KThread's owner process
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
  • Disable Interrupts
  • Check if that core's KScheduler object indicates that it needs switching again and exit if it does not
  • Otherwise, run the thread scheduler again and repeat all the steps to switch contexts again