#pragma once #include struct sr_bits { #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ uint32_t t : 1; uint32_t s : 1; uint32_t _res0 : 2; uint32_t imask : 4; uint32_t q : 1; uint32_t m : 1; uint32_t _res1 : 5; uint32_t fd : 1; uint32_t _res2 : 12; uint32_t bl : 1; uint32_t rb : 1; uint32_t md : 1; uint32_t _res3 : 1; #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ uint32_t _res3 : 1; uint32_t md : 1; uint32_t rb : 1; uint32_t bl : 1; uint32_t _res2 : 12; uint32_t fd : 1; uint32_t _res1 : 5; uint32_t m : 1; uint32_t q : 1; uint32_t imask : 4; uint32_t _res0 : 2; uint32_t s : 1; uint32_t t : 1; #else # error "unsupported endianness" #endif }; struct fpscr_bits { #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ uint32_t rm : 2; uint32_t flag_inexact : 1; uint32_t flag_underflow : 1; uint32_t flag_overflow : 1; uint32_t flag_division_by_zero : 1; uint32_t flag_invalid_operation : 1; uint32_t enable_inexact : 1; uint32_t enable_underflow : 1; uint32_t enable_overflow : 1; uint32_t enable_division_by_zero : 1; uint32_t enable_invalid : 1; uint32_t cause_inexact : 1; uint32_t cause_underflow : 1; uint32_t cause_overflow : 1; uint32_t cause_division_by_zero : 1; uint32_t cause_invalid : 1; uint32_t cause_fpu_error : 1; uint32_t dn : 1; uint32_t pr : 1; uint32_t sz : 1; uint32_t fr : 1; uint32_t _res0 : 10; #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ uint32_t _res0 : 10; uint32_t fr : 1; uint32_t sz : 1; uint32_t pr : 1; uint32_t dn : 1; uint32_t cause_fpu_error : 1; uint32_t cause_invalid : 1; uint32_t cause_division_by_zero : 1; uint32_t cause_overflow : 1; uint32_t cause_underflow : 1; uint32_t cause_inexact : 1; uint32_t enable_invalid : 1; uint32_t enable_division_by_zero : 1; uint32_t enable_overflow : 1; uint32_t enable_underflow : 1; uint32_t enable_inexact : 1; uint32_t flag_invalid_operation : 1; uint32_t flag_division_by_zero : 1; uint32_t flag_overflow : 1; uint32_t flag_underflow : 1; uint32_t flag_inexact : 1; uint32_t rm : 2; #else # error "unsupported endianness" #endif };