Difference between revisions of "KCacheMaintenanceInterruptEvent"
Jump to navigation
Jump to search
(Created page with "Category:Kernel interrupt events class KCacheMaintenanceInterruptEvent extends KBaseInterruptEvent This object handles data cache (L2C ''not'' included) and instr...") |
m |
||
Line 47: | Line 47: | ||
|- | |- | ||
| 0x14 | | 0x14 | ||
− | | KThreadLinkedListNode* | + | | KThreadLinkedListNode * |
| Related to KThread+0xA0 | | Related to KThread+0xA0 | ||
|- | |- | ||
Line 91: | Line 91: | ||
|} | |} | ||
− | + | KScheduledCacheMaintenanceInterruptEvent extends [[KSchedulableInterruptEvent]], size = 0xC bytes: | |
{| class="wikitable" border="1" | {| class="wikitable" border="1" | ||
|- | |- |
Revision as of 02:27, 22 February 2017
class KCacheMaintenanceInterruptEvent extends KBaseInterruptEvent
This object handles data cache (L2C not included) and instruction cache maintainance.
There is only one instance of this object.
Size : 0x4C bytes (N3DS) / 0x34 bytes (O3DS)
Offset | Type | Description |
---|---|---|
0x0 | void ** | Pointer to vtable |
0x4 | u8 | Cache operation |
0x5 | u8 | Indicates whether to do the operation asynchronically (this is what is used when processes are running for ranges >= 0x200 bytes) |
0x6 | s8 | Number of cores still doing cache maintenance operations |
0x7 | u8 | Padding |
0x8 | KThread * | Thread operating on the object |
0xC | void * | Start address (when applicable) |
0x10 | void * | End address (when applicable) |
0x14 | KThreadLinkedListNode * | Related to KThread+0xA0 |
0x18 | KThreadLinkedList * | KThread+0xA8 of the current thread |
0x1C | KCacheScheduledInterruptEvent[number of cores] | Used when the field at offset 0x5 is 1, see below |
Possible operations (any other value leads to a kernel panic):
Operation | Description |
---|---|
4 | Invalidate data cache range |
5 | Clean data cache range |
6 | Clean and invalidate data cache range |
7 | Invalidate instruction cache range (also flush the entire branch target cache and the prefetch buffer) |
8 | Invalidate entire data cache |
9 | Clean entire data cache |
10 | Clean and invalidate entire data cache |
11 | Invalidate entire instruction cache (also flush the entire branch target cache and the prefetch buffer) |
KScheduledCacheMaintenanceInterruptEvent extends KSchedulableInterruptEvent, size = 0xC bytes:
Offset | Type | Description |
---|---|---|
0x0 | void ** | Pointer to vtable |
0x4 | KSchedulableInterruptEvent * | Next interrupt event |
0x8 | const KThread * | Thread woken up by the first virtual function of this object, doing the actual cache maintenance operation. Same for all |