From 0a50d9b35334d03f13b38e21497ba0aae8b16712 Mon Sep 17 00:00:00 2001 From: Aaron Durbin Date: Tue, 12 May 2015 16:46:27 -0500 Subject: libpayload: x86: correct types used for IO libpayload on x86 defines u32 and uint32_t as typedefs of unsigned int. However, the readl/writel routines use long. With alias checking this throws type punning errors. Align the readl/writel/inl/outl types with the 32-bit fixed width ones that are exposed. Change-Id: Ie51cff8af4596948f6132e3cb743f1bc4ea8f204 Signed-off-by: Aaron Durbin Reviewed-on: http://review.coreboot.org/10186 Tested-by: build bot (Jenkins) Reviewed-by: Stefan Reinauer Reviewed-by: Paul Menzel --- payloads/libpayload/include/x86/arch/io.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'payloads/libpayload/include/x86') diff --git a/payloads/libpayload/include/x86/arch/io.h b/payloads/libpayload/include/x86/arch/io.h index 0cb610fcc3..cd48d7c35b 100644 --- a/payloads/libpayload/include/x86/arch/io.h +++ b/payloads/libpayload/include/x86/arch/io.h @@ -33,13 +33,13 @@ #define readb(_a) (*(volatile const unsigned char *) (_a)) #define readw(_a) (*(volatile const unsigned short *) (_a)) -#define readl(_a) (*(volatile const unsigned long *) (_a)) +#define readl(_a) (*(volatile const unsigned int *) (_a)) #define writeb(_v, _a) (*(volatile unsigned char *) (_a) = (_v)) #define writew(_v, _a) (*(volatile unsigned short *) (_a) = (_v)) -#define writel(_v, _a) (*(volatile unsigned long *) (_a) = (_v)) +#define writel(_v, _a) (*(volatile unsigned int *) (_a) = (_v)) -static inline unsigned long inl(int port) +static inline unsigned int inl(int port) { unsigned long val; __asm__ __volatile__("inl %w1, %0" : "=a"(val) : "Nd"(port)); @@ -60,7 +60,7 @@ static inline unsigned char inb(int port) return val; } -static inline void outl(unsigned long val, int port) +static inline void outl(unsigned int val, int port) { __asm__ __volatile__("outl %0, %w1" : : "a"(val), "Nd"(port)); } -- cgit v1.2.3