Skip to content
Snippets Groups Projects
Commit 25a08409 authored by Michael Rolnik's avatar Michael Rolnik Committed by Philippe Mathieu-Daudé
Browse files

target/avr: Introduce enumeration AVRFeature


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: default avatarAleksandar Markovic <aleksandar.m.mail@gmail.com>
Co-developed-by: default avatarMichael Rolnik <mrolnik@gmail.com>
Co-developed-by: default avatarSarah Harris <S.E.Harris@kent.ac.uk>
Signed-off-by: default avatarMichael Rolnik <mrolnik@gmail.com>
Signed-off-by: default avatarSarah Harris <S.E.Harris@kent.ac.uk>
Signed-off-by: default avatarRichard Henderson <richard.henderson@linaro.org>
Signed-off-by: default avatarAleksandar Markovic <aleksandar.m.mail@gmail.com>
Acked-by: default avatarIgor Mammedov <imammedo@redhat.com>
Tested-by: default avatarPhilippe Mathieu-Daudé <philmd@redhat.com>
Signed-off-by: default avatarThomas Huth <huth@tuxfamily.org>
Message-Id: <20200705140315.260514-8-huth@tuxfamily.org>
Signed-off-by: default avatarPhilippe Mathieu-Daudé <f4bug@amsat.org>
parent 12b35405
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment