Revision 4a1418e0 target-i386/helper.c
b/target-i386/helper.c | ||
---|---|---|
995 | 995 |
|
996 | 996 |
/* XXX: This value should match the one returned by CPUID |
997 | 997 |
* and in exec.c */ |
998 |
#if defined(CONFIG_KQEMU) |
|
999 |
#define PHYS_ADDR_MASK 0xfffff000LL |
|
1000 |
#else |
|
1001 | 998 |
# if defined(TARGET_X86_64) |
1002 | 999 |
# define PHYS_ADDR_MASK 0xfffffff000LL |
1003 | 1000 |
# else |
1004 | 1001 |
# define PHYS_ADDR_MASK 0xffffff000LL |
1005 | 1002 |
# endif |
1006 |
#endif |
|
1007 | 1003 |
|
1008 | 1004 |
/* return value: |
1009 | 1005 |
-1 = cannot handle fault |
... | ... | |
1743 | 1739 |
/* XXX: This value must match the one used in the MMU code. */ |
1744 | 1740 |
if (env->cpuid_ext2_features & CPUID_EXT2_LM) { |
1745 | 1741 |
/* 64 bit processor */ |
1746 |
#if defined(CONFIG_KQEMU) |
|
1747 |
*eax = 0x00003020; /* 48 bits virtual, 32 bits physical */ |
|
1748 |
#else |
|
1749 | 1742 |
/* XXX: The physical address space is limited to 42 bits in exec.c. */ |
1750 | 1743 |
*eax = 0x00003028; /* 48 bits virtual, 40 bits physical */ |
1751 |
#endif |
|
1752 | 1744 |
} else { |
1753 |
#if defined(CONFIG_KQEMU) |
|
1754 |
*eax = 0x00000020; /* 32 bits physical */ |
|
1755 |
#else |
|
1756 | 1745 |
if (env->cpuid_features & CPUID_PSE36) |
1757 | 1746 |
*eax = 0x00000024; /* 36 bits physical */ |
1758 | 1747 |
else |
1759 | 1748 |
*eax = 0x00000020; /* 32 bits physical */ |
1760 |
#endif |
|
1761 | 1749 |
} |
1762 | 1750 |
*ebx = 0; |
1763 | 1751 |
*ecx = 0; |
... | ... | |
1833 | 1821 |
} |
1834 | 1822 |
mce_init(env); |
1835 | 1823 |
cpu_reset(env); |
1836 |
#ifdef CONFIG_KQEMU |
|
1837 |
kqemu_init(env); |
|
1838 |
#endif |
|
1839 | 1824 |
|
1840 | 1825 |
qemu_init_vcpu(env); |
1841 | 1826 |
|
Also available in: Unified diff