Implement ``__force_l32`` Named Address Space
The Xtensa backend gained a ``__force_l32`` named address space to handle sub-word loads from instruction memory.
The Xtensa backend gained a __force_l32 named address space. When the memory regions for placing machine instructions are not configured as “unified”, special instructions are needed to load data from instruction memory. This named address space tells the compiler that these special instructions are required when loading sub-words (1- or 2-byte values).
In Details
This introduces the Xtensa-specific __force_l32 named address space. This feature is used when the memory regions for placing machine instructions are not configured as "unified". In such cases, data residing in the same memory area as the instructions cannot be read using the usual sub-word memory load instructions.
For Context
Some architectures, like Xtensa, have separate address spaces for instructions and data. Normally, code loads data (e.g. from a string literal) using data-access instructions. However, if the memory regions are not configured as "unified", special instructions are needed to load data from instruction memory. The __force_l32 named address space tells the compiler that a pointer refers to this special region.