Index: hwaccess.c =================================================================== --- hwaccess.c (revision 1183) +++ hwaccess.c (working copy) @@ -22,9 +22,11 @@ #include #include #include -#if !defined (__DJGPP__) +#if !defined (__DJGPP__) && !defined(__LIBPAYLOAD__) #include #include +#endif +#if !defined (__DJGPP__) #include #endif #include "flash.h" @@ -44,7 +46,7 @@ void get_io_perms(void) { -#if defined(__DJGPP__) +#if defined(__DJGPP__) || defined(__LIBPAYLOAD__) /* We have full permissions by default. */ return; #else Index: hwaccess.h =================================================================== --- hwaccess.h (revision 1183) +++ hwaccess.h (working copy) @@ -292,7 +292,7 @@ #endif #endif -#if !defined(__DARWIN__) && !defined(__FreeBSD__) && !defined(__DragonFly__) +#if !defined(__DARWIN__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__LIBPAYLOAD__) typedef struct { uint32_t hi, lo; } msr_t; msr_t rdmsr(int addr); int wrmsr(int addr, msr_t msr); @@ -307,6 +307,16 @@ msr_t freebsd_rdmsr(int addr); int freebsd_wrmsr(int addr, msr_t msr); #endif +#if defined(__LIBPAYLOAD__) +#include +#include +typedef struct { uint32_t hi, lo; } msr_t; +msr_t libpayload_rdmsr(int addr); +int libpayload_wrmsr(int addr, msr_t msr); +#undef rdmsr +#define rdmsr libpayload_rdmsr +#define wrmsr libpayload_wrmsr +#endif #elif defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || defined(__ppc64__) Index: layout.c =================================================================== --- layout.c (revision 1183) +++ layout.c (working copy) @@ -134,6 +134,7 @@ } #endif +#ifndef __LIBPAYLOAD__ int read_romlayout(char *name) { FILE *romlayout; @@ -181,6 +182,7 @@ return 0; } +#endif int find_romentry(char *name) { Index: physmap.c =================================================================== --- physmap.c (revision 1183) +++ physmap.c (working copy) @@ -28,7 +28,7 @@ #include "flash.h" /* Do we need any file access or ioctl for physmap or MSR? */ -#if !defined(__DJGPP__) +#if !defined(__DJGPP__) && !defined(__LIBPAYLOAD__) #include #include #include @@ -104,6 +104,31 @@ __dpmi_free_physical_address_mapping(&mi); } +#elif defined(__LIBPAYLOAD__) +#include + +#define MEM_DEV "" + +void *sys_physmap(unsigned long phys_addr, size_t len) +{ + return (void*)phys_to_virt(phys_addr); +} + +#define sys_physmap_rw_uncached sys_physmap +#define sys_physmap_ro_cached sys_physmap + +void physunmap(void *virt_addr, size_t len) +{ +} + +int setup_cpu_msr(int cpu) +{ + return 0; +} + +void cleanup_cpu_msr(void) +{ +} #elif defined(__DARWIN__) #include @@ -453,6 +478,20 @@ { // Nothing, yet. } +#elif defined(__LIBPAYLOAD__) +msr_t libpayload_rdmsr(int addr) +{ + msr_t msr; + unsigned long long val = _rdmsr(addr); + msr.lo = val & 0xffffffff; + msr.hi = val >> 32; + return msr; +} + +int libpayload_wrmsr(int addr, msr_t msr) +{ + _wrmsr(addr, msr.lo | ((unsigned long long)msr.hi << 32)); +} #else msr_t rdmsr(int addr) { Index: flashrom.c =================================================================== --- flashrom.c (revision 1183) +++ flashrom.c (working copy) @@ -22,9 +22,11 @@ */ #include +#include +#ifndef __LIBPAYLOAD__ #include -#include #include +#endif #include #include #include Index: udelay.c =================================================================== --- udelay.c (revision 1183) +++ udelay.c (working copy) @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#ifndef __LIBPAYLOAD__ + #include #include #include @@ -179,3 +181,15 @@ } } +#else + +void myusec_calibrate_delay(void) +{ + get_cpu_speed(); +} + +void internal_delay(int usecs) +{ + udelay(usecs); +} +#endif