From: Idwer Vollering Date: Sun, 24 Oct 2010 13:50:13 +0000 (+0000) Subject: Add inteltool support for FreeBSD. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=3f91d813efe80045e322f7c6a767b403911b8a1c;hp=a4d77dc74d6500e651a6d4e477f9d499915cac7f;p=coreboot.git Add inteltool support for FreeBSD. Signed-off-by: Idwer Vollering Acked-by Stefan Reinauer Acked-by: Uwe Hermann git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5981 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 --- diff --git a/util/inteltool/Makefile b/util/inteltool/Makefile index 3850682e5..c6894c0af 100644 --- a/util/inteltool/Makefile +++ b/util/inteltool/Makefile @@ -33,6 +33,11 @@ OS_ARCH = $(shell uname) ifeq ($(OS_ARCH), Darwin) LDFLAGS = -framework DirectIO -lpci -lz endif +ifeq ($(OS_ARCH), FreeBSD) +CFLAGS += -I/usr/local/include +LDFLAGS += -L/usr/local/lib +LIBS = -lz +endif all: pciutils dep $(PROGRAM) diff --git a/util/inteltool/inteltool.c b/util/inteltool/inteltool.c index c6a835fd7..bf5efc992 100644 --- a/util/inteltool/inteltool.c +++ b/util/inteltool/inteltool.c @@ -3,6 +3,7 @@ * * Copyright (C) 2008-2010 by coresystems GmbH * written by Stefan Reinauer + * Copyright (C) 2009 Carl-Daniel Hailfinger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -24,6 +25,9 @@ #include #include #include "inteltool.h" +#if defined(__FreeBSD__) +#include +#endif static const struct { uint16_t vendor_id, device_id; @@ -213,7 +217,17 @@ int main(int argc, char *argv[]) } } +#if defined(__FreeBSD__) + int io_fd; +#endif + +#if defined(__FreeBSD__) + if ((io_fd = open("/dev/io", O_RDWR)) < 0) { + perror("/dev/io"); +#else if (iopl(3)) { + perror("iopl"); +#endif printf("You need to be root.\n"); exit(1); } diff --git a/util/inteltool/inteltool.h b/util/inteltool/inteltool.h index 8eb708950..bc18a69c6 100644 --- a/util/inteltool/inteltool.h +++ b/util/inteltool/inteltool.h @@ -2,6 +2,7 @@ * inteltool - dump all registers on an Intel CPU + chipset based system. * * Copyright (C) 2008-2010 by coresystems GmbH + * Copyright (C) 2009 Carl-Daniel Hailfinger * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -29,6 +30,11 @@ #endif #include +/* This #include is needed for freebsd_{rd,wr}msr. */ +#if defined(__FreeBSD__) +#include +#endif + #define INTELTOOL_VERSION "1.0" /* Tested chipsets: */ @@ -88,9 +94,19 @@ #define ARRAY_SIZE(a) ((int)(sizeof(a) / sizeof((a)[0]))) -#ifndef __DARWIN__ +#if !defined(__DARWIN__) && !defined(__FreeBSD__) typedef struct { uint32_t hi, lo; } msr_t; #endif +#if defined (__FreeBSD__) +/* FreeBSD already has conflicting definitions for wrmsr/rdmsr. */ +#undef rdmsr +#undef wrmsr +#define rdmsr freebsd_rdmsr +#define wrmsr freebsd_wrmsr +typedef struct { uint32_t hi, lo; } msr_t; +msr_t freebsd_rdmsr(int addr); +int freebsd_wrmsr(int addr, msr_t msr); +#endif typedef struct { uint16_t addr; int size; char *name; } io_register_t; void *map_physical(unsigned long phys_addr, size_t len); @@ -105,4 +121,3 @@ int print_gpios(struct pci_dev *sb); int print_epbar(struct pci_dev *nb); int print_dmibar(struct pci_dev *nb); int print_pciexbar(struct pci_dev *nb); -