hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
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
47
48
49
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copied from arch/arm64/include/asm/hwcap.h
 *
 * Copyright (C) 2012 ARM Ltd.
 * Copyright (C) 2017 SiFive
 */
#ifndef _ASM_RISCV_HWCAP_H
#define _ASM_RISCV_HWCAP_H
 
#include <linux/bits.h>
#include <uapi/asm/hwcap.h>
 
#ifndef __ASSEMBLY__
/*
 * This yields a mask that user programs can use to figure out what
 * instruction set this cpu supports.
 */
#define ELF_HWCAP        (elf_hwcap)
 
enum {
   CAP_HWCAP = 1,
};
 
extern unsigned long elf_hwcap;
 
#define RISCV_ISA_EXT_a        ('a' - 'a')
#define RISCV_ISA_EXT_c        ('c' - 'a')
#define RISCV_ISA_EXT_d        ('d' - 'a')
#define RISCV_ISA_EXT_f        ('f' - 'a')
#define RISCV_ISA_EXT_h        ('h' - 'a')
#define RISCV_ISA_EXT_i        ('i' - 'a')
#define RISCV_ISA_EXT_m        ('m' - 'a')
#define RISCV_ISA_EXT_s        ('s' - 'a')
#define RISCV_ISA_EXT_u        ('u' - 'a')
 
#define RISCV_ISA_EXT_MAX    64
 
unsigned long riscv_isa_extension_base(const unsigned long *isa_bitmap);
 
#define riscv_isa_extension_mask(ext) BIT_MASK(RISCV_ISA_EXT_##ext)
 
bool __riscv_isa_extension_available(const unsigned long *isa_bitmap, int bit);
#define riscv_isa_extension_available(isa_bitmap, ext)    \
   __riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_##ext)
 
#endif
 
#endif /* _ASM_RISCV_HWCAP_H */