20#include "pedigree/kernel/processor/MemoryMappedIo.h"
21#include "pedigree/kernel/processor/Processor.h"
22#include "pedigree/kernel/utilities/utility.h"
24MemoryMappedIo::MemoryMappedIo(
const char* pName, uintptr_t offset, uintptr_t padding)
39 return *
reinterpret_cast<volatile uint8_t*
>(
45 if ((offset + 1) >=
size())
49 return *
reinterpret_cast<volatile uint16_t*
>(
55 if ((offset + 3) >=
size())
59 return *
reinterpret_cast<volatile uint32_t*
>(
65 if ((offset + 7) >=
size())
69 return *
reinterpret_cast<volatile uint64_t*
>(
79 *
reinterpret_cast<volatile uint8_t*
>(
85 if ((offset + 1) >=
size())
89 *
reinterpret_cast<volatile uint16_t*
>(
95 if ((offset + 3) >=
size())
99 *
reinterpret_cast<volatile uint32_t*
>(
105 if ((offset + 7) >=
size())
109 *
reinterpret_cast<volatile uint64_t*
>(
113MemoryMappedIo::operator bool()
const {
114 return MemoryRegion::operator bool();
Abstrace base class for hardware I/O capabilities.
virtual void write8(uint8_t value, size_t offset=0)
virtual uint32_t read32(size_t offset=0)
virtual void write64(uint64_t value, size_t offset=0)
virtual uint16_t read16(size_t offset=0)
virtual uint64_t read64(size_t offset=0)
virtual size_t size() const
virtual uint8_t read8(size_t offset=0)
virtual void write16(uint16_t value, size_t offset=0)
virtual ~MemoryMappedIo()
virtual void write32(uint32_t value, size_t offset=0)
Special memory entity in the kernel's virtual address space.
void * virtualAddress() const