Changeset View
Changeset View
Standalone View
Standalone View
lib/libc/powerpcspe/gen/fpsetround.c
Show First 20 Lines • Show All 41 Lines • ▼ Show 20 Lines | |||||
fpsetround(fp_rnd_t rnd_dir) | fpsetround(fp_rnd_t rnd_dir) | ||||
{ | { | ||||
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 & 0x3); | old = (fp_rnd_t)(fpscr & 0x3); | ||||
fpscr = (fpscr & 0xfffffffc) | rnd_dir; | fpscr = (fpscr & 0xfffffffc) | rnd_dir; | ||||
__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 |