/* Blackfin Universal Asynchronous Receiver/Transmitter (UART) model.
For "old style" UARTs on BF53x/etc... parts.
- Copyright (C) 2010-2015 Free Software Foundation, Inc.
+ Copyright (C) 2010-2021 Free Software Foundation, Inc.
Contributed by Analog Devices, Inc.
This file is part of simulators.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
-#include "config.h"
+/* This must come before any other includes. */
+#include "defs.h"
#include "sim-main.h"
#include "dv-sockser.h"
}
#define mmr_name(off) mmr_name (uart, (off) / 4)
-#ifndef HAVE_DV_SOCKSER
-# define dv_sockser_status(sd) -1
-# define dv_sockser_write(sd, byte) do { ; } while (0)
-# define dv_sockser_read(sd) 0xff
-#endif
-
static void
bfin_uart_poll (struct hw *me, void *data)
{
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 ();
- dv_bfin_mmr_require_16 (me, addr, nr_bytes, true);
-
/* XXX: All MMRs are "8bit" ... what happens to high 8bits ? */
switch (mmr_off)
{
break;
default:
dv_bfin_mmr_invalid (me, addr, nr_bytes, true);
- break;
+ return 0;
}
return nr_bytes;
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 ();
- dv_bfin_mmr_require_16 (me, addr, nr_bytes, false);
-
switch (mmr_off)
{
case mmr_offset(dll):
break;
default:
dv_bfin_mmr_invalid (me, addr, nr_bytes, false);
- break;
+ return 0;
}
return nr_bytes;