Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/powerpcspe/gen/fpsetmask.c
Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
fpsetmask(fp_except_t mask) | fpsetmask(fp_except_t mask) | ||||
{ | { | ||||
uint32_t fpscr; | uint32_t fpscr; | ||||
fp_rnd_t old; | fp_rnd_t old; | ||||
__asm__ __volatile("mfspr %0, %1" : "=r"(fpscr) : "K"(SPR_SPEFSCR)); | __asm__ __volatile("mfspr %0, %1" : "=r"(fpscr) : "K"(SPR_SPEFSCR)); | ||||
old = (fp_rnd_t)((fpscr >> 2) & 0x1f); | old = (fp_rnd_t)((fpscr >> 2) & 0x1f); | ||||
fpscr = (fpscr & 0xffffff83) | (mask << 2); | fpscr = (fpscr & 0xffffff83) | (mask << 2); | ||||
__asm__ __volatile("mtspr %1,%0" :: "r"(fpscr), "K"(SPR_SPEFSCR)); | __asm__ __volatile("mtspr %1,%0;isync" :: "r"(fpscr), "K"(SPR_SPEFSCR)); | ||||
return (old); | return (old); | ||||
} | } | ||||
#endif | #endif |