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