[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 5/6] exec: Restrict 32-bit CPUs to 32-bit address space
From: |
Richard Henderson |
Subject: |
Re: [PATCH 5/6] exec: Restrict 32-bit CPUs to 32-bit address space |
Date: |
Mon, 1 Jun 2020 17:01:52 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 |
On 6/1/20 1:09 AM, Philippe Mathieu-Daudé wrote:
> On 5/31/20 9:09 PM, Peter Maydell wrote:
>> On Sun, 31 May 2020 at 18:54, Philippe Mathieu-Daudé <f4bug@amsat.org> wrote:
>>>
>>> It is pointless to have 32-bit CPUs see a 64-bit address
>>> space, when they can only address the 32 lower bits.
>>>
>>> Only create CPU address space with a size it can address.
>>> This makes HMP 'info mtree' command easier to understand
>>> (on 32-bit CPUs).
>>
>>> diff --git a/exec.c b/exec.c
>>> index 5162f0d12f..d6809a9447 100644
>>> --- a/exec.c
>>> +++ b/exec.c
>>> @@ -2962,9 +2962,17 @@ static void tcg_commit(MemoryListener *listener)
>>>
>>> static void memory_map_init(void)
>>> {
>>> + uint64_t system_memory_size;
>>> +
>>> +#if TARGET_LONG_BITS >= 64
>>> + system_memory_size = UINT64_MAX;
>>> +#else
>>> + system_memory_size = 1ULL << TARGET_LONG_BITS;
>>> +#endif
>>
>> TARGET_LONG_BITS is a description of the CPU's virtual
>> address size; but the size of the system_memory memory
>> region is related to the CPU's physical address size[*].
>
> OK I misunderstood it was the physical size, not virtual.
It is the physical size.
In the armv7 case, the lpae page table entry maps a 32-bit virtual address to a
40-bit physical address. The i686 page table extensions do something similar.
See TARGET_PHYS_ADDR_SPACE_BITS.
r~