From owner-cvs-src@FreeBSD.ORG Thu Jun 3 16:06:50 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8872B16A4CF for ; Thu, 3 Jun 2004 16:06:50 -0700 (PDT) Received: from root.org (root.org [67.118.192.226]) by mx1.FreeBSD.org (Postfix) with SMTP id 118A543D4C for ; Thu, 3 Jun 2004 16:06:50 -0700 (PDT) (envelope-from nate@root.org) Received: (qmail 45619 invoked by uid 1000); 3 Jun 2004 23:06:51 -0000 Date: Thu, 3 Jun 2004 16:06:51 -0700 (PDT) From: Nate Lawson To: Poul-Henning Kamp In-Reply-To: <20040603223638.2187316A54D@hub.freebsd.org> Message-ID: <20040603160405.E45592@root.org> References: <20040603223638.2187316A54D@hub.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: cvs-src@FreeBSD.org cc: src-committers@FreeBSD.org cc: cvs-all@FreeBSD.org Subject: Re: cvs commit: src/sys/i386/include/pc bios.h src/sys/i386/i386 bios.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 03 Jun 2004 23:06:50 -0000 On Thu, 3 Jun 2004, Poul-Henning Kamp wrote: > phk 2004/06/03 15:36:24 PDT > > FreeBSD src repository > > Modified files: > sys/i386/include/pc bios.h > sys/i386/i386 bios.c > Log: > Add new bios_string() which will hunt for a string inside a given range > of the BIOS. This can be used for finding arbitrary magic in the BIOS > in order to recognize particular platforms. > > Revision Changes Path > 1.66 +15 -0 src/sys/i386/i386/bios.c > 1.15 +8 -0 src/sys/i386/include/pc/bios.h > > --- src/sys/i386/i386/bios.c:1.65 Sun May 30 10:57:42 2004 > +++ src/sys/i386/i386/bios.c Thu Jun 3 15:36:24 2004 > @@ -472,6 +472,21 @@ > free(pte, M_TEMP); /* ... and free it */ > } > return (i); > +} > + > +const u_char * > +bios_string(u_int from, u_int to, const u_char *string, int len) > +{ > + const char *t, *te; > + > + if (len == 0) > + len = strlen(string); > + t = (const char *)(KERNBASE + from); > + te = (const char *)(KERNBASE + to); > + for (; t <= te; t++) > + if (!memcmp(string, t, len)) > + return (t); > + return (NULL); > } Many BIOS strings have alignment requirements. That might be useful to add. Is all of BIOS mapped into kernel memory or should this operate on physical addresses instead? -Nate