summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile3
-rw-r--r--src/Kconfig4
-rw-r--r--src/arch/i386/boot/coreboot_table.c4
-rw-r--r--src/arch/i386/include/arch/smp/spinlock.h1
-rw-r--r--src/console/printk.c2
-rw-r--r--src/console/vsprintf.c2
-rw-r--r--src/cpu/emulation/qemu-x86/northbridge.c5
-rw-r--r--src/devices/device.c4
-rw-r--r--src/include/smp/spinlock.h10
-rw-r--r--src/lib/cbmem.c5
-rw-r--r--src/mainboard/emulation/qemu-x86/Kconfig1
-rw-r--r--util/x86emu/x86.c2
12 files changed, 24 insertions, 19 deletions
diff --git a/Makefile b/Makefile
index e683f3949d..5dd79603c1 100644
--- a/Makefile
+++ b/Makefile
@@ -247,6 +247,9 @@ CFLAGS = $(STACKPROTECT) $(INCLUDES) -Os -nostdinc
CFLAGS += -nostdlib -Wall -Wundef -Wstrict-prototypes -Wmissing-prototypes
CFLAGS += -Wwrite-strings -Wredundant-decls -Wno-trigraphs
CFLAGS += -Wstrict-aliasing -Wshadow
+ifeq ($(CONFIG_WARNINGS_ARE_ERRORS),y)
+CFLAGS += -Werror
+endif
CFLAGS += -fno-common -ffreestanding -fno-builtin -fomit-frame-pointer
CBFS_COMPRESS_FLAG:=l
diff --git a/src/Kconfig b/src/Kconfig
index cc61ba6225..c2a56e1dbf 100644
--- a/src/Kconfig
+++ b/src/Kconfig
@@ -463,3 +463,7 @@ config USE_INIT
config ENABLE_APIC_EXT_ID
bool
default n
+
+config WARNINGS_ARE_ERRORS
+ bool
+ default n
diff --git a/src/arch/i386/boot/coreboot_table.c b/src/arch/i386/boot/coreboot_table.c
index 49fef60cdd..00c34b2ee8 100644
--- a/src/arch/i386/boot/coreboot_table.c
+++ b/src/arch/i386/boot/coreboot_table.c
@@ -65,11 +65,13 @@ static struct lb_record *lb_last_record(struct lb_header *header)
return rec;
}
+#if 0
static struct lb_record *lb_next_record(struct lb_record *rec)
{
rec = (void *)(((char *)rec) + rec->size);
return rec;
}
+#endif
static struct lb_record *lb_new_record(struct lb_header *header)
{
@@ -218,6 +220,7 @@ static void lb_strings(struct lb_header *header)
}
+#if CONFIG_WRITE_HIGH_TABLES == 1
static struct lb_forward *lb_forward(struct lb_header *header, struct lb_header *next_header)
{
struct lb_record *rec;
@@ -229,6 +232,7 @@ static struct lb_forward *lb_forward(struct lb_header *header, struct lb_header
forward->forward = (uint64_t)(unsigned long)next_header;
return forward;
}
+#endif
void lb_memory_range(struct lb_memory *mem,
uint32_t type, uint64_t start, uint64_t size)
diff --git a/src/arch/i386/include/arch/smp/spinlock.h b/src/arch/i386/include/arch/smp/spinlock.h
index 71015452e8..5c1dd94c36 100644
--- a/src/arch/i386/include/arch/smp/spinlock.h
+++ b/src/arch/i386/include/arch/smp/spinlock.h
@@ -11,6 +11,7 @@ typedef struct {
#define SPIN_LOCK_UNLOCKED (spinlock_t) { 1 }
+#define DECLARE_SPIN_LOCK(x) static spinlock_t x = SPIN_LOCK_UNLOCKED;
/*
* Simple spin lock operations. There are two variants, one clears IRQ's
diff --git a/src/console/printk.c b/src/console/printk.c
index 3b1ae24ec1..e06468236c 100644
--- a/src/console/printk.c
+++ b/src/console/printk.c
@@ -23,7 +23,7 @@ int default_message_loglevel = DEFAULT_MESSAGE_LOGLEVEL;
int minimum_console_loglevel = MINIMUM_CONSOLE_LOGLEVEL;
int default_console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
-static spinlock_t console_lock = SPIN_LOCK_UNLOCKED;
+DECLARE_SPIN_LOCK(console_lock)
int do_printk(int msg_level, const char *fmt, ...)
{
diff --git a/src/console/vsprintf.c b/src/console/vsprintf.c
index c4c91115c2..090063cf62 100644
--- a/src/console/vsprintf.c
+++ b/src/console/vsprintf.c
@@ -24,7 +24,7 @@
#include <smp/spinlock.h>
#include <console/vtxprintf.h>
-static spinlock_t vsprintf_lock = SPIN_LOCK_UNLOCKED;
+DECLARE_SPIN_LOCK(vsprintf_lock)
static char *str_buf;
diff --git a/src/cpu/emulation/qemu-x86/northbridge.c b/src/cpu/emulation/qemu-x86/northbridge.c
index 7c3c18095c..44fb1ce598 100644
--- a/src/cpu/emulation/qemu-x86/northbridge.c
+++ b/src/cpu/emulation/qemu-x86/northbridge.c
@@ -8,6 +8,7 @@
#include <bitops.h>
#include "chip.h"
#include "northbridge.h"
+#include <delay.h>
static void ram_resource(device_t dev, unsigned long index,
unsigned long basek, unsigned long sizek)
@@ -157,9 +158,9 @@ struct chip_operations cpu_emulation_qemu_x86_ops = {
.enable_dev = enable_dev,
};
-void udelay(int usecs)
+void udelay(unsigned usecs)
{
- int i;
+ unsigned i;
for(i = 0; i < usecs; i++)
inb(0x80);
}
diff --git a/src/devices/device.c b/src/devices/device.c
index 9ce58c52c9..c337294c1f 100644
--- a/src/devices/device.c
+++ b/src/devices/device.c
@@ -58,7 +58,9 @@ extern struct device **last_dev_p;
*
* @see device_path
*/
-static spinlock_t dev_lock = SPIN_LOCK_UNLOCKED;
+
+DECLARE_SPIN_LOCK(dev_lock)
+
device_t alloc_dev(struct bus *parent, struct device_path *path)
{
device_t dev, child;
diff --git a/src/include/smp/spinlock.h b/src/include/smp/spinlock.h
index aedd85b0ab..1b0b4fdde9 100644
--- a/src/include/smp/spinlock.h
+++ b/src/include/smp/spinlock.h
@@ -5,15 +5,7 @@
#include <arch/smp/spinlock.h>
#else /* !CONFIG_SMP */
-/* Most GCC versions have a nasty bug with empty initializers */
-#if (__GNUC__ > 2)
-typedef struct { } spinlock_t;
-#define SPIN_LOCK_UNLOCKED (spinlock_t) { }
-#else
-typedef struct { int gcc_is_buggy; } spinlock_t;
-#define SPIN_LOCK_UNLOCKED (spinlock_t) { 0 }
-#endif
-
+#define DECLARE_SPIN_LOCK(x)
#define barrier() do {} while(0)
#define spin_is_locked(lock) 0
#define spin_unlock_wait(lock) do {} while(0)
diff --git a/src/lib/cbmem.c b/src/lib/cbmem.c
index 023ddeaeb2..db761958a9 100644
--- a/src/lib/cbmem.c
+++ b/src/lib/cbmem.c
@@ -35,9 +35,6 @@
#define MAX_CBMEM_ENTRIES 16
#define CBMEM_MAGIC 0x434f5245
-static void *cbmem_base;
-static int cbmem_size;
-
struct cbmem_entry {
u32 magic;
u32 id;
@@ -151,7 +148,7 @@ void *cbmem_add(u32 id, u64 size)
cbmem_toc[0].base += size;
cbmem_toc[0].size -= size;
- return (void *)cbmem_toc[i].base;
+ return (void *)(u32)cbmem_toc[i].base;
}
void *cbmem_find(u32 id)
diff --git a/src/mainboard/emulation/qemu-x86/Kconfig b/src/mainboard/emulation/qemu-x86/Kconfig
index e319d98d2f..38d460df76 100644
--- a/src/mainboard/emulation/qemu-x86/Kconfig
+++ b/src/mainboard/emulation/qemu-x86/Kconfig
@@ -5,6 +5,7 @@ config BOARD_EMULATION_QEMU_X86
select CPU_EMULATION_QEMU_X86
select HAVE_PIRQ_TABLE
select BOARD_ROMSIZE_KB_256
+ select WARNINGS_ARE_ERRORS
config MAINBOARD_DIR
string
diff --git a/util/x86emu/x86.c b/util/x86emu/x86.c
index 2f314a043f..4ceb4b2e07 100644
--- a/util/x86emu/x86.c
+++ b/util/x86emu/x86.c
@@ -126,7 +126,7 @@ static void setup_realmode_idt(void)
void run_bios(struct device *dev, unsigned long addr)
{
/* clear vga bios data area */
- memset(0x400, 0, 0x200);
+ memset((void *)0x400, 0, 0x200);
/* Set up C interrupt handlers */
setup_interrupt_handlers();