Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Sep 2012 08:53:11 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r240637 - head/sys/boot/i386/loader
Message-ID:  <201209180853.q8I8rBlQ059275@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: avg
Date: Tue Sep 18 08:53:11 2012
New Revision: 240637
URL: http://svn.freebsd.org/changeset/base/240637

Log:
  loader/i386: replace ugly inb/outb re-implementations with cpufunc.h
  
  Use of __builtin_constant_p in a function that is only called via
  a pointer is a good example of how out-of-date it was.
  
  Suggested by:	bde
  MFC after:	1 week

Modified:
  head/sys/boot/i386/loader/main.c

Modified: head/sys/boot/i386/loader/main.c
==============================================================================
--- head/sys/boot/i386/loader/main.c	Tue Sep 18 08:28:08 2012	(r240636)
+++ head/sys/boot/i386/loader/main.c	Tue Sep 18 08:53:11 2012	(r240637)
@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
 #include <stddef.h>
 #include <string.h>
 #include <machine/bootinfo.h>
+#include <machine/cpufunc.h>
 #include <machine/psl.h>
 #include <sys/reboot.h>
 
@@ -321,34 +322,19 @@ command_heap(int argc, char *argv[])
     return(CMD_OK);
 }
 
-/* ISA bus access functions for PnP, derived from <machine/cpufunc.h> */
+/* ISA bus access functions for PnP. */
 static int
 isa_inb(int port)
 {
-    u_char	data;
 
-    if (__builtin_constant_p(port) &&
-	(((port) & 0xffff) < 0x100) &&
-	((port) < 0x10000)) {
-	__asm __volatile("inb %1,%0" : "=a" (data) : "id" ((u_short)(port)));
-    } else {
-	__asm __volatile("inb %%dx,%0" : "=a" (data) : "d" (port));
-    }
-    return(data);
+    return (inb(port));
 }
 
 static void
 isa_outb(int port, int value)
 {
-    u_char	al = value;
 
-    if (__builtin_constant_p(port) &&
-	(((port) & 0xffff) < 0x100) &&
-	((port) < 0x10000)) {
-	__asm __volatile("outb %0,%1" : : "a" (al), "id" ((u_short)(port)));
-    } else {
-        __asm __volatile("outb %0,%%dx" : : "a" (al), "d" (port));
-    }
+    outb(port, value);
 }
 
 #ifdef LOADER_ZFS_SUPPORT



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201209180853.q8I8rBlQ059275>