gUSA special cases r15 for part of its login/out sequence, meaning that any parameters need to be explicitly prohibited from accidentally being assigned that particular register, and the compiler ultimately needs to use a temporary instead. Certain configurations have begun generating code paths that do indeed get allocated r15, resulting in immediate corruption of the exchanged value. This was observed in (amongst others) exit_mm() code generation where the xchg_u32 call was immediately corrupting a structure address. As this is a general gUSA restriction, the rest of the users likewise need to be updated to ensure sensible constraints. References: https://bugzilla.stlinux.com/show_bug.cgi?id=11229 Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@st.com> Reviewed-by: Stuart Menefy <stuart.menefy@st.com> Signed-off-by: Paul Mundt <lethal@linux-sh.org> |
||
---|---|---|
.. | ||
asm | ||
cpu-common/cpu | ||
cpu-sh2/cpu | ||
cpu-sh2a/cpu | ||
cpu-sh3/cpu | ||
cpu-sh4/cpu | ||
cpu-sh5/cpu | ||
mach-common/mach | ||
mach-dreamcast/mach | ||
mach-ecovec24/mach | ||
mach-kfr2r09/mach | ||
mach-landisk/mach | ||
mach-migor/mach | ||
mach-sdk7786/mach | ||
mach-se/mach | ||
mach-sh03/mach | ||
mach-x3proto/mach |