e2k: Add systrace print for access_hw_stacks.
Signed-off-by: Denis Drakhnya <numas13@gmail.com>
This commit is contained in:
parent
d8c92845a7
commit
9dd2d3dbf6
|
@ -72,16 +72,16 @@ struct target_pt_regs {
|
|||
|
||||
/* modes for sys_access_hw_stacks */
|
||||
enum {
|
||||
E2K_READ_CHAIN_STACK,
|
||||
E2K_READ_PROCEDURE_STACK,
|
||||
E2K_WRITE_PROCEDURE_STACK,
|
||||
E2K_GET_CHAIN_STACK_OFFSET,
|
||||
E2K_GET_CHAIN_STACK_SIZE,
|
||||
E2K_GET_PROCEDURE_STACK_SIZE,
|
||||
E2K_READ_CHAIN_STACK_EX,
|
||||
E2K_READ_PROCEDURE_STACK_EX,
|
||||
E2K_WRITE_PROCEDURE_STACK_EX,
|
||||
E2K_WRITE_CHAIN_STACK_EX,
|
||||
READ_CHAIN_STACK,
|
||||
READ_PROCEDURE_STACK,
|
||||
WRITE_PROCEDURE_STACK,
|
||||
GET_CHAIN_STACK_OFFSET,
|
||||
GET_CHAIN_STACK_SIZE,
|
||||
GET_PROCEDURE_STACK_SIZE,
|
||||
READ_CHAIN_STACK_EX,
|
||||
READ_PROCEDURE_STACK_EX,
|
||||
WRITE_PROCEDURE_STACK_EX,
|
||||
WRITE_CHAIN_STACK_EX,
|
||||
};
|
||||
|
||||
#endif /* E2K_TARGET_SYSCALL_H */
|
||||
|
|
|
@ -1411,6 +1411,20 @@ UNUSED static struct enums itimer_types[] = {
|
|||
ENUM_END,
|
||||
};
|
||||
|
||||
UNUSED static struct enums access_hw_stacks_reqs[] = {
|
||||
ENUM_GENERIC(READ_CHAIN_STACK),
|
||||
ENUM_GENERIC(READ_PROCEDURE_STACK),
|
||||
ENUM_GENERIC(WRITE_PROCEDURE_STACK),
|
||||
ENUM_GENERIC(GET_CHAIN_STACK_OFFSET),
|
||||
ENUM_GENERIC(GET_CHAIN_STACK_SIZE),
|
||||
ENUM_GENERIC(GET_PROCEDURE_STACK_SIZE),
|
||||
ENUM_GENERIC(READ_CHAIN_STACK_EX),
|
||||
ENUM_GENERIC(READ_PROCEDURE_STACK_EX),
|
||||
ENUM_GENERIC(WRITE_PROCEDURE_STACK_EX),
|
||||
ENUM_GENERIC(WRITE_CHAIN_STACK_EX),
|
||||
ENUM_END,
|
||||
};
|
||||
|
||||
/*
|
||||
* print_xxx utility functions. These are used to print syscall
|
||||
* parameters in certain format. All of these have parameter
|
||||
|
@ -3758,15 +3772,18 @@ print_ioctl(void *cpu_env, const struct syscallname *name,
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef TARGET_NR_e2k_longjmp2
|
||||
#ifdef TARGET_NR_access_hw_stacks
|
||||
static void
|
||||
print_e2k_jmp_info(void *cpu_env, const struct syscallname *name,
|
||||
print_access_hw_stacks(void *cpu_env, const struct syscallname *name,
|
||||
abi_long arg0, abi_long arg1, abi_long arg2,
|
||||
abi_long arg3, abi_long arg4, abi_long arg5)
|
||||
{
|
||||
print_syscall_prologue(name);
|
||||
print_pointer(arg0, 0);
|
||||
print_raw_param("%d", arg1, 1);
|
||||
print_enums(access_hw_stacks_reqs, arg0, 0);
|
||||
print_pointer(arg1, 0);
|
||||
print_pointer(arg2, 0);
|
||||
print_raw_param("%d", arg3, 0);
|
||||
print_pointer(arg4, 1);
|
||||
print_syscall_epilogue(name);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -127,8 +127,11 @@
|
|||
{ TARGET_NR_dup3, "dup3" , "%s(%d,%d,%d)", NULL, NULL },
|
||||
#endif
|
||||
#ifdef TARGET_NR_e2k_longjmp2
|
||||
{ TARGET_NR_e2k_longjmp2, "e2k_longjmp2", "%s(%p, %d)",
|
||||
print_e2k_jmp_info, NULL },
|
||||
{ TARGET_NR_e2k_longjmp2, "e2k_longjmp2", "%s(%p, %d)", NULL, NULL },
|
||||
#endif
|
||||
#ifdef TARGET_NR_access_hw_stacks
|
||||
{ TARGET_NR_access_hw_stacks, "access_hw_stacks", NULL,
|
||||
print_access_hw_stacks, NULL },
|
||||
#endif
|
||||
#ifdef TARGET_NR_epoll_create
|
||||
{ TARGET_NR_epoll_create, "epoll_create", "%s(%d)", NULL, NULL },
|
||||
|
|
|
@ -11943,7 +11943,8 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
|||
return ret;
|
||||
#endif
|
||||
#ifdef TARGET_NR_e2k_longjmp2
|
||||
case TARGET_NR_e2k_longjmp2: {
|
||||
case TARGET_NR_e2k_longjmp2:
|
||||
{
|
||||
E2KCPU *e2k_cpu = E2K_CPU(cpu);
|
||||
CPUE2KState *env = &e2k_cpu->env;
|
||||
struct target_jmp_info ji;
|
||||
|
@ -11957,9 +11958,18 @@ static abi_long do_syscall1(void *cpu_env, int num, abi_long arg1,
|
|||
#endif
|
||||
#ifdef TARGET_NR_access_hw_stacks
|
||||
case TARGET_NR_access_hw_stacks:
|
||||
{
|
||||
#if 0
|
||||
abi_ulong mode = arg2;
|
||||
abi_ulong frame_ptr = arg3; // __user (abi_ullong *)
|
||||
abi_ulong buf = arg4; // __user (char *)
|
||||
abi_ulong buf_size = arg5;
|
||||
abi_ulong real_size = arg6; // __user (void *)
|
||||
#endif
|
||||
|
||||
// TODO: e2k_sys_access_hw_stacks
|
||||
qemu_log_mask(LOG_UNIMP, "syscall access_hw_stacks is not implemented yet\n");
|
||||
return -TARGET_EPERM;
|
||||
return -TARGET_ENOSYS;
|
||||
}
|
||||
#endif
|
||||
#ifdef CONFIG_ATTR
|
||||
#ifdef TARGET_NR_setxattr
|
||||
|
|
Loading…
Reference in New Issue