diff options
| author | Simon Rettberg | 2026-01-28 12:53:53 +0100 |
|---|---|---|
| committer | Simon Rettberg | 2026-01-28 12:53:53 +0100 |
| commit | 8e82785c584dc13e20f9229decb95bd17bbe9cd1 (patch) | |
| tree | a8b359e59196be5b2e3862bed189107f4bc9975f /src/include/ipxe/dummy_pio.h | |
| parent | Merge branch 'master' into openslx (diff) | |
| parent | [prefix] Make unlzma.S compatible with 386 class CPUs (diff) | |
| download | ipxe-openslx.tar.gz ipxe-openslx.tar.xz ipxe-openslx.zip | |
Merge branch 'master' into openslxopenslx
Diffstat (limited to 'src/include/ipxe/dummy_pio.h')
| -rw-r--r-- | src/include/ipxe/dummy_pio.h | 27 |
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 */ |
