mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Rich Felker <dalias@libc.org>
To: musl@lists.openwall.com
Subject: Re: sys/io.h lacks inb_p and outb_p on x86
Date: Mon, 9 Nov 2015 17:17:34 -0500	[thread overview]
Message-ID: <20151109221734.GR3818@brightrain.aerifal.cx> (raw)
In-Reply-To: <20151108052358.GN3818@brightrain.aerifal.cx>

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@libc.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


  reply	other threads:[~2015-11-09 22:17 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-08  4:26 Рысь
2015-11-08  4:50 ` Rich Felker
2015-11-08  5:13   ` Рысь
2015-11-08  5:23     ` Rich Felker
2015-11-09 22:17       ` Rich Felker [this message]
2015-11-10  8:08         ` Рысь
2015-11-10  8:50           ` Felix Janda
2015-11-10  9:29             ` Рысь

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20151109221734.GR3818@brightrain.aerifal.cx \
    --to=dalias@libc.org \
    --cc=musl@lists.openwall.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).