The special registers need to be accessed using a 64-bit general purpose
register, even if the special register is 32-bits.
Clang 3.6 adds a check to make sure the type and general purpose register
sizes line up. To fix this we need to use the correct sized type to get
the correct register size.
vfp_save_state(struct thread *td)
{
__int128_t *vfp_state;
- uint32_t cpacr, fpcr, fpsr;
+ uint64_t fpcr, fpsr;
+ uint32_t cpacr;
/*
* Only store the registers if the VFP is enabled,
vfp_restore_state(void)
{
__int128_t *vfp_state;
- uint32_t fpcr, fpsr;
+ uint64_t fpcr, fpsr;
struct pcb *curpcb;
u_int cpu;