summaryrefslogtreecommitdiffstats
path: root/src/arch
diff options
context:
space:
mode:
authorMichael Brown2008-10-12 03:11:50 +0200
committerMichael Brown2008-10-12 03:15:34 +0200
commitaef6d0df5cf4e4c917e44d6b145802fa206da246 (patch)
tree69218e362822816b15dc0e9b4c95b19a6c943778 /src/arch
parent[i386] Remove obsolete functions from virtaddr.h (diff)
downloadipxe-aef6d0df5cf4e4c917e44d6b145802fa206da246.tar.gz
ipxe-aef6d0df5cf4e4c917e44d6b145802fa206da246.tar.xz
ipxe-aef6d0df5cf4e4c917e44d6b145802fa206da246.zip
[ioapi] Absorb virt_to_phys() and phys_to_virt() into the I/O API
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/i386/core/x86_io.c7
-rw-r--r--src/arch/i386/include/gpxe/x86_io.h30
-rw-r--r--src/arch/i386/include/virtaddr.h12
3 files changed, 25 insertions, 24 deletions
diff --git a/src/arch/i386/core/x86_io.c b/src/arch/i386/core/x86_io.c
index 926f1d60a..1aab6c964 100644
--- a/src/arch/i386/core/x86_io.c
+++ b/src/arch/i386/core/x86_io.c
@@ -65,10 +65,13 @@ static void x86_writeq ( uint64_t data, volatile uint64_t *io_addr ) {
: : "A" ( data ), "r" ( io_addr ) );
}
-PROVIDE_IOAPI_INLINE ( x86, iounmap );
-PROVIDE_IOAPI_INLINE ( x86, io_to_bus );
+PROVIDE_IOAPI_INLINE ( x86, virt_to_phys );
+PROVIDE_IOAPI_INLINE ( x86, phys_to_virt );
PROVIDE_IOAPI_INLINE ( x86, virt_to_bus );
PROVIDE_IOAPI_INLINE ( x86, bus_to_virt );
+PROVIDE_IOAPI_INLINE ( x86, ioremap );
+PROVIDE_IOAPI_INLINE ( x86, iounmap );
+PROVIDE_IOAPI_INLINE ( x86, io_to_bus );
PROVIDE_IOAPI_INLINE ( x86, readb );
PROVIDE_IOAPI_INLINE ( x86, readw );
PROVIDE_IOAPI_INLINE ( x86, readl );
diff --git a/src/arch/i386/include/gpxe/x86_io.h b/src/arch/i386/include/gpxe/x86_io.h
index 3a907f8bd..8b9942e6d 100644
--- a/src/arch/i386/include/gpxe/x86_io.h
+++ b/src/arch/i386/include/gpxe/x86_io.h
@@ -28,6 +28,26 @@
*
*/
+static inline __always_inline unsigned long
+IOAPI_INLINE ( x86, virt_to_phys ) ( volatile const void *addr ) {
+ return ( ( ( unsigned long ) addr ) + virt_offset );
+}
+
+static inline __always_inline void *
+IOAPI_INLINE ( x86, phys_to_virt ) ( unsigned long phys_addr ) {
+ return ( ( void * ) ( phys_addr - virt_offset ) );
+}
+
+static inline __always_inline unsigned long
+IOAPI_INLINE ( x86, virt_to_bus ) ( volatile const void *addr ) {
+ return virt_to_phys ( addr );
+}
+
+static inline __always_inline void *
+IOAPI_INLINE ( x86, bus_to_virt ) ( unsigned long bus_addr ) {
+ return phys_to_virt ( bus_addr );
+}
+
static inline __always_inline void *
IOAPI_INLINE ( x86, ioremap ) ( unsigned long bus_addr, size_t len __unused ) {
return phys_to_virt ( bus_addr );
@@ -43,16 +63,6 @@ IOAPI_INLINE ( x86, io_to_bus ) ( volatile const void *io_addr ) {
return virt_to_phys ( io_addr );
}
-static inline __always_inline unsigned long
-IOAPI_INLINE ( x86, virt_to_bus ) ( volatile const void *addr ) {
- return virt_to_phys ( addr );
-}
-
-static inline __always_inline void *
-IOAPI_INLINE ( x86, bus_to_virt ) ( unsigned long bus_addr ) {
- return phys_to_virt ( bus_addr );
-}
-
/*
* MMIO reads and writes up to 32 bits
*
diff --git a/src/arch/i386/include/virtaddr.h b/src/arch/i386/include/virtaddr.h
index 6c63b5019..e7bb2ccef 100644
--- a/src/arch/i386/include/virtaddr.h
+++ b/src/arch/i386/include/virtaddr.h
@@ -32,18 +32,6 @@
/* Variables in virtaddr.S */
extern unsigned long virt_offset;
-/*
- * Convert between virtual and physical addresses
- *
- */
-static inline unsigned long virt_to_phys ( volatile const void *virt_addr ) {
- return ( ( unsigned long ) virt_addr ) + virt_offset;
-}
-
-static inline void * phys_to_virt ( unsigned long phys_addr ) {
- return ( void * ) ( phys_addr - virt_offset );
-}
-
#else /* KEEP_IT_REAL */
#include <stdint.h>