Each thread is given a 0x200-byte thread-local-storage block by the kernel. It is used during [[IPC_Command_Structure|IPC communications]].
+
Each thread is given a 0x200-byte thread-local-storage block by the kernel. It is used during [[IPC_Command_Structure|IPC communications]]. Each [[KProcess]] has a linked list of [[KThreadLocalPage]] objects and each object has a pointer to a page(0x1000 bytes) of FCRAM, which is used for up to 8 thread-local-storage blocks. The [[KThreadLocalPage]] is used to track which thread-local-storage blocks are used so it can allocate new ones as new threads are created.
A pointer to the thread-local-storage can be read using the ARM instruction:
A pointer to the thread-local-storage can be read using the ARM instruction: