From 5691487f3100c5176da4f0acbbb39b09b6180e05 Mon Sep 17 00:00:00 2001 From: Matthew Fioravante Date: Mon, 8 Oct 2012 14:36:28 +0100 Subject: minios: Add ioread/iowrite functions to mini-os This patch adds iowritexx() and ioreadxx() functions for interacting with hardware memory to mini-os. The functions are available in a header iorw.h Signed-off-by: Matthew Fioravante Acked-by: Samuel Thibault Reviewed-by: George Dunlap Committed-by: Ian Campbell --- extras/mini-os/arch/x86/iorw.c | 35 +++++++++++++++++++++++++++++++++++ extras/mini-os/include/iorw.h | 16 ++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 extras/mini-os/arch/x86/iorw.c create mode 100644 extras/mini-os/include/iorw.h (limited to 'extras') diff --git a/extras/mini-os/arch/x86/iorw.c b/extras/mini-os/arch/x86/iorw.c new file mode 100644 index 0000000000..308076958c --- /dev/null +++ b/extras/mini-os/arch/x86/iorw.c @@ -0,0 +1,35 @@ +#include + +void iowrite8(volatile void* addr, uint8_t val) +{ + *((volatile uint8_t*)addr) = val; +} +void iowrite16(volatile void* addr, uint16_t val) +{ + *((volatile uint16_t*)addr) = val; +} +void iowrite32(volatile void* addr, uint32_t val) +{ + *((volatile uint32_t*)addr) = val; +} +void iowrite64(volatile void* addr, uint64_t val) +{ + *((volatile uint64_t*)addr) = val; +} + +uint8_t ioread8(volatile void* addr) +{ + return *((volatile uint8_t*) addr); +} +uint16_t ioread16(volatile void* addr) +{ + return *((volatile uint16_t*) addr); +} +uint32_t ioread32(volatile void* addr) +{ + return *((volatile uint32_t*) addr); +} +uint64_t ioread64(volatile void* addr) +{ + return *((volatile uint64_t*) addr); +} diff --git a/extras/mini-os/include/iorw.h b/extras/mini-os/include/iorw.h new file mode 100644 index 0000000000..d5ec065cf1 --- /dev/null +++ b/extras/mini-os/include/iorw.h @@ -0,0 +1,16 @@ +#ifndef MINIOS_IORW_H +#define MINIOS_IORW_H + +#include + +void iowrite8(volatile void* addr, uint8_t val); +void iowrite16(volatile void* addr, uint16_t val); +void iowrite32(volatile void* addr, uint32_t val); +void iowrite64(volatile void* addr, uint64_t val); + +uint8_t ioread8(volatile void* addr); +uint16_t ioread16(volatile void* addr); +uint32_t ioread32(volatile void* addr); +uint64_t ioread64(volatile void* addr); + +#endif -- cgit v1.2.3