Commit 80a9d03503494feffab254d7d366ab55533f5d09
1 parent
75598f61
64 bit target fixes - removed warnings
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1187 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
3 changed files
with
20 additions
and
10 deletions
linux-user/main.c
| @@ -181,7 +181,7 @@ static void set_idt(int n, unsigned int dpl) | @@ -181,7 +181,7 @@ static void set_idt(int n, unsigned int dpl) | ||
| 181 | void cpu_loop(CPUX86State *env) | 181 | void cpu_loop(CPUX86State *env) |
| 182 | { | 182 | { |
| 183 | int trapnr; | 183 | int trapnr; |
| 184 | - uint8_t *pc; | 184 | + target_ulong pc; |
| 185 | target_siginfo_t info; | 185 | target_siginfo_t info; |
| 186 | 186 | ||
| 187 | for(;;) { | 187 | for(;;) { |
| @@ -440,6 +440,7 @@ static void restore_window(CPUSPARCState *env) | @@ -440,6 +440,7 @@ static void restore_window(CPUSPARCState *env) | ||
| 440 | env->wim = new_wim; | 440 | env->wim = new_wim; |
| 441 | } | 441 | } |
| 442 | 442 | ||
| 443 | +#if 0 | ||
| 443 | static void flush_windows(CPUSPARCState *env) | 444 | static void flush_windows(CPUSPARCState *env) |
| 444 | { | 445 | { |
| 445 | int offset, cwp1; | 446 | int offset, cwp1; |
| @@ -459,6 +460,7 @@ static void flush_windows(CPUSPARCState *env) | @@ -459,6 +460,7 @@ static void flush_windows(CPUSPARCState *env) | ||
| 459 | offset++; | 460 | offset++; |
| 460 | } | 461 | } |
| 461 | } | 462 | } |
| 463 | +#endif | ||
| 462 | 464 | ||
| 463 | void cpu_loop (CPUSPARCState *env) | 465 | void cpu_loop (CPUSPARCState *env) |
| 464 | { | 466 | { |
| @@ -1067,7 +1069,7 @@ int main(int argc, char **argv) | @@ -1067,7 +1069,7 @@ int main(int argc, char **argv) | ||
| 1067 | env->eip = regs->eip; | 1069 | env->eip = regs->eip; |
| 1068 | 1070 | ||
| 1069 | /* linux interrupt setup */ | 1071 | /* linux interrupt setup */ |
| 1070 | - env->idt.base = (void *)idt_table; | 1072 | + env->idt.base = (long)idt_table; |
| 1071 | env->idt.limit = sizeof(idt_table) - 1; | 1073 | env->idt.limit = sizeof(idt_table) - 1; |
| 1072 | set_idt(0, 0); | 1074 | set_idt(0, 0); |
| 1073 | set_idt(1, 0); | 1075 | set_idt(1, 0); |
| @@ -1092,7 +1094,7 @@ int main(int argc, char **argv) | @@ -1092,7 +1094,7 @@ int main(int argc, char **argv) | ||
| 1092 | set_idt(0x80, 3); | 1094 | set_idt(0x80, 3); |
| 1093 | 1095 | ||
| 1094 | /* linux segment setup */ | 1096 | /* linux segment setup */ |
| 1095 | - env->gdt.base = (void *)gdt_table; | 1097 | + env->gdt.base = (long)gdt_table; |
| 1096 | env->gdt.limit = sizeof(gdt_table) - 1; | 1098 | env->gdt.limit = sizeof(gdt_table) - 1; |
| 1097 | write_dt(&gdt_table[__USER_CS >> 3], 0, 0xfffff, | 1099 | write_dt(&gdt_table[__USER_CS >> 3], 0, 0xfffff, |
| 1098 | DESC_G_MASK | DESC_B_MASK | DESC_P_MASK | DESC_S_MASK | | 1100 | DESC_G_MASK | DESC_B_MASK | DESC_P_MASK | DESC_S_MASK | |
linux-user/signal.c
| @@ -1272,6 +1272,7 @@ badframe: | @@ -1272,6 +1272,7 @@ badframe: | ||
| 1272 | } | 1272 | } |
| 1273 | 1273 | ||
| 1274 | #elif defined(TARGET_SPARC) | 1274 | #elif defined(TARGET_SPARC) |
| 1275 | + | ||
| 1275 | #define __SUNOS_MAXWIN 31 | 1276 | #define __SUNOS_MAXWIN 31 |
| 1276 | 1277 | ||
| 1277 | /* This is what SunOS does, so shall I. */ | 1278 | /* This is what SunOS does, so shall I. */ |
| @@ -1400,6 +1401,7 @@ setup___siginfo(__siginfo_t *si, CPUState *env, target_ulong mask) | @@ -1400,6 +1401,7 @@ setup___siginfo(__siginfo_t *si, CPUState *env, target_ulong mask) | ||
| 1400 | return err; | 1401 | return err; |
| 1401 | } | 1402 | } |
| 1402 | 1403 | ||
| 1404 | +#if 0 | ||
| 1403 | static int | 1405 | static int |
| 1404 | setup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/ | 1406 | setup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/ |
| 1405 | CPUState *env, unsigned long mask) | 1407 | CPUState *env, unsigned long mask) |
| @@ -1416,6 +1418,7 @@ setup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/ | @@ -1416,6 +1418,7 @@ setup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/ | ||
| 1416 | 1418 | ||
| 1417 | return err; | 1419 | return err; |
| 1418 | } | 1420 | } |
| 1421 | +#endif | ||
| 1419 | #define NF_ALIGNEDSZ (((sizeof(struct target_signal_frame) + 7) & (~7))) | 1422 | #define NF_ALIGNEDSZ (((sizeof(struct target_signal_frame) + 7) & (~7))) |
| 1420 | 1423 | ||
| 1421 | static void setup_frame(int sig, struct emulated_sigaction *ka, | 1424 | static void setup_frame(int sig, struct emulated_sigaction *ka, |
| @@ -1483,12 +1486,12 @@ static void setup_frame(int sig, struct emulated_sigaction *ka, | @@ -1483,12 +1486,12 @@ static void setup_frame(int sig, struct emulated_sigaction *ka, | ||
| 1483 | 1486 | ||
| 1484 | /* Flush instruction space. */ | 1487 | /* Flush instruction space. */ |
| 1485 | //flush_sig_insns(current->mm, (unsigned long) &(sf->insns[0])); | 1488 | //flush_sig_insns(current->mm, (unsigned long) &(sf->insns[0])); |
| 1486 | - tb_flush(env); | 1489 | + // tb_flush(env); |
| 1487 | } | 1490 | } |
| 1488 | //cpu_dump_state(env, stderr, fprintf, 0); | 1491 | //cpu_dump_state(env, stderr, fprintf, 0); |
| 1489 | return; | 1492 | return; |
| 1490 | 1493 | ||
| 1491 | -sigill_and_return: | 1494 | + //sigill_and_return: |
| 1492 | force_sig(TARGET_SIGILL); | 1495 | force_sig(TARGET_SIGILL); |
| 1493 | sigsegv: | 1496 | sigsegv: |
| 1494 | //fprintf(stderr, "force_sig\n"); | 1497 | //fprintf(stderr, "force_sig\n"); |
| @@ -1544,12 +1547,14 @@ long do_sigreturn(CPUState *env) | @@ -1544,12 +1547,14 @@ long do_sigreturn(CPUState *env) | ||
| 1544 | uint32_t up_psr, pc, npc; | 1547 | uint32_t up_psr, pc, npc; |
| 1545 | target_sigset_t set; | 1548 | target_sigset_t set; |
| 1546 | sigset_t host_set; | 1549 | sigset_t host_set; |
| 1547 | - __siginfo_fpu_t *fpu_save; | 1550 | + target_ulong fpu_save; |
| 1548 | int err, i; | 1551 | int err, i; |
| 1549 | 1552 | ||
| 1550 | sf = (struct target_signal_frame *) env->regwptr[UREG_FP]; | 1553 | sf = (struct target_signal_frame *) env->regwptr[UREG_FP]; |
| 1554 | +#if 0 | ||
| 1551 | fprintf(stderr, "sigreturn\n"); | 1555 | fprintf(stderr, "sigreturn\n"); |
| 1552 | fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]); | 1556 | fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]); |
| 1557 | +#endif | ||
| 1553 | //cpu_dump_state(env, stderr, fprintf, 0); | 1558 | //cpu_dump_state(env, stderr, fprintf, 0); |
| 1554 | 1559 | ||
| 1555 | /* 1. Make sure we are not getting garbage from the user */ | 1560 | /* 1. Make sure we are not getting garbage from the user */ |
| @@ -1564,7 +1569,7 @@ long do_sigreturn(CPUState *env) | @@ -1564,7 +1569,7 @@ long do_sigreturn(CPUState *env) | ||
| 1564 | err = __get_user(pc, &sf->info.si_regs.pc); | 1569 | err = __get_user(pc, &sf->info.si_regs.pc); |
| 1565 | err |= __get_user(npc, &sf->info.si_regs.npc); | 1570 | err |= __get_user(npc, &sf->info.si_regs.npc); |
| 1566 | 1571 | ||
| 1567 | - fprintf(stderr, "pc: %lx npc %lx\n", pc, npc); | 1572 | + // fprintf(stderr, "pc: %lx npc %lx\n", pc, npc); |
| 1568 | if ((pc | npc) & 3) | 1573 | if ((pc | npc) & 3) |
| 1569 | goto segv_and_exit; | 1574 | goto segv_and_exit; |
| 1570 | 1575 | ||
| @@ -1585,7 +1590,7 @@ long do_sigreturn(CPUState *env) | @@ -1585,7 +1590,7 @@ long do_sigreturn(CPUState *env) | ||
| 1585 | err |= __get_user(env->regwptr[i + UREG_I0], &sf->info.si_regs.u_regs[i+8]); | 1590 | err |= __get_user(env->regwptr[i + UREG_I0], &sf->info.si_regs.u_regs[i+8]); |
| 1586 | } | 1591 | } |
| 1587 | 1592 | ||
| 1588 | - err |= __get_user(fpu_save, &sf->fpu_save); | 1593 | + err |= __get_user(fpu_save, (target_ulong *)&sf->fpu_save); |
| 1589 | 1594 | ||
| 1590 | //if (fpu_save) | 1595 | //if (fpu_save) |
| 1591 | // err |= restore_fpu_state(env, fpu_save); | 1596 | // err |= restore_fpu_state(env, fpu_save); |
| @@ -1604,7 +1609,7 @@ long do_sigreturn(CPUState *env) | @@ -1604,7 +1609,7 @@ long do_sigreturn(CPUState *env) | ||
| 1604 | if (err) | 1609 | if (err) |
| 1605 | goto segv_and_exit; | 1610 | goto segv_and_exit; |
| 1606 | 1611 | ||
| 1607 | - fprintf(stderr, "returning %lx\n", env->regwptr[0]); | 1612 | + // fprintf(stderr, "returning %lx\n", env->regwptr[0]); |
| 1608 | return env->regwptr[0]; | 1613 | return env->regwptr[0]; |
| 1609 | 1614 | ||
| 1610 | segv_and_exit: | 1615 | segv_and_exit: |
linux-user/syscall.c
| @@ -1326,7 +1326,7 @@ static int write_ldt(CPUX86State *env, | @@ -1326,7 +1326,7 @@ static int write_ldt(CPUX86State *env, | ||
| 1326 | if (!ldt_table) | 1326 | if (!ldt_table) |
| 1327 | return -ENOMEM; | 1327 | return -ENOMEM; |
| 1328 | memset(ldt_table, 0, TARGET_LDT_ENTRIES * TARGET_LDT_ENTRY_SIZE); | 1328 | memset(ldt_table, 0, TARGET_LDT_ENTRIES * TARGET_LDT_ENTRY_SIZE); |
| 1329 | - env->ldt.base = ldt_table; | 1329 | + env->ldt.base = (long)ldt_table; |
| 1330 | env->ldt.limit = 0xffff; | 1330 | env->ldt.limit = 0xffff; |
| 1331 | } | 1331 | } |
| 1332 | 1332 | ||
| @@ -2502,6 +2502,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -2502,6 +2502,7 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 2502 | tnamelen = treclen - (2 * sizeof(target_long) + 2); | 2502 | tnamelen = treclen - (2 * sizeof(target_long) + 2); |
| 2503 | if (tnamelen > 256) | 2503 | if (tnamelen > 256) |
| 2504 | tnamelen = 256; | 2504 | tnamelen = 256; |
| 2505 | + /* XXX: may not be correct */ | ||
| 2505 | strncpy(tde->d_name, de->d_name, tnamelen); | 2506 | strncpy(tde->d_name, de->d_name, tnamelen); |
| 2506 | de = (struct dirent *)((char *)de + reclen); | 2507 | de = (struct dirent *)((char *)de + reclen); |
| 2507 | len -= reclen; | 2508 | len -= reclen; |
| @@ -3046,7 +3047,9 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | @@ -3046,7 +3047,9 @@ long do_syscall(void *cpu_env, int num, long arg1, long arg2, long arg3, | ||
| 3046 | default: | 3047 | default: |
| 3047 | unimplemented: | 3048 | unimplemented: |
| 3048 | gemu_log("qemu: Unsupported syscall: %d\n", num); | 3049 | gemu_log("qemu: Unsupported syscall: %d\n", num); |
| 3050 | +#if defined(TARGET_NR_setxattr) || defined(TARGET_NR_set_thread_area) | ||
| 3049 | unimplemented_nowarn: | 3051 | unimplemented_nowarn: |
| 3052 | +#endif | ||
| 3050 | ret = -ENOSYS; | 3053 | ret = -ENOSYS; |
| 3051 | break; | 3054 | break; |
| 3052 | } | 3055 | } |