OpenOCD
|
Go to the source code of this file.
Data Structures | |
struct | armv8_arch_cache |
struct | armv8_cache_common |
struct | armv8_cachesize |
struct | armv8_common |
struct | armv8_l2x_cache |
struct | armv8_mmu_common |
Functions | |
int | armv8_arch_state (struct target *target) |
static unsigned int | armv8_curel_from_core_mode (enum arm_mode core_mode) |
void | armv8_free_reg_cache (struct target *target) |
int | armv8_handle_cache_info_command (struct command_invocation *cmd, struct armv8_cache_common *armv8_cache) |
int | armv8_identify_cache (struct armv8_common *armv8) |
int | armv8_init_arch_info (struct target *target, struct armv8_common *armv8) |
int | armv8_mmu_translate_va (struct target *target, target_addr_t va, target_addr_t *val) |
int | armv8_mmu_translate_va_pa (struct target *target, target_addr_t va, target_addr_t *val, int meminfo) |
const char * | armv8_mode_name (unsigned int psr_mode) |
Map PSR mode bits to the name of an ARM processor operating mode. More... | |
int | armv8_read_mpidr (struct armv8_common *armv8) |
void | armv8_select_reg_access (struct armv8_common *armv8, bool is_aarch64) |
void | armv8_set_cpsr (struct arm *arm, uint32_t cpsr) |
Configures host-side ARM records to reflect the specified CPSR. More... | |
int | armv8_set_dbgreg_bits (struct armv8_common *armv8, unsigned int reg, unsigned long mask, unsigned long value) |
static bool | is_armv8 (struct armv8_common *armv8) |
static struct armv8_common * | target_to_armv8 (struct target *target) |
Variables | |
const struct command_registration | armv8_command_handlers [] |
#define PAGE_SIZE_4KB_LEVEL0_MASK ((0x1FFULL) << PAGE_SIZE_4KB_LEVEL0_BITS) |
#define PAGE_SIZE_4KB_LEVEL1_MASK ((0x1FFULL) << PAGE_SIZE_4KB_LEVEL1_BITS) |
#define PAGE_SIZE_4KB_LEVEL2_MASK ((0x1FFULL) << PAGE_SIZE_4KB_LEVEL2_BITS) |
#define PAGE_SIZE_4KB_LEVEL3_MASK ((0x1FFULL) << PAGE_SIZE_4KB_LEVEL3_BITS) |
anonymous enum |
enum run_control_op |
|
inlinestatic |
Definition at line 308 of file armv8.h.
References ARM_MODE_ABT, ARM_MODE_FIQ, ARM_MODE_IRQ, ARM_MODE_MON, ARM_MODE_SVC, ARM_MODE_SYS, ARM_MODE_UND, and ARM_MODE_USR.
Referenced by armv8_dpm_read_current_registers(), armv8_dpm_write_dirty_registers(), armv8_identify_cache(), armv8_mmu_translate_va_pa(), armv8_read_mpidr(), armv8_read_reg(), armv8_read_ttbcr(), and armv8_write_reg().
void armv8_free_reg_cache | ( | struct target * | target | ) |
Definition at line 1916 of file armv8.c.
Referenced by aarch64_deinit_target().
int armv8_handle_cache_info_command | ( | struct command_invocation * | cmd, |
struct armv8_cache_common * | armv8_cache | ||
) |
Definition at line 1271 of file armv8.c.
References cmd, command_print(), armv8_cache_common::display_cache_info, ERROR_OK, and armv8_cache_common::info.
Referenced by COMMAND_HANDLER().
int armv8_identify_cache | ( | struct armv8_common * | armv8 | ) |
Definition at line 297 of file armv8_cache.c.
References armv8_cache_common::arch, armv8_common::arm, ARM_MODE_ANY, ARMV8_64_EL1H, armv8_mmu_common::armv8_cache, armv8_curel_from_core_mode(), armv8_dpm_modeswitch(), armv8_flush_all_data(), armv8_handle_inner_cache_info_command(), armv8_common::armv8_mmu, armv8_cachesize::associativity, CACHE_LEVEL_HAS_D_CACHE, CACHE_LEVEL_HAS_I_CACHE, CACHE_LEVEL_HAS_UNIFIED_CACHE, armv8_cachesize::cachesize, arm::core_mode, armv8_arch_cache::ctype, armv8_arch_cache::d_u_size, decode_cache_reg(), armv8_cache_common::display_cache_info, armv8_cache_common::dminline, arm::dpm, ERROR_FAIL, ERROR_OK, arm_dpm::finish, armv8_cache_common::flush_all_data_cache, get_cache_info(), armv8_arch_cache::i_size, armv8_cache_common::iminline, armv8_cachesize::index, armv8_cachesize::index_shift, armv8_cache_common::info, arm_dpm::instr_read_data_r0, arm_dpm::instr_write_data_r0, armv8_cachesize::linelen, armv8_cache_common::loc, LOG_DEBUG, arm_dpm::prepare, READ_REG_CLIDR, READ_REG_CSSELR, READ_REG_CTR, SYSTEM_CUREL_EL1, armv8_cachesize::way, armv8_cachesize::way_shift, and WRITE_REG_CSSELR.
Referenced by aarch64_post_debug_entry().
int armv8_init_arch_info | ( | struct target * | target, |
struct armv8_common * | armv8 | ||
) |
Definition at line 1289 of file armv8.c.
References arm::arch_info, target::arch_info, armv8_common::arm, ARM_COMMON_MAGIC, armv8_mmu_common::armv8_cache, ARMV8_COMMON_MAGIC, armv8_common::armv8_mmu, armv8_setup_semihosting(), arm::common_magic, armv8_common::common_magic, armv8_cache_common::display_cache_info, ERROR_OK, armv8_cache_common::flush_all_data_cache, armv8_cache_common::info, armv8_cache_common::l2_cache, NULL, arm::setup_semihosting, target, and arm::target.
Referenced by aarch64_init_arch_info().
int armv8_mmu_translate_va | ( | struct target * | target, |
target_addr_t | va, | ||
target_addr_t * | val | ||
) |
int armv8_mmu_translate_va_pa | ( | struct target * | target, |
target_addr_t | va, | ||
target_addr_t * | val, | ||
int | meminfo | ||
) |
Definition at line 1106 of file armv8.c.
References ARM_MODE_ANY, ARMV8_64_EL2H, armv8_curel_from_core_mode(), armv8_decode_memory_attr(), armv8_dpm_modeswitch(), ARMV8_MRS, ARMV8_SYS, arm::core_mode, armv8_common::dpm, ERROR_FAIL, ERROR_OK, ERROR_TARGET_NOT_HALTED, arm_dpm::finish, arm_dpm::instr_read_data_r0_64, arm_dpm::instr_write_data_r0_64, LOG_ERROR, LOG_TARGET_ERROR, LOG_USER, arm_dpm::prepare, target::state, SYSTEM_ATS12E0R, SYSTEM_ATS12E1R, SYSTEM_ATS1E2R, SYSTEM_ATS1E3R, SYSTEM_CUREL_EL0, SYSTEM_CUREL_EL1, SYSTEM_CUREL_EL2, SYSTEM_CUREL_EL3, SYSTEM_PAR_EL1, TARGET_HALTED, target_to_arm(), and target_to_armv8().
Referenced by aarch64_virt2phys().
const char* armv8_mode_name | ( | unsigned int | psr_mode | ) |
Map PSR mode bits to the name of an ARM processor operating mode.
Definition at line 108 of file armv8.c.
References armv8_mode_data, ARRAY_SIZE, LOG_ERROR, and psr.
Referenced by aarch64_post_debug_entry(), aarch64_restore_system_control_reg(), armv8_aarch64_state(), and armv8_set_cpsr().
int armv8_read_mpidr | ( | struct armv8_common * | armv8 | ) |
Definition at line 881 of file armv8.c.
References armv8_common::arm, ARM_MODE_ANY, ARMV8_64_EL1H, armv8_curel_from_core_mode(), armv8_dpm_modeswitch(), armv8_common::cluster_id, arm::core_mode, armv8_common::cpu_id, arm::dpm, ERROR_FAIL, ERROR_OK, arm_dpm::finish, arm_dpm::instr_read_data_r0, LOG_ERROR, LOG_INFO, armv8_common::multi_processor_system, arm_dpm::prepare, READ_REG_MPIDR, SYSTEM_CUREL_EL1, arm::target, and target_name().
Referenced by aarch64_post_debug_entry().
void armv8_select_reg_access | ( | struct armv8_common * | armv8, |
bool | is_aarch64 | ||
) |
Definition at line 864 of file armv8.c.
References armv8_read_reg(), armv8_read_reg32(), armv8_read_reg_simdfp_aarch32(), armv8_read_reg_simdfp_aarch64(), armv8_write_reg(), armv8_write_reg32(), armv8_write_reg_simdfp_aarch32(), armv8_write_reg_simdfp_aarch64(), armv8_common::read_reg_u128, armv8_common::read_reg_u64, armv8_common::write_reg_u128, and armv8_common::write_reg_u64.
Referenced by aarch64_debug_entry(), armv8_dpm_handle_exception(), and armv8_dpm_modeswitch().
void armv8_set_cpsr | ( | struct arm * | arm, |
uint32_t | cpsr | ||
) |
Configures host-side ARM records to reflect the specified CPSR.
Later, code can use arm_reg_current() to map register numbers according to how they are exposed by this mode.
Definition at line 924 of file armv8.c.
References ARM_STATE_AARCH64, ARM_STATE_ARM, ARM_STATE_JAZELLE, ARM_STATE_THUMB, ARM_STATE_THUMB_EE, armv8_mode_name(), armv8_state_strings, buf_set_u32(), arm::core_mode, arm::core_state, arm::cpsr, reg::dirty, LOG_DEBUG, LOG_ERROR, LOG_WARNING, mode, state, reg::valid, and reg::value.
Referenced by armv8_dpm_read_current_registers().
int armv8_set_dbgreg_bits | ( | struct armv8_common * | armv8, |
unsigned int | reg, | ||
unsigned long | mask, | ||
unsigned long | value | ||
) |
Definition at line 2020 of file armv8.c.
References armv8_common::debug_ap, armv8_common::debug_base, ERROR_OK, mask, mem_ap_read_atomic_u32(), and mem_ap_write_atomic_u32().
Referenced by aarch64_set_dscr_bits().
|
inlinestatic |
Definition at line 243 of file armv8.h.
References ARMV8_COMMON_MAGIC, and armv8_common::common_magic.
Referenced by arm_semihosting(), arm_semihosting_resume(), and post_result().
|
inlinestatic |
Definition at line 238 of file armv8.h.
References target::arch_info, and container_of.
Referenced by __attribute__(), _armv8_flush_all_data(), aarch64_assert_reset(), aarch64_clear_reset_catch(), aarch64_dap_write_memap_register_u32(), aarch64_debug_entry(), aarch64_do_restart_one(), aarch64_enable_reset_catch(), aarch64_halt(), aarch64_halt_one(), aarch64_handle_target_request(), aarch64_hit_watchpoint(), aarch64_init_debug_access(), aarch64_poll(), aarch64_prepare_halt_smp(), aarch64_prepare_restart_one(), aarch64_read_cpu_memory(), aarch64_read_cpu_memory_fast(), aarch64_read_cpu_memory_slow(), aarch64_read_prsr(), aarch64_restore_context(), aarch64_restore_one(), aarch64_restore_system_control_reg(), aarch64_resume(), aarch64_set_dscr_bits(), aarch64_step(), aarch64_write_cpu_memory(), aarch64_write_cpu_memory_fast(), aarch64_write_cpu_memory_slow(), arm_semihosting(), arm_semihosting_resume(), armv8_build_reg_cache(), armv8_flush_all_data(), armv8_mmu_translate_va_pa(), armv8_read_ttbcr(), COMMAND_HANDLER(), and post_result().
|
extern |