[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH rc6 07/30] target/avr: Introduce enumeration AVRFeature
From: |
Thomas Huth |
Subject: |
[PATCH rc6 07/30] target/avr: Introduce enumeration AVRFeature |
Date: |
Sun, 5 Jul 2020 16:02:52 +0200 |
From: Michael Rolnik <mrolnik@gmail.com>
This patch introduces enumeration "AVRFeature" that will be
used for defining various AVR core types.
[AM: Split a larger AVR introduction patch into logical units]
Suggested-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>
Co-developed-by: Michael Rolnik <mrolnik@gmail.com>
Co-developed-by: Sarah Harris <S.E.Harris@kent.ac.uk>
Signed-off-by: Michael Rolnik <mrolnik@gmail.com>
Signed-off-by: Sarah Harris <S.E.Harris@kent.ac.uk>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Aleksandar Markovic <aleksandar.m.mail@gmail.com>
Acked-by: Igor Mammedov <imammedo@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: Thomas Huth <huth@tuxfamily.org>
---
target/avr/cpu.h | 46 ++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)
diff --git a/target/avr/cpu.h b/target/avr/cpu.h
index 675a33d17a..a7318632c5 100644
--- a/target/avr/cpu.h
+++ b/target/avr/cpu.h
@@ -72,6 +72,42 @@
*/
#define OFFSET_IO_REGISTERS (OFFSET_DATA + NUMBER_OF_CPU_REGISTERS)
+typedef enum AVRFeature {
+ AVR_FEATURE_SRAM,
+
+ AVR_FEATURE_1_BYTE_PC,
+ AVR_FEATURE_2_BYTE_PC,
+ AVR_FEATURE_3_BYTE_PC,
+
+ AVR_FEATURE_1_BYTE_SP,
+ AVR_FEATURE_2_BYTE_SP,
+
+ AVR_FEATURE_BREAK,
+ AVR_FEATURE_DES,
+ AVR_FEATURE_RMW, /* Read Modify Write - XCH LAC LAS LAT */
+
+ AVR_FEATURE_EIJMP_EICALL,
+ AVR_FEATURE_IJMP_ICALL,
+ AVR_FEATURE_JMP_CALL,
+
+ AVR_FEATURE_ADIW_SBIW,
+
+ AVR_FEATURE_SPM,
+ AVR_FEATURE_SPMX,
+
+ AVR_FEATURE_ELPMX,
+ AVR_FEATURE_ELPM,
+ AVR_FEATURE_LPMX,
+ AVR_FEATURE_LPM,
+
+ AVR_FEATURE_MOVW,
+ AVR_FEATURE_MUL,
+ AVR_FEATURE_RAMPD,
+ AVR_FEATURE_RAMPX,
+ AVR_FEATURE_RAMPY,
+ AVR_FEATURE_RAMPZ,
+} AVRFeature;
+
typedef struct CPUAVRState CPUAVRState;
struct CPUAVRState {
@@ -126,6 +162,16 @@ hwaddr avr_cpu_get_phys_page_debug(CPUState *cpu, vaddr
addr);
int avr_cpu_gdb_read_register(CPUState *cpu, GByteArray *buf, int reg);
int avr_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
+static inline int avr_feature(CPUAVRState *env, AVRFeature feature)
+{
+ return (env->features & (1U << feature)) != 0;
+}
+
+static inline void set_avr_feature(CPUAVRState *env, int feature)
+{
+ env->features |= (1U << feature);
+}
+
#define cpu_list avr_cpu_list
#define cpu_signal_handler cpu_avr_signal_handler
#define cpu_mmu_index avr_cpu_mmu_index
--
2.26.2
- [PATCH rc6 00/30] target/avr merger, Thomas Huth, 2020/07/05
- [PATCH rc6 01/30] target/avr: Add basic parameters of the new platform, Thomas Huth, 2020/07/05
- [PATCH rc6 05/30] target/avr: CPU class: Add migration support, Thomas Huth, 2020/07/05
- [PATCH rc6 04/30] target/avr: CPU class: Add memory menagement support, Thomas Huth, 2020/07/05
- [PATCH rc6 03/30] target/avr: CPU class: Add interrupt handling support, Thomas Huth, 2020/07/05
- [PATCH rc6 02/30] target/avr: Introduce basic CPU class object, Thomas Huth, 2020/07/05
- [PATCH rc6 06/30] target/avr: CPU class: Add GDB support, Thomas Huth, 2020/07/05
- [PATCH rc6 08/30] target/avr: Add defintions of AVR core types, Thomas Huth, 2020/07/05
- [PATCH rc6 09/30] target/avr: Add instruction helpers, Thomas Huth, 2020/07/05
- [PATCH rc6 07/30] target/avr: Introduce enumeration AVRFeature,
Thomas Huth <=
- [PATCH rc6 10/30] target/avr: Add instruction translation - Register definitions, Thomas Huth, 2020/07/05
- [PATCH rc6 11/30] target/avr: Add instruction translation - Arithmetic and Logic Instructions, Thomas Huth, 2020/07/05
- [PATCH rc6 14/30] target/avr: Add instruction translation - Bit and Bit-test Instructions, Thomas Huth, 2020/07/05
- [PATCH rc6 17/30] target/avr: Initialize TCG register variables, Thomas Huth, 2020/07/05
- [PATCH rc6 13/30] target/avr: Add instruction translation - Data Transfer Instructions, Thomas Huth, 2020/07/05
- [PATCH rc6 12/30] target/avr: Add instruction translation - Branch Instructions, Thomas Huth, 2020/07/05
- [PATCH rc6 15/30] target/avr: Add instruction translation - MCU Control Instructions, Thomas Huth, 2020/07/05
- [PATCH rc6 16/30] target/avr: Add instruction translation - CPU main translation function, Thomas Huth, 2020/07/05
- [PATCH rc6 18/30] target/avr: Add support for disassembling via option '-d in_asm', Thomas Huth, 2020/07/05
- [PATCH rc6 19/30] hw/char: avr: Add limited support for USART peripheral, Thomas Huth, 2020/07/05