KCoreContext

From 3dbrew
Jump to navigation Jump to search

Size: 0x9000 bytes (effective size: 0x6000 bytes)

There's one instance of this structure per core. The instance for the current core is aliased at 0xFFFF1000

Offset Type Description
0x0 u32[0x400] N/A (unmapped memory)
0x1000 u32[0x1000] L1 translation table (TTB1).

The unused part of it is used as stack for exception modes other than supervisor

0x5000 u32[0x400] N/A
0x6000 KThreadContext Context for the scheduler's thread
0x7000 u32[0x400] N/A
0x8000 KCoreObjectContext Currently used objects, see below


KCoreObjectContext

Size: 0x1000 bytes

Offset Type Description
0x0 KThread* Pointer to the current thread for this core
0x4 KProcess* Pointer to the current process for this core
0x8 KScheduler* Pointer to the current scheduler for this core
0xC KSchedulableInterruptEventLinkedList* Pointer to the current instance of KSchedulableInterruptEventLinkedList for this core
0x10 KThread* Pointer to the last thread having encountered an exception for this core, used when dumping FPU registers
0x14 u8[4] Padding ?
0x18 KThread Scheduler thread instance
0xC8 KScheduler Scheduler instance
0x2F0 KSchedulableInterruptEventLinkedList KSchedulableInterruptEventLinkedList instance
0x300 u8[0x874] Unused ?
0xB74 u32[0x123] Unknown stack