aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-21 18:15:50 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2006-06-21 18:15:50 +0000
commit48dc41eb8bdccef274172ba8148c324d1ae9782b (patch)
treef2b3adaf541075dda03a97c579e8c21603bec545
parenta891c7a1947995eae84345719a197b6da14f96cc (diff)
sparc user fixes (Blue Swirl)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1998 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--linux-user/main.c5
-rw-r--r--linux-user/syscall.c11
2 files changed, 13 insertions, 3 deletions
diff --git a/linux-user/main.c b/linux-user/main.c
index a73919ec3c..6b8337fc7c 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 3ce55f903c..12dbf38913 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;