Allow nvramtool to build and work on FreeBSD.
Signed-off-by: Andriy Gapon avg@icyb.net.ua
--- Again this is done using the same technique as for flashrom and superiotool. Tested on FreeBSD 7.
BTW, any news on official release of flashrom?
On Wed, Oct 29, 2008 at 03:14:46PM +0200, Andriy Gapon wrote:
Allow nvramtool to build and work on FreeBSD.
Signed-off-by: Andriy Gapon avg@icyb.net.ua
Thanks, r3709, with some changes though.
The patch you posted was breaking the build on Linux for me.
Index: cmos_lowlevel.c
--- cmos_lowlevel.c (revision 3704) +++ cmos_lowlevel.c (working copy) @@ -28,7 +28,15 @@
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*****************************************************************************/
+#if defined(__GLIBC__) #include <sys/io.h> +#endif
This seemed to cause trouble here, I fixed it by putting <sys/io.h> into the '#else' part of the 'defined(__FreeBSD__)' code in common.h.
This builds fine for me now, but please check that it also still works on FreeBSD, just in case.
Index: common.h
--- common.h (revision 3704) +++ common.h (working copy) @@ -43,6 +43,25 @@ #include <string.h> #include <ctype.h>
+#if defined(__FreeBSD__) +#include <sys/types.h> +#include <machine/cpufunc.h> +#define OUTB(x, y) do { u_int tmp = (y); outb(tmp, (x)); } while (0) +#define OUTW(x, y) do { u_int tmp = (y); outw(tmp, (x)); } while (0) +#define OUTL(x, y) do { u_int tmp = (y); outl(tmp, (x)); } while (0) +#define INB(x) __extension__ ({ u_int tmp = (x); inb(tmp); }) +#define INW(x) __extension__ ({ u_int tmp = (x); inw(tmp); }) +#define INL(x) __extension__ ({ u_int tmp = (x); inl(tmp); }) +#else +#define OUTB OUTB
^^^^ outb
+#define OUTW outw +#define OUTL outl +#define INB INB
^^^ inb
+#define INW inw +#define INL inl +#endif
#define FALSE 0 #define TRUE 1
Uwe.
on 30/10/2008 17:46 Uwe Hermann said the following:
On Wed, Oct 29, 2008 at 03:14:46PM +0200, Andriy Gapon wrote:
Allow nvramtool to build and work on FreeBSD.
Signed-off-by: Andriy Gapon avg@icyb.net.ua
Thanks, r3709, with some changes though.
Thanks a lot!
The patch you posted was breaking the build on Linux for me.
Index: cmos_lowlevel.c
--- cmos_lowlevel.c (revision 3704) +++ cmos_lowlevel.c (working copy) @@ -28,7 +28,15 @@
- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*****************************************************************************/
+#if defined(__GLIBC__) #include <sys/io.h> +#endif
This seemed to cause trouble here, I fixed it by putting <sys/io.h> into the '#else' part of the 'defined(__FreeBSD__)' code in common.h.
This builds fine for me now, but please check that it also still works on FreeBSD, just in case.
Yes, FreeBSD build is still fine. Sorry for the mistakes, thank you for catching and fixing them.
Index: common.h
--- common.h (revision 3704) +++ common.h (working copy) @@ -43,6 +43,25 @@ #include <string.h> #include <ctype.h>
+#if defined(__FreeBSD__) +#include <sys/types.h> +#include <machine/cpufunc.h> +#define OUTB(x, y) do { u_int tmp = (y); outb(tmp, (x)); } while (0) +#define OUTW(x, y) do { u_int tmp = (y); outw(tmp, (x)); } while (0) +#define OUTL(x, y) do { u_int tmp = (y); outl(tmp, (x)); } while (0) +#define INB(x) __extension__ ({ u_int tmp = (x); inb(tmp); }) +#define INW(x) __extension__ ({ u_int tmp = (x); inw(tmp); }) +#define INL(x) __extension__ ({ u_int tmp = (x); inl(tmp); }) +#else +#define OUTB OUTB
^^^^ outb
+#define OUTW outw +#define OUTL outl +#define INB INB
^^^ inb
+#define INW inw +#define INL inl +#endif
#define FALSE 0 #define TRUE 1
Uwe.