Commit 48dc41eb8bdccef274172ba8148c324d1ae9782b

Authored by bellard
1 parent a891c7a1

sparc user fixes (Blue Swirl)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1998 c046a42c-6fe2-441c-8c8c-71466251a162
linux-user/main.c
@@ -598,8 +598,9 @@ void cpu_loop (CPUSPARCState *env) @@ -598,8 +598,9 @@ void cpu_loop (CPUSPARCState *env)
598 #else 598 #else
599 // XXX 599 // XXX
600 #endif 600 #endif
601 - case 0x100: // XXX, why do we get these?  
602 - break; 601 + case EXCP_INTERRUPT:
  602 + /* just indicate that signals should be handled asap */
  603 + break;
603 case EXCP_DEBUG: 604 case EXCP_DEBUG:
604 { 605 {
605 int sig; 606 int sig;
linux-user/syscall.c
@@ -1538,6 +1538,11 @@ int do_fork(CPUState *env, unsigned int flags, unsigned long newsp) @@ -1538,6 +1538,11 @@ int do_fork(CPUState *env, unsigned int flags, unsigned long newsp)
1538 new_env->regs[13] = newsp; 1538 new_env->regs[13] = newsp;
1539 new_env->regs[0] = 0; 1539 new_env->regs[0] = 0;
1540 #elif defined(TARGET_SPARC) 1540 #elif defined(TARGET_SPARC)
  1541 + if (!newsp)
  1542 + newsp = env->regwptr[22];
  1543 + new_env->regwptr[22] = newsp;
  1544 + new_env->regwptr[0] = 0;
  1545 + /* XXXXX */
1541 printf ("HELPME: %s:%d\n", __FILE__, __LINE__); 1546 printf ("HELPME: %s:%d\n", __FILE__, __LINE__);
1542 #elif defined(TARGET_MIPS) 1547 #elif defined(TARGET_MIPS)
1543 printf ("HELPME: %s:%d\n", __FILE__, __LINE__); 1548 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, @@ -3598,10 +3603,14 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3,
3598 case TARGET_NR_get_thread_area: 3603 case TARGET_NR_get_thread_area:
3599 goto unimplemented_nowarn; 3604 goto unimplemented_nowarn;
3600 #endif 3605 #endif
  3606 +#ifdef TARGET_NR_getdomainname
  3607 + case TARGET_NR_getdomainname:
  3608 + goto unimplemented_nowarn;
  3609 +#endif
3601 default: 3610 default:
3602 unimplemented: 3611 unimplemented:
3603 gemu_log("qemu: Unsupported syscall: %d\n", num); 3612 gemu_log("qemu: Unsupported syscall: %d\n", num);
3604 -#if defined(TARGET_NR_setxattr) || defined(TARGET_NR_set_thread_area) 3613 +#if defined(TARGET_NR_setxattr) || defined(TARGET_NR_set_thread_area) || defined(TARGET_NR_getdomainname)
3605 unimplemented_nowarn: 3614 unimplemented_nowarn:
3606 #endif 3615 #endif
3607 ret = -ENOSYS; 3616 ret = -ENOSYS;