|
Message-ID: <20151109221734.GR3818@brightrain.aerifal.cx> Date: Mon, 9 Nov 2015 17:17:34 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: sys/io.h lacks inb_p and outb_p on x86 On Sun, Nov 08, 2015 at 12:23:58AM -0500, Rich Felker wrote: > On Sun, Nov 08, 2015 at 12:13:37PM +0700, Рысь wrote: > > On Sat, 7 Nov 2015 23:50:45 -0500 > > Rich Felker <dalias@...c.org> wrote: > > > > > On Sun, Nov 08, 2015 at 11:26:55AM +0700, Рысь wrote: > > > > x86 arch lacks inb_p and outb_p inline functions. This is required > > > > for memtest86+. > > > > > > > > I don't know how properly make an assembly here, so when making > > > > memtest I copied sys/io.h into local directory, and copied these > > > > functions from uClibc. > > > > > > > > I attach modified header for reference (they should go into > > > > bits/io.h). > > > > > > Any idea what these are intended to do? Are they documented anywhere? > > > > > > Rich > > > > I can't say much, but looking into memtest code I see they're used only > > for beeping a PC speaker. > > > > Comment in io.h include file of memtest says: > > > > * This file contains the definitions for the x86 IO instructions > > * inb/inw/inl/outb/outw/outl and the "string versions" of the same > > * (insb/insw/insl/outsb/outsw/outsl). You can also use "pausing" > > * versions of the single-IO instructions (inb_p/inw_p/..). > > > > However memtest builds with assumption they're present in sys/io.h from > > host and io.h included with memtest does not define inb_p/outb_p in any > > way. > > > > I probably will go with uClibc defines, or just nop memtest beeper. > > See http://stackoverflow.com/questions/6793899/what-does-the-0x80-port-address-connects > > So apparently these are convenience functions to show the most recent > port io that was performed on a hardware debugging device in case the > memtest crashes. I don't mind adding them is software expects them to > be there, but they should be written in terms of the existing > functions rather than duplicating asm. Hmm, according to the man page this is actually to "pause". See: http://man7.org/linux/man-pages/man2/outb.2.html Of course there's also all kinds of nonsense claiming they won't work with -O0, so I'm not sure what to believe. If you want these, can you prepare a patch adding all 6 *_p functions as calls to plain in[bwl]/out[bwl] followed by a call to outb to port 0x80? Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.