On Wed, May 26, 2010 at 12:34:49AM +0200, Carl-Daniel Hailfinger wrote: > Handle the following architectures in generic flashrom code: > - x86/x86_64 (little endian) > - PowerPC (big endian) > - MIPS (big+little endian)
Build-tested on x86 and x86_64. Runtime-tested on a random FWH-board/-chip (PREW) on Linux x86_64, still works fine. > Signed-off-by: Carl-Daniel Hailfinger <[email protected]> > Acked-by: Vladimir 'phcoder/φ-coder' Serbinenko <[email protected]> Acked-by: Uwe Hermann <[email protected]> > Index: flashrom-arch_abstraction/hwaccess.c > =================================================================== > --- flashrom-arch_abstraction/hwaccess.c (Revision 1008) > +++ flashrom-arch_abstraction/hwaccess.c (Arbeitskopie) [...] > +#elif defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || > defined(__ppc64__) > + > +static inline void sync_primitive(void) > +{ > + asm("eieio" : : : "memory"); This asm could use a nice long comment about what it does exactly and why it's needed etc. > +#if !defined (__FLASHROM_BIG_ENDIAN__) && !defined > (__FLASHROM_LITTLE_ENDIAN__) > +#error Unable to determine endianness. Please add support for your arch or > libc. > +#endif > + > +#define ___constant_swab8(x) ((uint8_t)( \ ^ space here, please > + (((uint8_t)(x) & (uint8_t)0xffU)))) > + > +#define ___constant_swab16(x) ((uint16_t)( \ ^ > + (((uint16_t)(x) & (uint16_t)0x00ffU) << 8) | \ > + (((uint16_t)(x) & (uint16_t)0xff00U) >> 8))) > + > +#define ___constant_swab32(x) ((uint32_t)( \ ^ > + (((uint32_t)(x) & (uint32_t)0x000000ffUL) << 24) | \ > + (((uint32_t)(x) & (uint32_t)0x0000ff00UL) << 8) | \ > + (((uint32_t)(x) & (uint32_t)0x00ff0000UL) >> 8) | \ > + (((uint32_t)(x) & (uint32_t)0xff000000UL) >> 24))) > + > +#define ___constant_swab64(x) ((uint64_t)( \ ^ Ditto for these other 3 places. > +#elif defined(__powerpc__) || defined(__powerpc64__) || defined(__ppc__) || > defined(__ppc64__) > + > +/* PCI port I/O is not yet implemented on PowerPC. */ > + > +#elif defined (__mips) || defined (__mips__) || defined (_mips) || defined > (mips) > + > +/* PCI port I/O is not yet implemented on MIPS. */ > + > +#else > + > +#error Unknown architecture, please check if it supports PCI port IO. ^^ "IO" -> "I/O" for consistency. > Index: flashrom-arch_abstraction/nic3com.c > =================================================================== > --- flashrom-arch_abstraction/nic3com.c (Revision 1008) > +++ flashrom-arch_abstraction/nic3com.c (Arbeitskopie) > @@ -23,6 +23,8 @@ > #include <sys/types.h> > #include "flash.h" > > +#if defined(__i386__) || defined(__x86_64__) > + > #define BIOS_ROM_ADDR 0x04 > #define BIOS_ROM_DATA 0x08 > #define INT_STATUS 0x0e > @@ -112,3 +114,7 @@ > OUTL((uint32_t)addr, io_base_addr + BIOS_ROM_ADDR); > return INB(io_base_addr + BIOS_ROM_DATA); > } > + > +#else > +#error Unsupported architecture for nic3com. You need a way to emulate port > IO access. "IO" -> "I/O" for consistency. Also, wouldn't the nicrealtek code need the same #ifdefs and #error? Uwe. -- http://hermann-uwe.de | http://sigrok.org http://randomprojects.org | http://unmaintained-free-software.org _______________________________________________ flashrom mailing list [email protected] http://www.flashrom.org/mailman/listinfo/flashrom
