diff options
author | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-06-21 18:15:50 +0000 |
---|---|---|
committer | bellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162> | 2006-06-21 18:15:50 +0000 |
commit | 48dc41eb8bdccef274172ba8148c324d1ae9782b (patch) | |
tree | f2b3adaf541075dda03a97c579e8c21603bec545 /linux-user | |
parent | a891c7a1947995eae84345719a197b6da14f96cc (diff) | |
download | hqemu-48dc41eb8bdccef274172ba8148c324d1ae9782b.zip hqemu-48dc41eb8bdccef274172ba8148c324d1ae9782b.tar.gz |
sparc user fixes (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1998 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'linux-user')
-rw-r--r-- | linux-user/main.c | 5 | ||||
-rw-r--r-- | linux-user/syscall.c | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/linux-user/main.c b/linux-user/main.c index a73919e..6b8337f 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -598,8 +598,9 @@ void cpu_loop (CPUSPARCState *env) #else // XXX #endif - case 0x100: // XXX, why do we get these? - break; + case EXCP_INTERRUPT: + /* just indicate that signals should be handled asap */ + break; case EXCP_DEBUG: { int sig; diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 3ce55f9..12dbf38 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -1538,6 +1538,11 @@ int do_fork(CPUState *env, unsigned int flags, unsigned long newsp) new_env->regs[13] = newsp; new_env->regs[0] = 0; #elif defined(TARGET_SPARC) + if (!newsp) + newsp = env->regwptr[22]; + new_env->regwptr[22] = newsp; + new_env->regwptr[0] = 0; + /* XXXXX */ printf ("HELPME: %s:%d\n", __FILE__, __LINE__); #elif defined(TARGET_MIPS) printf ("HELPME: %s:%d\n", __FILE__, __LINE__); @@ -3598,10 +3603,14 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, case TARGET_NR_get_thread_area: goto unimplemented_nowarn; #endif +#ifdef TARGET_NR_getdomainname + case TARGET_NR_getdomainname: + goto unimplemented_nowarn; +#endif default: unimplemented: gemu_log("qemu: Unsupported syscall: %d\n", num); -#if defined(TARGET_NR_setxattr) || defined(TARGET_NR_set_thread_area) +#if defined(TARGET_NR_setxattr) || defined(TARGET_NR_set_thread_area) || defined(TARGET_NR_getdomainname) unimplemented_nowarn: #endif ret = -ENOSYS; |