projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sim: bfin: push down mmr address/size checks
[deliverable/binutils-gdb.git]
/
sim
/
bfin
/
dv-bfin_uart2.c
diff --git
a/sim/bfin/dv-bfin_uart2.c
b/sim/bfin/dv-bfin_uart2.c
index 40a7eddf967198c8867f70e330b4d17c1432e745..59716b99a44b8ca53d593f791abd286221909022 100644
(file)
--- a/
sim/bfin/dv-bfin_uart2.c
+++ b/
sim/bfin/dv-bfin_uart2.c
@@
-76,14
+76,16
@@
bfin_uart_io_write_buffer (struct hw *me, const void *source,
bu32 value;
bu16 *valuep;
bu32 value;
bu16 *valuep;
+ /* Invalid access mode is higher priority than missing register. */
+ if (!dv_bfin_mmr_require_16 (me, addr, nr_bytes, true))
+ return 0;
+
value = dv_load_2 (source);
mmr_off = addr - uart->base;
valuep = (void *)((unsigned long)uart + mmr_base() + mmr_off);
HW_TRACE_WRITE ();
value = dv_load_2 (source);
mmr_off = addr - uart->base;
valuep = (void *)((unsigned long)uart + mmr_base() + mmr_off);
HW_TRACE_WRITE ();
- dv_bfin_mmr_require_16 (me, addr, nr_bytes, true);
-
/* XXX: All MMRs are "8bit" ... what happens to high 8bits ? */
switch (mmr_off)
/* XXX: All MMRs are "8bit" ... what happens to high 8bits ? */
switch (mmr_off)
@@
-118,7
+120,7
@@
bfin_uart_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;
@@
-132,13
+134,15
@@
bfin_uart_io_read_buffer (struct hw *me, void *dest,
bu32 mmr_off;
bu16 *valuep;
bu32 mmr_off;
bu16 *valuep;
+ /* Invalid access mode is higher priority than missing register. */
+ if (!dv_bfin_mmr_require_16 (me, addr, nr_bytes, false))
+ return 0;
+
mmr_off = addr - uart->base;
valuep = (void *)((unsigned long)uart + mmr_base() + mmr_off);
HW_TRACE_READ ();
mmr_off = addr - uart->base;
valuep = (void *)((unsigned long)uart + mmr_base() + mmr_off);
HW_TRACE_READ ();
- dv_bfin_mmr_require_16 (me, addr, nr_bytes, false);
-
switch (mmr_off)
{
case mmr_offset(rbr):
switch (mmr_off)
{
case mmr_offset(rbr):
@@
-165,7
+169,7
@@
bfin_uart_io_read_buffer (struct hw *me, void *dest,
break;
default:
dv_bfin_mmr_invalid (me, addr, nr_bytes, false);
break;
default:
dv_bfin_mmr_invalid (me, addr, nr_bytes, false);
-
break
;
+
return 0
;
}
return nr_bytes;
}
return nr_bytes;
This page took
0.026117 seconds
and
4
git commands to generate.