Gcc/10.2.0/gcc/SH-Built 002din-Functions
From Get docs
Next: SPARC VIS Built-in Functions, Previous: S/390 System z Built-in Functions, Up: Target Builtins [Contents][Index]
6.60.30 SH Built-in Functions
The following built-in functions are supported on the SH1, SH2, SH3 and SH4 families of processors:
- Built-in Function
- 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 of ‘GBR
’ and thus the value is preserved across function calls. Changing the ‘GBR
’ value in user code must be done with caution, since the compiler might use ‘GBR
’ in order to access thread local variables.
- Built-in Function: 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 into ‘GBR
’ 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; }
- Built-in Function
- unsigned int __builtin_sh_get_fpscr (void)
- Returns the value that is currently set in the ‘
FPSCR
’ register.
- Built-in Function
- 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.