summaryrefslogtreecommitdiffstats
path: root/src/include/ipxe/dummy_pio.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/ipxe/dummy_pio.h')
-rw-r--r--src/include/ipxe/dummy_pio.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/include/ipxe/dummy_pio.h b/src/include/ipxe/dummy_pio.h
index 1cdabba14..7c80cdf35 100644
--- a/src/include/ipxe/dummy_pio.h
+++ b/src/include/ipxe/dummy_pio.h
@@ -13,6 +13,8 @@
FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+#include <string.h>
+
#define DUMMY_INX( _prefix, _suffix, _type ) \
static inline __always_inline _type \
IOAPI_INLINE ( _prefix, in ## _suffix ) ( volatile _type *io_addr __unused) { \
@@ -37,6 +39,19 @@ IOAPI_INLINE ( _prefix, outs ## _suffix ) ( volatile _type *io_addr __unused, \
/* Do nothing */ \
}
+#define DUMMY_IOREADX( _prefix, _width, _suffix, _type ) \
+static inline __always_inline _type \
+IOAPI_INLINE ( _prefix, ioread ## _width ) ( volatile _type *io_addr ) { \
+ return IOAPI_INLINE ( _prefix, read ## _suffix ) ( io_addr ); \
+}
+
+#define DUMMY_IOWRITEX( _prefix, _width, _suffix, _type ) \
+static inline __always_inline void \
+IOAPI_INLINE ( _prefix, iowrite ## _width ) ( _type data, \
+ volatile _type *io_addr ) { \
+ IOAPI_INLINE ( _prefix, write ## _suffix ) ( data, io_addr ); \
+}
+
#define DUMMY_IODELAY( _prefix ) \
static inline __always_inline void \
IOAPI_INLINE ( _prefix, iodelay ) ( void ) { \
@@ -50,6 +65,12 @@ IOAPI_INLINE ( _prefix, iodelay ) ( void ) { \
DUMMY_OUTX ( _prefix, b, uint8_t ); \
DUMMY_OUTX ( _prefix, w, uint16_t ); \
DUMMY_OUTX ( _prefix, l, uint32_t ); \
+ DUMMY_IOREADX ( _prefix, 8, b, uint8_t ); \
+ DUMMY_IOREADX ( _prefix, 16, w, uint16_t ); \
+ DUMMY_IOREADX ( _prefix, 32, l, uint32_t ); \
+ DUMMY_IOWRITEX ( _prefix, 8, b, uint8_t ); \
+ DUMMY_IOWRITEX ( _prefix, 16, w, uint16_t ); \
+ DUMMY_IOWRITEX ( _prefix, 32, l, uint32_t ); \
DUMMY_IODELAY ( _prefix );
#define PROVIDE_DUMMY_PIO( _prefix ) \
@@ -59,6 +80,12 @@ IOAPI_INLINE ( _prefix, iodelay ) ( void ) { \
PROVIDE_IOAPI_INLINE ( _prefix, outb ); \
PROVIDE_IOAPI_INLINE ( _prefix, outw ); \
PROVIDE_IOAPI_INLINE ( _prefix, outl ); \
+ PROVIDE_IOAPI_INLINE ( _prefix, ioread8 ); \
+ PROVIDE_IOAPI_INLINE ( _prefix, ioread16 ); \
+ PROVIDE_IOAPI_INLINE ( _prefix, ioread32 ); \
+ PROVIDE_IOAPI_INLINE ( _prefix, iowrite8 ); \
+ PROVIDE_IOAPI_INLINE ( _prefix, iowrite16 ); \
+ PROVIDE_IOAPI_INLINE ( _prefix, iowrite32 ); \
PROVIDE_IOAPI_INLINE ( _prefix, iodelay );
#endif /* _IPXE_DUMMY_PIO_H */