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 
9 namespace mock_mmio {
10 std::random_device MockDevice::rd;
11 
12 // Definitions for the MOCK_MMIO-mode declarations in |mmio.h|.
13 extern "C" {
14 // dummy
15 mmio_region_t mmio_region_from_addr(uintptr_t address) {
16  return (mmio_region_t){};
17 }
18 
19 uint8_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 
24 uint32_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 
29 void 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 
34 void 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 
41 void 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 
46 void 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