| /* This does not work on m68hc11 due to the asm statement which forces |
| two 'long' (32-bits) variables to go in registers. */ |
| /* { dg-do assemble { xfail m6811-*-* m6812-*-* } } */ |
| |
| static inline unsigned long rdfpcr(void) |
| { |
| unsigned long tmp, ret; |
| __asm__ ("" : "=r"(tmp), "=r"(ret)); |
| return ret; |
| } |
| |
| static inline unsigned long |
| swcr_update_status(unsigned long swcr, unsigned long fpcr) |
| { |
| swcr &= ~0x7e0000ul; |
| swcr |= (fpcr >> 3) & 0x7e0000ul; |
| return swcr; |
| } |
| |
| unsigned long osf_getsysinfo(unsigned long flags) |
| { |
| unsigned long w; |
| w = swcr_update_status(flags, rdfpcr()); |
| return w; |
| } |