int qual_flg; /* qual_flags[scno] or DEFAULT_QUAL_FLAGS + RAW */
unsigned long u_error; /* Error code */
kernel_scno_t scno; /* System call number */
- long u_arg[MAX_ARGS]; /* System call arguments */
+ kernel_ureg_t u_arg[MAX_ARGS]; /* System call arguments */
#if HAVE_STRUCT_TCB_EXT_ARG
- long long ext_arg[MAX_ARGS];
+ unsigned long long ext_arg[MAX_ARGS];
long long u_lrval; /* long long return value */
#endif
long u_rval; /* Return value */
}
static int
-decode_select(struct tcb *tcp, long *args,
+decode_select(struct tcb *tcp, kernel_ureg_t *args,
void (*print_tv_ts) (struct tcb *, const long),
const char * (*sprint_tv_ts) (struct tcb *, const long))
{
SYS_FUNC(oldselect)
{
- long select_args[5];
+ kernel_ureg_t select_args[5];
unsigned int oldselect_args[5];
if (sizeof(*select_args) == sizeof(*oldselect_args)) {
tprintf("%ld", tcp->u_arg[arg]);
# if SUPPORTED_PERSONALITIES > 1
else
- tprintf("%ld",
- ((unsigned long) tcp->u_arg[arg + 1] << current_wordsize * 8)
- | (unsigned long) tcp->u_arg[arg]);
+ tprintf("%ld", (tcp->u_arg[arg + 1] << current_wordsize * 8)
+ | tcp->u_arg[arg]);
# endif
#elif SIZEOF_LONG > 4
# error Unsupported configuration: SIZEOF_LONG > 4 && SIZEOF_LONG_LONG > SIZEOF_LONG
# endif
typedef unsigned long kernel_scno_t;
+typedef unsigned long kernel_ureg_t;
typedef struct {
kernel_ulong_t d_ino;
# if SUPPORTED_PERSONALITIES > 1
/* tcp->ext_arg is not initialized for compat personality */
if (current_personality == 1) {
- offset = tcp->u_arg[1];
+ offset = (long) tcp->u_arg[1];
} else
# endif
{
# if SUPPORTED_PERSONALITIES > 1 && SIZEOF_LONG > 4
# ifdef X86_64
current_personality == 1 ?
- (long)(int) tcp->u_arg[1] : tcp->u_arg[1];
+ (long) (int) tcp->u_arg[1] : (long) tcp->u_arg[1];
# else
current_wordsize == 4 ?
- (long)(int) tcp->u_arg[1] : tcp->u_arg[1];
+ (long) (int) tcp->u_arg[1] : (long) tcp->u_arg[1];
# endif
# else
tcp->u_arg[1];
#include "xlat/mmap_flags.h"
static void
-print_mmap(struct tcb *tcp, long *u_arg, unsigned long long offset)
+print_mmap(struct tcb *tcp, kernel_ureg_t *u_arg, unsigned long long offset)
{
const unsigned long addr = u_arg[0];
const unsigned long len = u_arg[1];
/* Params are pointed to by u_arg[0], offset is in bytes */
SYS_FUNC(old_mmap)
{
- long u_arg[6];
+ kernel_ureg_t u_arg[6];
# if defined AARCH64 || defined X86_64
/* We are here only in a 32-bit personality. */
unsigned int narrow_arg[6];
/* Params are pointed to by u_arg[0], offset is in pages */
SYS_FUNC(old_mmap_pgoff)
{
- long u_arg[5];
+ kernel_ureg_t u_arg[5];
int i;
unsigned narrow_arg[6];
unsigned long long offset;
#if HAVE_STRUCT_TCB_EXT_ARG
tcp->ext_arg[5]; /* try test/x32_mmap.c */
#else
- (unsigned long) tcp->u_arg[5];
+ tcp->u_arg[5];
#endif
/* Example of kernel-side handling of this variety of mmap:
* arch/x86/kernel/sys_x86_64.c::SYSCALL_DEFINE6(mmap, ...) calls
{
/* Try test/mmap_offset_decode.c */
unsigned long long offset;
- offset = (unsigned long) tcp->u_arg[5];
+ offset = tcp->u_arg[5];
offset *= get_pagesize();
print_mmap(tcp, tcp->u_arg, offset);
SYS_FUNC(mmap_4koff)
{
unsigned long long offset;
- offset = (unsigned long) tcp->u_arg[5];
+ offset = tcp->u_arg[5];
offset <<= 12;
print_mmap(tcp, tcp->u_arg, offset);
{
int i, j;
int nfds;
- long *args;
- long select_args[5];
+ kernel_ureg_t *args;
+ kernel_ureg_t select_args[5];
unsigned int oldselect_args[5];
unsigned int fdsize;
fd_set *fds;
#if HAVE_STRUCT_TCB_EXT_ARG
# if SUPPORTED_PERSONALITIES > 1
if (current_personality == 1)
- return (unsigned long) tcp->u_arg[argn];
+ return tcp->u_arg[argn];
else
# endif
- return (unsigned long long) tcp->ext_arg[argn];
+ return tcp->ext_arg[argn];
#else
- return (unsigned long) tcp->u_arg[argn];
+ return tcp->u_arg[argn];
#endif
}