From 4292076e50a8bfa310514de3291d332ef4d445f4 Mon Sep 17 00:00:00 2001 From: neel Date: Sat, 5 Jan 2013 02:10:27 +0000 Subject: Get rid of workarounds to avoid ins/outs instructions emitted by the guest. They can be emulated if needed in the future. Obtained from: NetApp --- sys/x86/include/bus.h | 60 ++++++++++++++++----------------------------------- 1 file changed, 18 insertions(+), 42 deletions(-) diff --git a/sys/x86/include/bus.h b/sys/x86/include/bus.h index 4efc172..52c4251 100644 --- a/sys/x86/include/bus.h +++ b/sys/x86/include/bus.h @@ -294,13 +294,9 @@ bus_space_read_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int8_t *addr, size_t count) { - if (tag == X86_BUS_SPACE_IO) { - while (count > 0) { - *addr = inb(bsh + offset); - count--; - addr++; - } - } else { + if (tag == X86_BUS_SPACE_IO) + insb(bsh + offset, addr, count); + else { #ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ cld \n\ @@ -319,13 +315,9 @@ bus_space_read_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int16_t *addr, size_t count) { - if (tag == X86_BUS_SPACE_IO) { - while (count > 0) { - *addr = inw(bsh + offset); - count--; - addr++; - } - } else { + if (tag == X86_BUS_SPACE_IO) + insw(bsh + offset, addr, count); + else { #ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ cld \n\ @@ -344,13 +336,9 @@ bus_space_read_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, u_int32_t *addr, size_t count) { - if (tag == X86_BUS_SPACE_IO) { - while (count > 0) { - *addr = inl(bsh + offset); - count--; - addr++; - } - } else { + if (tag == X86_BUS_SPACE_IO) + insl(bsh + offset, addr, count); + else { #ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ cld \n\ @@ -585,13 +573,9 @@ bus_space_write_multi_1(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, const u_int8_t *addr, size_t count) { - if (tag == X86_BUS_SPACE_IO) { - while (count > 0) { - outb(bsh + offset, *addr); - addr++; - count--; - } - } else { + if (tag == X86_BUS_SPACE_IO) + outsb(bsh + offset, addr, count); + else { #ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ cld \n\ @@ -610,13 +594,9 @@ bus_space_write_multi_2(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, const u_int16_t *addr, size_t count) { - if (tag == X86_BUS_SPACE_IO) { - while (count > 0) { - outw(bsh + offset, *addr); - addr++; - count--; - } - } else { + if (tag == X86_BUS_SPACE_IO) + outsw(bsh + offset, addr, count); + else { #ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ cld \n\ @@ -635,13 +615,9 @@ bus_space_write_multi_4(bus_space_tag_t tag, bus_space_handle_t bsh, bus_size_t offset, const u_int32_t *addr, size_t count) { - if (tag == X86_BUS_SPACE_IO) { - while (count > 0) { - outl(bsh + offset, *addr); - addr++; - count--; - } - } else { + if (tag == X86_BUS_SPACE_IO) + outsl(bsh + offset, addr, count); + else { #ifdef __GNUCLIKE_ASM __asm __volatile(" \n\ cld \n\ -- cgit v1.1