That's interesting, I can't see such error on my side. If it works, there's probably no problem.
And I found one more version which can be used to access any SPR register, not only MSR:
#define stringify(s) tostring(s)
#define tostring(s) #s
#define mfspr(rn) ({unsigned int rval; __asm__ volatile("mfspr %0," stringify(rn) : "=r" (rval)); rval;})
#define mtspr(rn, v) __asm__ volatile("mtspr " stringify(rn) ",%0" : : "r" (v))
And then:
mtspr(570, content_of_MCSRR0);
mtspr(572, 0xFFFFFFFF); //clear all flags in MCSR register
Regards,
Lukas