hc
2023-02-13 e440ec23c5a540cdd3f7464e8779219be6fd3d95
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# RISC-V CPU ISA extensions.
 
config BR2_RISCV_ISA_RVI
   bool
 
config BR2_RISCV_ISA_RVM
   bool
 
config BR2_RISCV_ISA_RVA
   bool
 
config BR2_RISCV_ISA_RVF
   bool
 
config BR2_RISCV_ISA_RVD
   bool
 
config BR2_RISCV_ISA_RVC
   bool
 
choice
   prompt "Target Architecture Variant"
   default BR2_riscv_g
 
config BR2_riscv_g
   bool "General purpose (G)"
   select BR2_RISCV_ISA_RVI
   select BR2_RISCV_ISA_RVM
   select BR2_RISCV_ISA_RVA
   select BR2_RISCV_ISA_RVF
   select BR2_RISCV_ISA_RVD
   help
     General purpose (G) is equivalent to IMAFD.
 
config BR2_riscv_custom
   bool "Custom architecture"
   select BR2_RISCV_ISA_RVI
   select BR2_RISCV_ISA_CUSTOM_RVA
 
endchoice
 
if BR2_riscv_custom
 
comment "Instruction Set Extensions"
 
config BR2_RISCV_ISA_CUSTOM_RVM
   bool "Integer Multiplication and Division (M)"
   select BR2_RISCV_ISA_RVM
 
config BR2_RISCV_ISA_CUSTOM_RVA
   bool "Atomic Instructions (A)"
   select BR2_RISCV_ISA_RVA
 
config BR2_RISCV_ISA_CUSTOM_RVF
   bool "Single-precision Floating-point (F)"
   select BR2_RISCV_ISA_RVF
 
config BR2_RISCV_ISA_CUSTOM_RVD
   bool "Double-precision Floating-point (D)"
   depends on BR2_RISCV_ISA_RVF
   select BR2_RISCV_ISA_RVD
 
config BR2_RISCV_ISA_CUSTOM_RVC
   bool "Compressed Instructions (C)"
   select BR2_RISCV_ISA_RVC
endif
 
choice
   prompt "Target Architecture Size"
   default BR2_RISCV_64
 
config BR2_RISCV_32
   bool "32-bit"
 
config BR2_RISCV_64
   bool "64-bit"
   select BR2_ARCH_IS_64
 
endchoice
 
choice
   prompt "Target ABI"
   default BR2_RISCV_ABI_ILP32D if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD
   default BR2_RISCV_ABI_ILP32F if !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF
   default BR2_RISCV_ABI_ILP32  if !BR2_ARCH_IS_64
   default BR2_RISCV_ABI_LP64D  if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD
   default BR2_RISCV_ABI_LP64F  if BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF
   default BR2_RISCV_ABI_LP64   if BR2_ARCH_IS_64
 
config BR2_RISCV_ABI_ILP32
   bool "ilp32"
   depends on !BR2_ARCH_IS_64
 
config BR2_RISCV_ABI_ILP32F
   bool "ilp32f"
   depends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF
 
config BR2_RISCV_ABI_ILP32D
   bool "ilp32d"
   depends on !BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD
 
config BR2_RISCV_ABI_LP64
   bool "lp64"
   depends on BR2_ARCH_IS_64
 
config BR2_RISCV_ABI_LP64F
   bool "lp64f"
   depends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVF
 
config BR2_RISCV_ABI_LP64D
   bool "lp64d"
   depends on BR2_ARCH_IS_64 && BR2_RISCV_ISA_RVD
endchoice
 
config BR2_ARCH
   default "riscv32" if !BR2_ARCH_IS_64
   default "riscv64" if BR2_ARCH_IS_64
 
config BR2_ENDIAN
   default "LITTLE"
 
config BR2_GCC_TARGET_ABI
   default "ilp32" if BR2_RISCV_ABI_ILP32
   default "ilp32f" if BR2_RISCV_ABI_ILP32F
   default "ilp32d" if BR2_RISCV_ABI_ILP32D
   default "lp64" if BR2_RISCV_ABI_LP64
   default "lp64f" if BR2_RISCV_ABI_LP64F
   default "lp64d" if BR2_RISCV_ABI_LP64D
 
config BR2_READELF_ARCH_NAME
   default "RISC-V"
 
# vim: ft=kconfig
# -*- mode:kconfig; -*-