diff options
author | Myles Watson <mylesgw@gmail.com> | 2010-03-05 18:27:19 +0000 |
---|---|---|
committer | Myles Watson <mylesgw@gmail.com> | 2010-03-05 18:27:19 +0000 |
commit | b0259117f214a80d1ca945bd1fe05b6b3d9858a9 (patch) | |
tree | 50f607aa8d8ac00d7b10fe970cea756d7e2470c3 /util/x86emu/yabel/compat | |
parent | f98ad3ace0852159c6e716a5563a9c3df8cf76f3 (diff) |
1. Move run_bios prototype to device.h
2. Use time.h for get_time() and move tb_freq into functions.c
3. Move read_io and write_io to io.c and make them static
4. Make a couple of functions static in interrupt.c
5. Refactor a cast from char[] to u64 to get rid of potential alignment problems and a warning
Signed-off-by: Myles Watson <mylesgw@gmail.com>
Acked-by: Stefan Reinauer <stepan@coresystems.de>
git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5191 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'util/x86emu/yabel/compat')
-rw-r--r-- | util/x86emu/yabel/compat/functions.c | 50 | ||||
-rw-r--r-- | util/x86emu/yabel/compat/time.h | 3 |
2 files changed, 5 insertions, 48 deletions
diff --git a/util/x86emu/yabel/compat/functions.c b/util/x86emu/yabel/compat/functions.c index 4d1f1e4fda..6367fb025d 100644 --- a/util/x86emu/yabel/compat/functions.c +++ b/util/x86emu/yabel/compat/functions.c @@ -18,6 +18,7 @@ #include <device/device.h> #include "../debug.h" #include "../biosemu.h" +#include "../compat/time.h" #define VMEM_SIZE (1024 * 1024) /* 1 MB */ @@ -52,6 +53,8 @@ void run_bios(struct device * dev, unsigned long addr) } } +unsigned long tb_freq = 0; + u64 get_time(void) { u64 act; @@ -64,50 +67,3 @@ u64 get_time(void) act = ((u64) edx << 32) | eax; return act; } - -unsigned int -read_io(void *addr, size_t sz) -{ - unsigned int ret; - /* since we are using inb instructions, we need the port number as 16bit value */ - u16 port = (u16)(u32) addr; - - switch (sz) { - case 1: - asm volatile ("inb %1, %b0" : "=a"(ret) : "d" (port)); - break; - case 2: - asm volatile ("inw %1, %w0" : "=a"(ret) : "d" (port)); - break; - case 4: - asm volatile ("inl %1, %0" : "=a"(ret) : "d" (port)); - break; - default: - ret = 0; - } - - return ret; -} - -int -write_io(void *addr, unsigned int value, size_t sz) -{ - u16 port = (u16)(u32) addr; - switch (sz) { - /* since we are using inb instructions, we need the port number as 16bit value */ - case 1: - asm volatile ("outb %b0, %1" : : "a"(value), "d" (port)); - break; - case 2: - asm volatile ("outw %w0, %1" : : "a"(value), "d" (port)); - break; - case 4: - asm volatile ("outl %0, %1" : : "a"(value), "d" (port)); - break; - default: - return -1; - } - - return 0; -} - diff --git a/util/x86emu/yabel/compat/time.h b/util/x86emu/yabel/compat/time.h index c8432eca43..6f7099bd86 100644 --- a/util/x86emu/yabel/compat/time.h +++ b/util/x86emu/yabel/compat/time.h @@ -13,5 +13,6 @@ #define _BIOSEMU_COMPAT_TIME_H /* TODO: check how this works in x86 */ -static unsigned long tb_freq = 0; +extern unsigned long tb_freq; +u64 get_time(void); #endif |