diff options
author | Sebastian Macke <sebastian@macke.de> | 2013-10-03 16:04:46 +0800 |
---|---|---|
committer | Jia Liu <proljc@gmail.com> | 2013-10-03 16:24:24 +0800 |
commit | bf961b52785061e1802214c9e03a1c65b261f7c1 (patch) | |
tree | 0ed12ff58f420a4741bd5e807a3f214abe33ab4b | |
parent | a684f3cf9b9b9c3cb82be87aafc463de8974610c (diff) |
target-openrisc: Correct handling of page faults.
The result of (rw & 0) is always zero and therefore a logic false.
The whole comparison will therefore never be executed, it is a obvious bug,
we should use !(rw & 1) here.
Signed-off-by: Sebastian Macke <sebastian@macke.de>
Reviewed-by: Jia Liu <proljc@gmail.com>
-rw-r--r-- | target-openrisc/mmu.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/target-openrisc/mmu.c b/target-openrisc/mmu.c index 57f5616e9c..323a173a82 100644 --- a/target-openrisc/mmu.c +++ b/target-openrisc/mmu.c @@ -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)) { |