/* SPDX-License-Identifier: GPL-2.0-only */ /* * Copyright (c) 2018 Red Hat Inc * * Authors: * David Hildenbrand */ #ifndef _ASMS390X_FLOAT_H_ #define _ASMS390X_FLOAT_H_ static inline void set_fpc(uint32_t fpc) { asm volatile(" lfpc %0\n" : : "m"(fpc) ); } static inline uint32_t get_fpc(void) { uint32_t fpc; asm volatile(" stfpc %0\n" : "=m"(fpc)); return fpc; } static inline uint8_t get_fpc_dxc(void) { return get_fpc() >> 8; } static inline void set_fpc_dxc(uint8_t dxc) { uint32_t fpc = get_fpc(); fpc = (fpc & ~0xff00) | ((uint32_t)dxc) << 8; set_fpc(fpc); } static inline void afp_enable(void) { ctl_set_bit(0, CTL0_AFP); } static inline void afp_disable(void) { ctl_clear_bit(0, CTL0_AFP); } #endif