From: Randolph C. <ta...@us...> - 2007-03-04 23:19:45
|
Update of /cvsroot/hppaqemu/hppaqemu/linux-user In directory sc8-pr-cvs5.sourceforge.net:/tmp/cvs-serv8519/linux-user Modified Files: elfload.c main.c syscall.c syscall_defs.h Log Message: check in a few more things to get the hppa-linux-user target to compile Index: syscall_defs.h =================================================================== RCS file: /cvsroot/hppaqemu/hppaqemu/linux-user/syscall_defs.h,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** syscall_defs.h 23 Feb 2007 21:44:25 -0000 1.1.1.1 --- syscall_defs.h 4 Mar 2007 23:19:41 -0000 1.2 *************** *** 50,54 **** #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SH4) \ ! || defined(TARGET_M68K) #define TARGET_IOC_SIZEBITS 14 --- 50,54 ---- #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SH4) \ ! || defined(TARGET_M68K) || defined(TARGET_HPPA) #define TARGET_IOC_SIZEBITS 14 *************** *** 295,299 **** struct target_sigaction *oact); ! #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) || defined(TARGET_PPC) || defined(TARGET_MIPS) || defined (TARGET_SH4) || defined(TARGET_M68K) #if defined(TARGET_SPARC) --- 295,299 ---- struct target_sigaction *oact); ! #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_SPARC) || defined(TARGET_PPC) || defined(TARGET_MIPS) || defined (TARGET_SH4) || defined(TARGET_M68K) || defined(TARGET_HPPA) #if defined(TARGET_SPARC) *************** *** 314,317 **** --- 314,326 ---- #define TARGET_SA_RESETHAND 0x80000000 #define TARGET_SA_RESTORER 0x04000000 /* Only for o32 */ + #elif defined(TARGET_HPPA) + #define TARGET_SA_NOCLDSTOP 0x00000008 + #define TARGET_SA_NOCLDWAIT 0x00000080 + #define TARGET_SA_SIGINFO 0x00000010 + #define TARGET_SA_ONSTACK 0x00000001 + #define TARGET_SA_RESTART 0x00000040 + #define TARGET_SA_NODEFER 0x00000020 + #define TARGET_SA_RESETHAND 0x80000004 + #define TARGET_SA_RESTORER 0x04000000 #else #define TARGET_SA_NOCLDSTOP 0x00000001 *************** *** 1204,1207 **** --- 1213,1271 ---- int64_t st_blocks; }; + #elif defined(TARGET_HPPA) + struct target_stat { + unsigned int st_dev; /* dev_t is 32 bits on parisc */ + target_ulong st_ino; /* 32 bits */ + unsigned short st_mode; /* 16 bits */ + unsigned short st_nlink; /* 16 bits */ + unsigned short st_reserved1; /* old st_uid */ + unsigned short st_reserved2; /* old st_gid */ + unsigned int st_rdev; + target_ulong st_size; + target_ulong target_st_atime; + unsigned int target_st_atime_nsec; + target_ulong target_st_mtime; + unsigned int target_st_mtime_nsec; + target_ulong target_st_ctime; + unsigned int target_st_ctime_nsec; + int st_blksize; + int st_blocks; + unsigned int __unused1; /* ACL stuff */ + unsigned int __unused2; /* network */ + target_ulong __unused3; /* network */ + unsigned int __unused4; /* cnodes */ + unsigned short __unused5; /* netsite */ + short st_fstype; + unsigned int st_realdev; + unsigned short st_basemode; + unsigned short st_spareshort; + target_ulong st_uid; + target_ulong st_gid; + unsigned int st_spare4[3]; + }; + + struct target_stat64 { + unsigned long long st_dev; + unsigned int __pad1; + + unsigned int __st_ino; /* Not actually filled in */ + unsigned int st_mode; + unsigned int st_nlink; + unsigned int st_uid; + unsigned int st_gid; + unsigned long long st_rdev; + unsigned int __pad2; + signed long long st_size; + signed int st_blksize; + + signed long long st_blocks; + signed int target_st_atime; + unsigned int target_st_atime_nsec; + signed int target_st_mtime; + unsigned int target_st_mtime_nsec; + signed int target_st_ctime; + unsigned int target_st_ctime_nsec; + unsigned long long st_ino; + }; #else #error unsupported CPU Index: syscall.c =================================================================== RCS file: /cvsroot/hppaqemu/hppaqemu/linux-user/syscall.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** syscall.c 23 Feb 2007 21:44:25 -0000 1.1.1.1 --- syscall.c 4 Mar 2007 23:19:41 -0000 1.2 *************** *** 44,47 **** --- 44,48 ---- #include <sys/shm.h> #include <sys/sem.h> + #include <sys/msg.h> #include <sys/statfs.h> #include <utime.h> *************** *** 1759,1762 **** --- 1760,1768 ---- new_env->gregs[15] = newsp; /* XXXXX */ + #elif defined(TARGET_HPPA) + if (!newsp) + newsp = env->gr[30]; + new_env->gr[30] = newsp; + /* XXXXX */ #else #error unsupported target CPU *************** *** 2163,2166 **** --- 2169,2173 ---- /* need to look at the data field */ goto unimplemented; + #ifdef TARGET_NR_umount case TARGET_NR_umount: p = lock_user_string(arg1); *************** *** 2168,2171 **** --- 2175,2179 ---- unlock_user(p, arg1, 0); break; + #endif case TARGET_NR_stime: { *************** *** 2205,2208 **** --- 2213,2217 ---- } break; + #ifdef TARGET_NR_utimes case TARGET_NR_utimes: { *************** *** 2221,2224 **** --- 2230,2234 ---- } break; + #endif #ifdef TARGET_NR_stty case TARGET_NR_stty: *************** *** 2361,2364 **** --- 2371,2375 ---- ret = get_errno(setsid()); break; + #ifdef TARGET_NR_sigaction case TARGET_NR_sigaction: { *************** *** 2415,2418 **** --- 2426,2430 ---- } break; + #endif case TARGET_NR_rt_sigaction: { *************** *** 2550,2553 **** --- 2562,2566 ---- } break; + #ifdef TARGET_NR_sigsuspend case TARGET_NR_sigsuspend: { *************** *** 2559,2562 **** --- 2572,2576 ---- } break; + #endif case TARGET_NR_rt_sigsuspend: { *************** *** 2600,2607 **** --- 2614,2623 ---- } break; + #ifdef TARGET_NR_sigreturn case TARGET_NR_sigreturn: /* NOTE: ret is eax, so not transcoding must be done */ ret = do_sigreturn(cpu_env); break; + #endif case TARGET_NR_rt_sigreturn: /* NOTE: ret is eax, so not transcoding must be done */ *************** *** 2718,2723 **** --- 2734,2741 ---- case TARGET_NR_reboot: goto unimplemented; + #ifdef TARGET_NR_readdir case TARGET_NR_readdir: goto unimplemented; + #endif case TARGET_NR_mmap: #if defined(TARGET_I386) || defined(TARGET_ARM) || defined(TARGET_M68K) *************** *** 2859,2866 **** goto unimplemented; #endif case TARGET_NR_socketcall: ret = do_socketcall(arg1, arg2); break; ! #ifdef TARGET_NR_accept case TARGET_NR_accept: --- 2877,2885 ---- goto unimplemented; #endif + #ifdef TARGET_NR_socketcall case TARGET_NR_socketcall: ret = do_socketcall(arg1, arg2); break; ! #endif #ifdef TARGET_NR_accept case TARGET_NR_accept: *************** *** 3099,3105 **** --- 3118,3126 ---- } break; + #ifdef TARGET_NR_ipc case TARGET_NR_ipc: ret = do_ipc(arg1, arg2, arg3, arg4, arg5, arg6); break; + #endif case TARGET_NR_fsync: ret = get_errno(fsync(arg1)); Index: main.c =================================================================== RCS file: /cvsroot/hppaqemu/hppaqemu/linux-user/main.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** main.c 23 Feb 2007 21:44:25 -0000 1.1.1.1 --- main.c 4 Mar 2007 23:19:41 -0000 1.2 *************** *** 1529,1532 **** --- 1529,1543 ---- #endif /* TARGET_M68K */ + #ifdef TARGET_HPPA + + void cpu_loop(CPUHPPAState *env) + { + for (;;) + { + } + } + + #endif + void usage(void) { *************** *** 1852,1855 **** --- 1863,1878 ---- env->pc = regs->pc; } + #elif defined(TARGET_HPPA) + { + int i; + + for(i = 0; i < 32; i++) { + env->gr[i] = regs->gr[i]; + } + env->iaoq[0] = regs->iaoq[0]; + env->iaoq[1] = regs->iaoq[1]; + env->iasq[0] = regs->iasq[0]; + env->iasq[1] = regs->iasq[1]; + } #else #error unsupported target CPU Index: elfload.c =================================================================== RCS file: /cvsroot/hppaqemu/hppaqemu/linux-user/elfload.c,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** elfload.c 23 Feb 2007 21:44:23 -0000 1.1.1.1 --- elfload.c 4 Mar 2007 23:19:40 -0000 1.2 *************** *** 314,317 **** --- 314,336 ---- #endif + #ifdef TARGET_HPPA + + #define ELF_START_MMAP 0x40000000 + + #define elf_check_arch(x) ( (x) == EM_PARISC ) + + #define ELF_CLASS ELFCLASS32 + #define ELF_DATA ELFDATA2MSB + #define ELF_ARCH EM_PARISC + + static inline void init_thread(struct target_pt_regs *regs, struct image_info *infop) + { + regs->iaoq[0] = infop->entry; + regs->iaoq[1]= regs->iaoq[0] + 4; + regs->gr[30] = infop->start_stack ; + } + + #endif + #ifndef ELF_PLATFORM #define ELF_PLATFORM (NULL) |