On Wed, Oct 2, 2013 at 2:15 PM, Stefan Kristiansson
<stefan.kristians...@saunalahti.fi> wrote:
> On Wed, Oct 2, 2013 at 8:33 AM, Jia Liu <pro...@gmail.com> wrote:
>>
>> Hi Sebastian,
>>
>> On Wed, Oct 2, 2013 at 1:12 PM, Sebastian Macke <sebast...@macke.de>
>> wrote:
>> > Hi,
>> >
>> > this patch corrects two problems for the OpenRISC Target in QEMU. The
>> > first
>> > one corrects one obvious bug
>> > concerning the handling of page faults while reading from a page.
>>
>> @@ -102,7 +102,7 @@ int cpu_openrisc_get_phys_data(OpenRISCCPU *cpu,
>>          }
>>      }
>>
>> -    if ((rw & 0) && ((right & PAGE_READ) == 0)) {
>> +    if (!(rw & 1) && ((right & PAGE_READ) == 0)) {
>>          return TLBRET_BADADDR;
>>      }
>>      if ((rw & 1) && ((right & PAGE_WRITE) == 0)) {
>>
>> They are just two type of one code...
>
>
> No, (rw & 0) always evaluates to 0.
>
>>
>>
>> > The second
>> > part removes a non-conforming behavior for the first page of the memory.
>>
>> @@ -122,13 +122,6 @@ static int cpu_openrisc_get_phys_addr(OpenRISCCPU
>> *cpu,
>>  {
>>      int ret = TLBRET_MATCH;
>>
>> -    /* [0x0000--0x2000]: unmapped */
>> -    if (address < 0x2000 && (cpu->env.sr & SR_SM)) {
>> -        *physical = address;
>> -        *prot = PAGE_READ | PAGE_WRITE;
>> -        return ret;
>> -    }
>> -
>>
>> May you please explain more about why the first page is non-conforming?
>> The Arch manual told me 0x0000--0x2000 is unmapped.
>
>
> It shows an example where *software* leaves 0x0000 - 0x2000 unmapped,
> the hardware should still allow for this area to be mapped.

OK, thank you. I will send a PULL Request soon.

Reviewed-by: Jia Liu <pro...@gmail.com>

>
> Stefan

Regards,
Jia

Reply via email to