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>