| /* SPDX-License-Identifier: GPL-2.0-only */ | |
| /* | |
| * Copyright (c) 2018 Red Hat Inc | |
| * | |
| * Authors: | |
| * David Hildenbrand <david@redhat.com> | |
| */ | |
| #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 |