Software APIs
mock_mmio.cc
1// Copyright lowRISC contributors (OpenTitan project).
2// Licensed under the Apache License, Version 2.0, see LICENSE for details.
3// SPDX-License-Identifier: Apache-2.0
4
5#include "sw/device/lib/base/mock_mmio.h"
6
8
9namespace mock_mmio {
10std::random_device MockDevice::rd;
11
12// Definitions for the MOCK_MMIO-mode declarations in |mmio.h|.
13extern "C" {
14// dummy
15mmio_region_t mmio_region_from_addr(uintptr_t address) {
16 return (mmio_region_t){};
17}
18
19uint8_t mmio_region_read8(mmio_region_t base, ptrdiff_t offset) {
20 auto *dev = static_cast<MockDevice *>(base.mock);
21 return dev->Read8(offset);
22}
23
24uint32_t mmio_region_read32(mmio_region_t base, ptrdiff_t offset) {
25 auto *dev = static_cast<MockDevice *>(base.mock);
26 return dev->Read32(offset);
27}
28
29void mmio_region_write8(mmio_region_t base, ptrdiff_t offset, uint8_t value) {
30 auto *dev = static_cast<MockDevice *>(base.mock);
31 dev->Write8(offset, value);
32}
33
34void mmio_region_write8_shadowed(mmio_region_t base, ptrdiff_t offset,
35 uint8_t value) {
36 auto *dev = static_cast<MockDevice *>(base.mock);
37 dev->Write8(offset, value);
38 dev->Write8(offset, value);
39}
40
41void mmio_region_write32(mmio_region_t base, ptrdiff_t offset, uint32_t value) {
42 auto *dev = static_cast<MockDevice *>(base.mock);
43 dev->Write32(offset, value);
44}
45
46void mmio_region_write32_shadowed(mmio_region_t base, ptrdiff_t offset,
47 uint32_t value) {
48 auto *dev = static_cast<MockDevice *>(base.mock);
49 dev->Write32(offset, value);
50 dev->Write32(offset, value);
51}
52} // extern "C"
53} // namespace mock_mmio