# Process initialization The initial state of a process is established by setting certain Hexagon processor registers to well- defined initial values. ## Special registers The GP register is set to the starting address of the process’s small data area, as referenced by the program symbol, \_SDA\_BASE\_. The UGP register is set to the highest-memory-address-plus-one of the process’s thread-local storage area ([Thread-local storage](https://docs.qualcomm.com/doc/80-N3040-23/topic/thread-local-storage.html#thread-local-storage)). The R28 register is set to the address of a function which the process must call when it terminates. The process is responsible for saving this address so it can be called later on. After saving the address, the process can freely use the R28 register. Note All other special registers contain unspecified values at process initialization, and operating systems are free to specify their contents. ## General registers Except for R28 and R29 (also known as SP, which points to the top of the stack), the Hexagon general registers contain unspecified values at process initialization. Note The contents of stack memory below the top of stack is always undefined. Last Published: Oct 06, 2026 [Previous Topic Operating system interface](https://docs.qualcomm.com/bundle/publicresource/80-N3040-23/topics/operating-system-interface.md) [Next Topic Program loading](https://docs.qualcomm.com/bundle/publicresource/80-N3040-23/topics/program-loading.md)