17 #define ESP_XTENSA_SYSCALL 0x41E0
18 #define ESP_XTENSA_SYSCALL_SZ 3
20 #define XTENSA_SYSCALL_OP_REG XT_REG_IDX_A2
21 #define XTENSA_SYSCALL_RETVAL_REG XT_REG_IDX_A2
22 #define XTENSA_SYSCALL_ERRNO_REG XT_REG_IDX_A3
58 uint8_t brk_insn_buf[
sizeof(uint32_t)] = { 0 };
66 uint32_t syscall_ins =
buf_get_u32(brk_insn_buf, 0, 32);
static uint32_t buf_get_u32(const uint8_t *_buffer, unsigned int first, unsigned int num)
Retrieves num bits from _buffer, starting at the first bit, returning the bits in a 32-bit word.
int esp_semihosting_common(struct target *target)
static struct esp_xtensa_common * target_to_esp_xtensa(struct target *target)
int esp_xtensa_semihosting_init(struct target *target)
static int xtensa_semihosting_init(struct target *target)
#define ESP_XTENSA_SYSCALL_SZ
#define XTENSA_SYSCALL_RETVAL_REG
int esp_xtensa_semihosting(struct target *target, int *retval)
Checks and processes an ESP Xtensa semihosting request.
#define ESP_XTENSA_SYSCALL
static int esp_xtensa_semihosting_post_result(struct target *target)
#define XTENSA_SYSCALL_ERRNO_REG
static int esp_xtensa_semihosting_setup(struct target *target, int enable)
#define LOG_TARGET_ERROR(target, fmt_str,...)
#define LOG_TARGET_DEBUG(target, fmt_str,...)
int semihosting_common_init(struct target *target, void *setup, void *post_result)
Initialize common semihosting support.
int semihosting_common(struct target *target)
Portable implementation of ARM semihosting calls.
struct esp_semihost_ops * ops
int(* prepare)(struct target *target)
Callback called before handling semihost call.
struct esp_semihost_data semihost
bool is_resumable
Most are resumable, except the two exit calls.
bool hit_fileio
A flag reporting whether semihosting fileio operation is active.
size_t word_size_bytes
The Target (hart) word size; 8 for 64-bits targets.
int(* user_command_extension)(struct target *target)
Target's extension of semihosting user commands.
int64_t result
The current semihosting result to be returned to the application.
char * basedir
Base directory for semihosting I/O operations.
int op
The current semihosting operation (R0 on ARM).
int sys_errno
The value to be returned by semihosting SYS_ERRNO request.
uint64_t param
The current semihosting parameter (R1 or ARM).
struct semihosting * semihosting
int target_read_memory(struct target *target, target_addr_t address, uint32_t size, uint32_t count, uint8_t *buffer)
Read count items of size bytes from the memory of target at the address given.
void xtensa_reg_set(struct target *target, enum xtensa_reg_id reg_id, xtensa_reg_val_t value)
xtensa_reg_val_t xtensa_reg_get(struct target *target, enum xtensa_reg_id reg_id)
Holds the interface to Xtensa cores.
uint32_t xtensa_reg_val_t