1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
/* SPDX-License-Identifier: GPL-2.0-only */
/*
* Copyright (C) 2019 Kalray Inc.
*/
#ifndef _ASM_KVX_SYS_ARCH_H
#define _ASM_KVX_SYS_ARCH_H
#include <asm/sfr_defs.h>
#define EXCEPTION_STRIDE 0x40
#define EXCEPTION_ALIGNMENT 0x100
#define KVX_SFR_START(__sfr_reg) \
(KVX_SFR_## __sfr_reg ## _SHIFT)
#define KVX_SFR_END(__sfr_reg) \
(KVX_SFR_## __sfr_reg ## _SHIFT + KVX_SFR_## __sfr_reg ## _WIDTH - 1)
/**
* Get the value to clear a sfr
*/
#define SFR_CLEAR(__sfr, __field, __lm) \
KVX_SFR_## __sfr ## _ ## __field ## _ ## __lm ## _CLEAR
#define SFR_CLEAR_WFXL(__sfr, __field) SFR_CLEAR(__sfr, __field, WFXL)
#define SFR_CLEAR_WFXM(__sfr, __field) SFR_CLEAR(__sfr, __field, WFXM)
/**
* Get the value to set a sfr.
*/
#define SFR_SET_WFXL(__sfr, __field, __val) \
(__val << (KVX_SFR_ ## __sfr ## _ ## __field ## _SHIFT + 32))
#define SFR_SET_WFXM(__sfr, __field, __val) \
(__val << (KVX_SFR_ ## __sfr ## _ ## __field ## _SHIFT))
/**
* Generate the mask to clear and set a value using wfx{m|l}.
*/
#define SFR_SET_VAL_WFXL(__sfr, __field, __val) \
(SFR_SET_WFXL(__sfr, __field, __val) | SFR_CLEAR_WFXL(__sfr, __field))
#define SFR_SET_VAL_WFXM(__sfr, __field, __val) \
(SFR_SET_WFXM(__sfr, __field, __val) | SFR_CLEAR_WFXM(__sfr, __field))
#endif /* _ASM_KVX_SYS_ARCH_H */
|