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: 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> Message-Id: <20200705140315.260514-8-huth@tuxfamily.org> Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
12b3540547
commit
25a08409ab
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user