@@ -26,6 +26,66 @@ config CPU_CORTEX_M
2626	help
2727	  This option signifies the use of a CPU of the Cortex-M family.
2828
29+ config CPU_CORTEX_R
30+ 	bool
31+ 	select CPU_CORTEX
32+ 	select ARCH_HAS_CUSTOM_SWAP_TO_MAIN
33+ 	select HAS_FLASH_LOAD_OFFSET
34+ 	select HAS_DTS
35+ 	select ARCH_HAS_STACK_PROTECTION if ARM_CORE_MPU
36+ 	select ARCH_HAS_USERSPACE if ARM_CORE_MPU
37+ 	help
38+ 	  This option signifies the use of a CPU of the Cortex-R family.
39+ 
40+ config ISA_THUMB2
41+ 	bool
42+ 	help
43+ 	  From: http://www.arm.com/products/processors/technologies/instruction-set-architectures.php
44+ 
45+ 	  Thumb-2 technology is the instruction set underlying the ARM Cortex
46+ 	  architecture which provides enhanced levels of performance, energy
47+ 	  efficiency, and code density for a wide range of embedded
48+ 	  applications.
49+ 
50+ 	  Thumb-2 technology builds on the success of Thumb, the innovative
51+ 	  high code density instruction set for ARM microprocessor cores, to
52+ 	  increase the power of the ARM microprocessor core available to
53+ 	  developers of low cost, high performance systems.
54+ 
55+ 	  The technology is backwards compatible with existing ARM and Thumb
56+ 	  solutions, while significantly extending the features available to
57+ 	  the Thumb instructions set. This allows more of the application to
58+ 	  benefit from the best in class code density of Thumb.
59+ 
60+ 	  For performance optimized code Thumb-2 technology uses 31 percent
61+ 	  less memory to reduce system cost, while providing up to 38 percent
62+ 	  higher performance than existing high density code, which can be used
63+ 	  to prolong battery-life or to enrich the product feature set. Thumb-2
64+ 	  technology is featured in the  processor, and in all ARMv7
65+ 	  architecture-based processors.
66+ 
67+ config ISA_ARM
68+ 	bool
69+ 	help
70+ 	  From: https://developer.arm.com/products/architecture/instruction-sets/a32-and-t32-instruction-sets
71+ 
72+ 	  A32 instructions, known as Arm instructions in pre-Armv8 architectures,
73+ 	  are 32 bits wide, and are aligned on 4-byte boundaries. A32 instructions
74+ 	  are supported by both A-profile and R-profile architectures.
75+ 
76+ 	  A32 was traditionally used in applications requiring the highest
77+ 	  performance, or for handling hardware exceptions such as interrupts and
78+ 	  processor start-up. Much of its functionality was subsumed into T32 with
79+ 	  the introduction of Thumb-2 technology.
80+ 
81+ config DATA_ENDIANNESS_LITTLE
82+ 	bool
83+ 	default y if CPU_CORTEX
84+ 	help
85+ 	  This is driven by the processor implementation, since it is fixed in
86+ 	  hardware. The board should set this value to 'n' if the data is
87+ 	  implemented as big endian.
88+ 
2989config CPU_HAS_SYSTICK
3090	bool
3191	# Omit prompt to signify "hidden" option
@@ -94,6 +154,38 @@ config ARM_NONSECURE_FIRMWARE
94154	  resources of the Cortex-M MCU, and, therefore, it shall avoid
95155	  accessing them.
96156
157+ config STACK_ALIGN_DOUBLE_WORD
158+ 	bool "Align stacks on double-words (8 octets)"
159+ 	default y
160+ 	help
161+ 	  This is needed to conform to AAPCS, the procedure call standard for
162+ 	  the ARM. It wastes stack space.
163+ 
164+ config RUNTIME_NMI
165+ 	bool
166+ 	prompt "Attach an NMI handler at runtime"
167+ 	select REBOOT
168+ 	help
169+ 	  The kernel provides a simple NMI handler that simply hangs in a tight
170+ 	  loop if triggered. This fills the requirement that there must be an
171+ 	  NMI handler installed when the CPU boots. If a custom handler is
172+ 	  needed, enable this option and attach it via _NmiHandlerSet().
173+ 
174+ config FAULT_DUMP
175+ 	int "Fault dump level"
176+ 	default 2
177+ 	range 0 2
178+ 	help
179+ 	  Different levels for display information when a fault occurs.
180+ 
181+ 	  2: The default. Display specific and verbose information. Consumes
182+ 		the most memory (long strings).
183+ 
184+ 	  1: Display general and short information. Consumes less memory
185+ 		(short strings).
186+ 
187+ 	  0: Off.
188+ 
97189menu "Architecture Floating Point Options"
98190depends on CPU_HAS_FPU
99191
@@ -122,6 +214,7 @@ endchoice
122214endmenu
123215
124216source "arch/arm/core/cortex_m/Kconfig"
217+ source "arch/arm/core/cortex_r/Kconfig"
125218
126219if CPU_HAS_MPU
127220source "arch/arm/core/cortex_m/mpu/Kconfig"
0 commit comments