projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Automatic date update in version.in
[deliverable/binutils-gdb.git]
/
sim
/
bfin
/
dv-bfin_ebiu_ddrc.c
diff --git
a/sim/bfin/dv-bfin_ebiu_ddrc.c
b/sim/bfin/dv-bfin_ebiu_ddrc.c
index c68c1ab5bd99a8eaea338280707bf65b0d4a8984..2e0066965f22d7f434230e0ddc160bd779f69de9 100644
(file)
--- a/
sim/bfin/dv-bfin_ebiu_ddrc.c
+++ b/
sim/bfin/dv-bfin_ebiu_ddrc.c
@@
-1,6
+1,6
@@
/* Blackfin External Bus Interface Unit (EBIU) DDR Controller (DDRC) Model.
/* Blackfin External Bus Interface Unit (EBIU) DDR Controller (DDRC) 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.
@@
-68,6
+68,10
@@
bfin_ebiu_ddrc_io_write_buffer (struct hw *me, const void *source,
bu32 *value32p;
void *valuep;
bu32 *value32p;
void *valuep;
+ /* Invalid access mode is higher priority than missing register. */
+ if (!dv_bfin_mmr_require_16_32 (me, addr, nr_bytes, true))
+ return 0;
+
if (nr_bytes == 4)
value = dv_load_4 (source);
else
if (nr_bytes == 4)
value = dv_load_4 (source);
else
@@
-84,11
+88,13
@@
bfin_ebiu_ddrc_io_write_buffer (struct hw *me, const void *source,
{
case mmr_offset(errmst):
case mmr_offset(rstctl):
{
case mmr_offset(errmst):
case mmr_offset(rstctl):
- dv_bfin_mmr_require_16 (me, addr, nr_bytes, true);
+ if (!dv_bfin_mmr_require_16 (me, addr, nr_bytes, true))
+ return 0;
*value16p = value;
break;
default:
*value16p = value;
break;
default:
- dv_bfin_mmr_require_32 (me, addr, nr_bytes, true);
+ if (!dv_bfin_mmr_require_32 (me, addr, nr_bytes, true))
+ return 0;
*value32p = value;
break;
}
*value32p = value;
break;
}
@@
-106,6
+112,10
@@
bfin_ebiu_ddrc_io_read_buffer (struct hw *me, void *dest,
bu16 *value16p;
void *valuep;
bu16 *value16p;
void *valuep;
+ /* Invalid access mode is higher priority than missing register. */
+ if (!dv_bfin_mmr_require_16_32 (me, addr, nr_bytes, true))
+ return 0;
+
mmr_off = addr - ddrc->base;
valuep = (void *)((unsigned long)ddrc + mmr_base() + mmr_off);
value16p = valuep;
mmr_off = addr - ddrc->base;
valuep = (void *)((unsigned long)ddrc + mmr_base() + mmr_off);
value16p = valuep;
@@
-117,11
+127,13
@@
bfin_ebiu_ddrc_io_read_buffer (struct hw *me, void *dest,
{
case mmr_offset(errmst):
case mmr_offset(rstctl):
{
case mmr_offset(errmst):
case mmr_offset(rstctl):
- dv_bfin_mmr_require_16 (me, addr, nr_bytes, false);
+ if (!dv_bfin_mmr_require_16 (me, addr, nr_bytes, false))
+ return 0;
dv_store_2 (dest, *value16p);
break;
default:
dv_store_2 (dest, *value16p);
break;
default:
- dv_bfin_mmr_require_32 (me, addr, nr_bytes, false);
+ if (!dv_bfin_mmr_require_32 (me, addr, nr_bytes, false))
+ return 0;
dv_store_4 (dest, *value32p);
break;
}
dv_store_4 (dest, *value32p);
break;
}
@@
-179,7
+191,8
@@
bfin_ebiu_ddrc_finish (struct hw *me)
ddrc->rstctl = 0x0002;
}
ddrc->rstctl = 0x0002;
}
-const struct hw_descriptor dv_bfin_ebiu_ddrc_descriptor[] = {
+const struct hw_descriptor dv_bfin_ebiu_ddrc_descriptor[] =
+{
{"bfin_ebiu_ddrc", bfin_ebiu_ddrc_finish,},
{NULL, NULL},
};
{"bfin_ebiu_ddrc", bfin_ebiu_ddrc_finish,},
{NULL, NULL},
};
This page took
0.024963 seconds
and
4
git commands to generate.