[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC][PATCH 03/14 v7] target-i386: implement cpu_get_me
From: |
Wen Congyang |
Subject: |
Re: [Qemu-devel] [RFC][PATCH 03/14 v7] target-i386: implement cpu_get_memory_mapping() |
Date: |
Thu, 01 Mar 2012 14:21:37 +0800 |
User-agent: |
Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100413 Fedora/3.0.4-2.fc13 Thunderbird/3.0.4 |
At 03/01/2012 02:13 PM, HATAYAMA Daisuke Wrote:
> From: Wen Congyang <address@hidden>
> Subject: [RFC][PATCH 03/14 v7] target-i386: implement cpu_get_memory_mapping()
> Date: Thu, 01 Mar 2012 10:41:47 +0800
>
>> +int cpu_get_memory_mapping(MemoryMappingList *list, CPUState *env)
>> +{
>> + if (env->cr[4] & CR4_PAE_MASK) {
>> +#ifdef TARGET_X86_64
>> + if (env->hflags & HF_LMA_MASK) {
>> + target_phys_addr_t pml4e_addr;
>> +
>> + pml4e_addr = (env->cr[3] & ~0xfff) & env->a20_mask;
>> + walk_pml4e(list, pml4e_addr, env->a20_mask);
>> + } else
>> +#endif
>> + {
>> + target_phys_addr_t pdpe_addr;
>> +
>> + pdpe_addr = (env->cr[3] & ~0x1f) & env->a20_mask;
>> + walk_pdpe2(list, pdpe_addr, env->a20_mask);
>> + }
>> + } else {
>> + target_phys_addr_t pde_addr;
>> + bool pse;
>> +
>> + pde_addr = (env->cr[3] & ~0xfff) & env->a20_mask;
>> + pse = !!(env->cr[4] & CR4_PSE_MASK);
>> + walk_pde2(list, pde_addr, env->a20_mask, pse);
>> + }
>> +
>> + return 0;
>> +}
>
> Does this assume paging mode? I don't know qemu very well, but qemu
> dump command runs externally to guest machine, so I think the machine
> could be in the state with paging disabled where CR4 doesn't refer to
> page table as expected.
CR4? I think you want to say CR3.
Yes, the guest may be in the state without paging mode. I will fix it.
Thanks
Wen Congyang
>
> Thanks.
> HATAYAMA, Daisuke
>
>