Skip to content

Commit

Permalink
xtensa: ISS: add argc/argv simcall definitions
Browse files Browse the repository at this point in the history
There are three simcalls implemented by ISS and QEMU related to
argc/argv processing: SYS_iss_argc (get number of command line
arguments), SYS_iss_argv_size (get size of command line argument block)
and SYS_iss_set_argv (copy command line arguments to virtual guest
address).
Add definitions for these calls to iss/include/platform/simcall.h

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
  • Loading branch information
Max Filippov committed Mar 13, 2017
1 parent 3ced973 commit e8cd8da
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions arch/xtensa/platforms/iss/include/platform/simcall.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
* for more details.
*
* Copyright (C) 2001 Tensilica Inc.
* Copyright (C) 2017 Cadence Design Systems Inc.
*/

#ifndef _XTENSA_PLATFORM_ISS_SIMCALL_H
Expand Down Expand Up @@ -49,6 +50,10 @@
#define SYS_bind 30
#define SYS_ioctl 31

#define SYS_iss_argc 1000 /* returns value of argc */
#define SYS_iss_argv_size 1001 /* bytes needed for argv & arg strings */
#define SYS_iss_set_argv 1002 /* saves argv & arg strings at given addr */

/*
* SYS_select_one specifiers
*/
Expand Down Expand Up @@ -118,5 +123,20 @@ static inline int simc_lseek(int fd, uint32_t off, int whence)
return __simc(SYS_lseek, fd, off, whence);
}

static inline int simc_argc(void)
{
return __simc(SYS_iss_argc, 0, 0, 0);
}

static inline int simc_argv_size(void)
{
return __simc(SYS_iss_argv_size, 0, 0, 0);
}

static inline void simc_argv(void *buf)
{
__simc(SYS_iss_set_argv, (int)buf, 0, 0);
}

#endif /* _XTENSA_PLATFORM_ISS_SIMCALL_H */

0 comments on commit e8cd8da

Please sign in to comment.