svn commit: r245053 - projects/bhyve/sys/x86/include
Neel Natu
neel at FreeBSD.org
Sat Jan 5 02:10:28 UTC 2013
Author: neel
Date: Sat Jan 5 02:10:27 2013
New Revision: 245053
URL: http://svnweb.freebsd.org/changeset/base/245053
Log:
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
Modified:
projects/bhyve/sys/x86/include/bus.h
Modified: projects/bhyve/sys/x86/include/bus.h
==============================================================================
--- projects/bhyve/sys/x86/include/bus.h Sat Jan 5 02:08:47 2013 (r245052)
+++ projects/bhyve/sys/x86/include/bus.h Sat Jan 5 02:10:27 2013 (r245053)
@@ -294,13 +294,9 @@ bus_space_read_multi_1(bus_space_tag_t t
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 t
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 t
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
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
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
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\
More information about the svn-src-projects
mailing list