mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
target/xtensa: add linux-user support
Import list of syscalls from the kernel source. Conditionalize code/data that is only used with softmmu. Implement exception handlers. Implement signal hander (only the core registers for now, no coprocessors or TIE). Cc: Riku Voipio <riku.voipio@iki.fi> Cc: Laurent Vivier <laurent@vivier.eu> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
bf9c3a5a96
commit
ba7651fba5
22 changed files with 1705 additions and 44 deletions
|
@ -71,7 +71,8 @@
|
|||
|| defined(TARGET_M68K) || defined(TARGET_CRIS) \
|
||||
|| defined(TARGET_UNICORE32) || defined(TARGET_S390X) \
|
||||
|| defined(TARGET_OPENRISC) || defined(TARGET_TILEGX) \
|
||||
|| defined(TARGET_NIOS2) || defined(TARGET_RISCV)
|
||||
|| defined(TARGET_NIOS2) || defined(TARGET_RISCV) \
|
||||
|| defined(TARGET_XTENSA)
|
||||
|
||||
#define TARGET_IOC_SIZEBITS 14
|
||||
#define TARGET_IOC_DIRBITS 2
|
||||
|
@ -436,7 +437,7 @@ int do_sigaction(int sig, const struct target_sigaction *act,
|
|||
|| defined(TARGET_MICROBLAZE) || defined(TARGET_UNICORE32) \
|
||||
|| defined(TARGET_S390X) || defined(TARGET_OPENRISC) \
|
||||
|| defined(TARGET_TILEGX) || defined(TARGET_HPPA) || defined(TARGET_NIOS2) \
|
||||
|| defined(TARGET_RISCV)
|
||||
|| defined(TARGET_RISCV) || defined(TARGET_XTENSA)
|
||||
|
||||
#if defined(TARGET_SPARC)
|
||||
#define TARGET_SA_NOCLDSTOP 8u
|
||||
|
@ -1392,6 +1393,18 @@ struct target_winsize {
|
|||
#define TARGET_MAP_NONBLOCK 0x20000 /* do not block on IO */
|
||||
#define TARGET_MAP_STACK 0x40000 /* ignored */
|
||||
#define TARGET_MAP_HUGETLB 0x80000 /* create a huge page mapping */
|
||||
#elif defined(TARGET_XTENSA)
|
||||
#define TARGET_MAP_FIXED 0x10 /* Interpret addr exactly */
|
||||
#define TARGET_MAP_ANONYMOUS 0x0800 /* don't use a file */
|
||||
#define TARGET_MAP_GROWSDOWN 0x1000 /* stack-like segment */
|
||||
#define TARGET_MAP_DENYWRITE 0x2000 /* ETXTBSY */
|
||||
#define TARGET_MAP_EXECUTABLE 0x4000 /* mark it as an executable */
|
||||
#define TARGET_MAP_LOCKED 0x8000 /* pages are locked */
|
||||
#define TARGET_MAP_NORESERVE 0x0400 /* don't check for reservations */
|
||||
#define TARGET_MAP_POPULATE 0x10000 /* populate (prefault) pagetables */
|
||||
#define TARGET_MAP_NONBLOCK 0x20000 /* do not block on IO */
|
||||
#define TARGET_MAP_STACK 0x40000
|
||||
#define TARGET_MAP_HUGETLB 0x80000 /* create a huge page mapping */
|
||||
#else
|
||||
#define TARGET_MAP_FIXED 0x10 /* Interpret addr exactly */
|
||||
#define TARGET_MAP_ANONYMOUS 0x20 /* don't use a file */
|
||||
|
@ -2093,6 +2106,51 @@ struct target_stat {
|
|||
abi_ulong target_st_ctime_nsec;
|
||||
unsigned int __unused[2];
|
||||
};
|
||||
#elif defined(TARGET_XTENSA)
|
||||
struct target_stat {
|
||||
abi_ulong st_dev;
|
||||
abi_ulong st_ino;
|
||||
unsigned int st_mode;
|
||||
unsigned int st_nlink;
|
||||
unsigned int st_uid;
|
||||
unsigned int st_gid;
|
||||
abi_ulong st_rdev;
|
||||
abi_long st_size;
|
||||
abi_ulong st_blksize;
|
||||
abi_ulong st_blocks;
|
||||
abi_ulong target_st_atime;
|
||||
abi_ulong target_st_atime_nsec;
|
||||
abi_ulong target_st_mtime;
|
||||
abi_ulong target_st_mtime_nsec;
|
||||
abi_ulong target_st_ctime;
|
||||
abi_ulong target_st_ctime_nsec;
|
||||
abi_ulong __unused4;
|
||||
abi_ulong __unused5;
|
||||
};
|
||||
|
||||
#define TARGET_HAS_STRUCT_STAT64
|
||||
struct target_stat64 {
|
||||
uint64_t st_dev; /* Device */
|
||||
uint64_t st_ino; /* File serial number */
|
||||
unsigned int st_mode; /* File mode. */
|
||||
unsigned int st_nlink; /* Link count. */
|
||||
unsigned int st_uid; /* User ID of the file's owner. */
|
||||
unsigned int st_gid; /* Group ID of the file's group. */
|
||||
uint64_t st_rdev; /* Device number, if device. */
|
||||
int64_t st_size; /* Size of file, in bytes. */
|
||||
abi_ulong st_blksize; /* Optimal block size for I/O. */
|
||||
abi_ulong __unused2;
|
||||
uint64_t st_blocks; /* Number 512-byte blocks allocated. */
|
||||
abi_ulong target_st_atime; /* Time of last access. */
|
||||
abi_ulong target_st_atime_nsec;
|
||||
abi_ulong target_st_mtime; /* Time of last modification. */
|
||||
abi_ulong target_st_mtime_nsec;
|
||||
abi_ulong target_st_ctime; /* Time of last status change. */
|
||||
abi_ulong target_st_ctime_nsec;
|
||||
abi_ulong __unused4;
|
||||
abi_ulong __unused5;
|
||||
};
|
||||
|
||||
#elif defined(TARGET_OPENRISC) || defined(TARGET_TILEGX) || \
|
||||
defined(TARGET_NIOS2) || defined(TARGET_RISCV)
|
||||
|
||||
|
@ -2593,7 +2651,8 @@ struct target_flock64 {
|
|||
short l_whence;
|
||||
#if defined(TARGET_PPC) || defined(TARGET_X86_64) || defined(TARGET_MIPS) \
|
||||
|| defined(TARGET_SPARC) || defined(TARGET_HPPA) \
|
||||
|| defined(TARGET_MICROBLAZE) || defined(TARGET_TILEGX)
|
||||
|| defined(TARGET_MICROBLAZE) || defined(TARGET_TILEGX) \
|
||||
|| defined(TARGET_XTENSA)
|
||||
int __pad;
|
||||
#endif
|
||||
abi_llong l_start;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue