projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
gdb/features: remove rx.xml from XMLTOC list
[deliverable/binutils-gdb.git]
/
sim
/
bfin
/
dv-bfin_mmu.c
diff --git
a/sim/bfin/dv-bfin_mmu.c
b/sim/bfin/dv-bfin_mmu.c
index 0e504344b0ef401a07ef7e44d07d7119e4e75bee..ec3534d1e3d27299158a5fb52a558c83abf367ae 100644
(file)
--- a/
sim/bfin/dv-bfin_mmu.c
+++ b/
sim/bfin/dv-bfin_mmu.c
@@
-1,6
+1,6
@@
/* Blackfin Memory Management Unit (MMU) model.
/* Blackfin Memory Management Unit (MMU) model.
- Copyright (C) 2010-20
11
Free Software Foundation, Inc.
+ Copyright (C) 2010-20
20
Free Software Foundation, Inc.
Contributed by Analog Devices, Inc.
This file is part of simulators.
Contributed by Analog Devices, Inc.
This file is part of simulators.
@@
-101,6
+101,10
@@
bfin_mmu_io_write_buffer (struct hw *me, const void *source,
bu32 value;
bu32 *valuep;
bu32 value;
bu32 *valuep;
+ /* Invalid access mode is higher priority than missing register. */
+ if (!dv_bfin_mmr_require_32 (me, addr, nr_bytes, true))
+ return 0;
+
value = dv_load_4 (source);
mmr_off = addr - mmu->base;
value = dv_load_4 (source);
mmr_off = addr - mmu->base;
@@
-159,7
+163,7
@@
bfin_mmu_io_write_buffer (struct hw *me, const void *source,
break;
default:
dv_bfin_mmr_invalid (me, addr, nr_bytes, true);
break;
default:
dv_bfin_mmr_invalid (me, addr, nr_bytes, true);
-
break
;
+
return 0
;
}
return nr_bytes;
}
return nr_bytes;
@@
-173,6
+177,10
@@
bfin_mmu_io_read_buffer (struct hw *me, void *dest,
bu32 mmr_off;
bu32 *valuep;
bu32 mmr_off;
bu32 *valuep;
+ /* Invalid access mode is higher priority than missing register. */
+ if (!dv_bfin_mmr_require_32 (me, addr, nr_bytes, false))
+ return 0;
+
mmr_off = addr - mmu->base;
valuep = (void *)((unsigned long)mmu + mmr_base() + mmr_off);
mmr_off = addr - mmu->base;
valuep = (void *)((unsigned long)mmu + mmr_base() + mmr_off);
@@
-200,9
+208,8
@@
bfin_mmu_io_read_buffer (struct hw *me, void *dest,
dv_store_4 (dest, *valuep);
break;
default:
dv_store_4 (dest, *valuep);
break;
default:
- while (1) /* Core MMRs -> exception -> doesn't return. */
- dv_bfin_mmr_invalid (me, addr, nr_bytes, false);
- break;
+ dv_bfin_mmr_invalid (me, addr, nr_bytes, false);
+ return 0;
}
return nr_bytes;
}
return nr_bytes;
@@
-525,7
+532,7
@@
_mmu_check_addr (SIM_CPU *cpu, bu32 addr, bool write, bool inst, int size)
}
else
/* Normalize hit count so hits==2 is always multiple hit exception. */
}
else
/* Normalize hit count so hits==2 is always multiple hit exception. */
- hits =
MIN
(2, hits);
+ hits =
min
(2, hits);
_mmu_log_fault (cpu, mmu, addr, write, inst, hits == 0, supv, dag1, faults);
_mmu_log_fault (cpu, mmu, addr, write, inst, hits == 0, supv, dag1, faults);
This page took
0.023915 seconds
and
4
git commands to generate.