SH Built-in Functions#
The following built-in functions are supported on the SH1, SH2, SH3 and SH4 families of processors:
-
void __builtin_set_thread_pointer(void *ptr)#
Sets the
GBR
register to the specified valueptr
. This is usually used by system code that manages threads and execution contexts. The compiler normally does not generate code that modifies the contents ofGBR
and thus the value is preserved across function calls. Changing theGBR
value in user code must be done with caution, since the compiler might useGBR
in order to access thread local variables.
-
void *__builtin_thread_pointer(void)
Returns the value that is currently set in the
GBR
register. Memory loads and stores that use the thread pointer as a base address are turned intoGBR
based displacement loads and stores, if possible. For example:struct my_tcb { int a, b, c, d, e; }; int get_tcb_value (void) { // Generate mov.l @(8,gbr),r0 instruction return ((my_tcb*)__builtin_thread_pointer ())->c; }
-
unsigned int __builtin_sh_get_fpscr(void)#
Returns the value that is currently set in the
FPSCR
register.
-
void __builtin_sh_set_fpscr(unsigned int val)#
Sets the
FPSCR
register to the specified valueval
, while preserving the current values of the FR, SZ and PR bits.