fpsimd.h (af7167d6d2675f3343eff3ad6c9b4a8e30122e2c) fpsimd.h (0033cd9339642f9b7bef23f96aa2e7277ab51cce)
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2012 ARM Ltd.
4 */
5#ifndef __ASM_FP_H
6#define __ASM_FP_H
7
8#include <asm/errno.h>

--- 33 unchanged lines hidden (view full) ---

42
43extern void fpsimd_signal_preserve_current_state(void);
44extern void fpsimd_preserve_current_state(void);
45extern void fpsimd_restore_current_state(void);
46extern void fpsimd_update_current_state(struct user_fpsimd_state const *state);
47
48extern void fpsimd_bind_state_to_cpu(struct user_fpsimd_state *state,
49 void *sve_state, unsigned int sve_vl,
1/* SPDX-License-Identifier: GPL-2.0-only */
2/*
3 * Copyright (C) 2012 ARM Ltd.
4 */
5#ifndef __ASM_FP_H
6#define __ASM_FP_H
7
8#include <asm/errno.h>

--- 33 unchanged lines hidden (view full) ---

42
43extern void fpsimd_signal_preserve_current_state(void);
44extern void fpsimd_preserve_current_state(void);
45extern void fpsimd_restore_current_state(void);
46extern void fpsimd_update_current_state(struct user_fpsimd_state const *state);
47
48extern void fpsimd_bind_state_to_cpu(struct user_fpsimd_state *state,
49 void *sve_state, unsigned int sve_vl,
50 unsigned int sme_vl, u64 *svcr);
50 void *za_state, unsigned int sme_vl,
51 u64 *svcr);
51
52extern void fpsimd_flush_task_state(struct task_struct *target);
53extern void fpsimd_save_and_flush_cpu_state(void);
54
55static inline bool thread_sm_enabled(struct thread_struct *thread)
56{
57 return system_supports_sme() && (thread->svcr & SYS_SVCR_EL0_SM_MASK);
58}

--- 26 unchanged lines hidden (view full) ---

85
86extern void sve_save_state(void *state, u32 *pfpsr, int save_ffr);
87extern void sve_load_state(void const *state, u32 const *pfpsr,
88 int restore_ffr);
89extern void sve_flush_live(bool flush_ffr, unsigned long vq_minus_1);
90extern unsigned int sve_get_vl(void);
91extern void sve_set_vq(unsigned long vq_minus_1);
92extern void sme_set_vq(unsigned long vq_minus_1);
52
53extern void fpsimd_flush_task_state(struct task_struct *target);
54extern void fpsimd_save_and_flush_cpu_state(void);
55
56static inline bool thread_sm_enabled(struct thread_struct *thread)
57{
58 return system_supports_sme() && (thread->svcr & SYS_SVCR_EL0_SM_MASK);
59}

--- 26 unchanged lines hidden (view full) ---

86
87extern void sve_save_state(void *state, u32 *pfpsr, int save_ffr);
88extern void sve_load_state(void const *state, u32 const *pfpsr,
89 int restore_ffr);
90extern void sve_flush_live(bool flush_ffr, unsigned long vq_minus_1);
91extern unsigned int sve_get_vl(void);
92extern void sve_set_vq(unsigned long vq_minus_1);
93extern void sme_set_vq(unsigned long vq_minus_1);
94extern void za_save_state(void *state);
95extern void za_load_state(void const *state);
93
94struct arm64_cpu_capabilities;
95extern void sve_kernel_enable(const struct arm64_cpu_capabilities *__unused);
96extern void sme_kernel_enable(const struct arm64_cpu_capabilities *__unused);
97extern void fa64_kernel_enable(const struct arm64_cpu_capabilities *__unused);
98
99extern u64 read_zcr_features(void);
100extern u64 read_smcr_features(void);

--- 234 unchanged lines hidden ---
96
97struct arm64_cpu_capabilities;
98extern void sve_kernel_enable(const struct arm64_cpu_capabilities *__unused);
99extern void sme_kernel_enable(const struct arm64_cpu_capabilities *__unused);
100extern void fa64_kernel_enable(const struct arm64_cpu_capabilities *__unused);
101
102extern u64 read_zcr_features(void);
103extern u64 read_smcr_features(void);

--- 234 unchanged lines hidden ---