mirror of https://github.com/YosysHQ/picorv32.git
Turned gcc warnings up to eleven
Patch by Larry Doolittle
This commit is contained in:
parent
2df7aadc7a
commit
91f75bdf1f
14
Makefile
14
Makefile
|
@ -1,7 +1,9 @@
|
||||||
|
|
||||||
TEST_OBJS = $(addsuffix .o,$(basename $(wildcard tests/*.S)))
|
TEST_OBJS = $(addsuffix .o,$(basename $(wildcard tests/*.S)))
|
||||||
FIRMWARE_OBJS = firmware/start.o firmware/irq.o firmware/print.o firmware/sieve.o firmware/multest.o firmware/stats.o
|
FIRMWARE_OBJS = firmware/start.o firmware/irq.o firmware/print.o firmware/sieve.o firmware/multest.o firmware/stats.o
|
||||||
GCC_WARNS = -Wall -Wextra -Wshadow -Wundef
|
GCC_WARNS = -Wall -Wextra -Wshadow -Wundef -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings
|
||||||
|
GCC_WARNS += -Wredundant-decls -Wstrict-prototypes -Wmissing-prototypes -pedantic # -Wconversion
|
||||||
|
TOOLCHAIN_PREFIX = riscv64-unknown-elf-
|
||||||
|
|
||||||
test: testbench.exe firmware/firmware.hex
|
test: testbench.exe firmware/firmware.hex
|
||||||
vvp -N testbench.exe
|
vvp -N testbench.exe
|
||||||
|
@ -44,23 +46,23 @@ firmware/firmware.hex: firmware/firmware.bin firmware/makehex.py
|
||||||
python3 firmware/makehex.py $< > $@
|
python3 firmware/makehex.py $< > $@
|
||||||
|
|
||||||
firmware/firmware.bin: firmware/firmware.elf
|
firmware/firmware.bin: firmware/firmware.elf
|
||||||
riscv64-unknown-elf-objcopy -O binary $< $@
|
$(TOOLCHAIN_PREFIX)objcopy -O binary $< $@
|
||||||
chmod -x $@
|
chmod -x $@
|
||||||
|
|
||||||
firmware/firmware.elf: $(FIRMWARE_OBJS) $(TEST_OBJS) firmware/sections.lds
|
firmware/firmware.elf: $(FIRMWARE_OBJS) $(TEST_OBJS) firmware/sections.lds
|
||||||
riscv64-unknown-elf-gcc -Os -m32 -ffreestanding -nostdlib -o $@ \
|
$(TOOLCHAIN_PREFIX)gcc -Os -m32 -ffreestanding -nostdlib -o $@ \
|
||||||
-Wl,-Bstatic,-T,firmware/sections.lds,-Map,firmware/firmware.map,--strip-debug \
|
-Wl,-Bstatic,-T,firmware/sections.lds,-Map,firmware/firmware.map,--strip-debug \
|
||||||
$(FIRMWARE_OBJS) $(TEST_OBJS) -lgcc
|
$(FIRMWARE_OBJS) $(TEST_OBJS) -lgcc
|
||||||
chmod -x $@
|
chmod -x $@
|
||||||
|
|
||||||
firmware/start.o: firmware/start.S
|
firmware/start.o: firmware/start.S
|
||||||
riscv64-unknown-elf-gcc -c -m32 -o $@ $<
|
$(TOOLCHAIN_PREFIX)gcc -c -m32 -o $@ $<
|
||||||
|
|
||||||
firmware/%.o: firmware/%.c
|
firmware/%.o: firmware/%.c
|
||||||
riscv64-unknown-elf-gcc -c -m32 -march=RV32I -Os $(GCC_WARNS) -ffreestanding -nostdlib -o $@ $<
|
$(TOOLCHAIN_PREFIX)gcc -c -m32 -march=RV32I -Os --std=c99 $(GCC_WARNS) -ffreestanding -nostdlib -o $@ $<
|
||||||
|
|
||||||
tests/%.o: tests/%.S tests/riscv_test.h tests/test_macros.h
|
tests/%.o: tests/%.S tests/riscv_test.h tests/test_macros.h
|
||||||
riscv64-unknown-elf-gcc -c -m32 -o $@ -DTEST_FUNC_NAME=$(notdir $(basename $<)) \
|
$(TOOLCHAIN_PREFIX)gcc -c -m32 -o $@ -DTEST_FUNC_NAME=$(notdir $(basename $<)) \
|
||||||
-DTEST_FUNC_TXT='"$(notdir $(basename $<))"' -DTEST_FUNC_RET=$(notdir $(basename $<))_ret $<
|
-DTEST_FUNC_TXT='"$(notdir $(basename $<))"' -DTEST_FUNC_RET=$(notdir $(basename $<))_ret $<
|
||||||
|
|
||||||
toc:
|
toc:
|
||||||
|
|
|
@ -21,16 +21,16 @@ void print_dec(unsigned int val);
|
||||||
void print_hex(unsigned int val);
|
void print_hex(unsigned int val);
|
||||||
|
|
||||||
// sieve.c
|
// sieve.c
|
||||||
void sieve();
|
void sieve(void);
|
||||||
|
|
||||||
// multest.c
|
// multest.c
|
||||||
uint32_t hard_mul(uint32_t a, uint32_t b);
|
uint32_t hard_mul(uint32_t a, uint32_t b);
|
||||||
uint32_t hard_mulh(uint32_t a, uint32_t b);
|
uint32_t hard_mulh(uint32_t a, uint32_t b);
|
||||||
uint32_t hard_mulhsu(uint32_t a, uint32_t b);
|
uint32_t hard_mulhsu(uint32_t a, uint32_t b);
|
||||||
uint32_t hard_mulhu(uint32_t a, uint32_t b);
|
uint32_t hard_mulhu(uint32_t a, uint32_t b);
|
||||||
void multest();
|
void multest(void);
|
||||||
|
|
||||||
// stats.c
|
// stats.c
|
||||||
void stats();
|
void stats(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -109,7 +109,7 @@ uint32_t *irq(uint32_t *regs, uint32_t irqs)
|
||||||
print_dec(timer_irq_count);
|
print_dec(timer_irq_count);
|
||||||
print_str("\n");
|
print_str("\n");
|
||||||
|
|
||||||
__asm__("sbreak");
|
__asm__ volatile ("sbreak");
|
||||||
}
|
}
|
||||||
|
|
||||||
return regs;
|
return regs;
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
|
|
||||||
#include "firmware.h"
|
#include "firmware.h"
|
||||||
|
|
||||||
uint32_t xorshift32() {
|
static uint32_t xorshift32(void) {
|
||||||
static uint32_t x = 314159265;
|
static uint32_t x = 314159265;
|
||||||
x ^= x << 13;
|
x ^= x << 13;
|
||||||
x ^= x >> 17;
|
x ^= x >> 17;
|
||||||
|
@ -15,7 +15,7 @@ uint32_t xorshift32() {
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
void multest()
|
void multest(void)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
for (i = 0; i < 10; i++)
|
for (i = 0; i < 10; i++)
|
||||||
|
@ -76,7 +76,7 @@ void multest()
|
||||||
|
|
||||||
if (s_mul != h_mul || s_mulh != h_mulh || s_mulhsu != h_mulhsu || s_mulhu != h_mulhu) {
|
if (s_mul != h_mul || s_mulh != h_mulh || s_mulhsu != h_mulhsu || s_mulhu != h_mulhu) {
|
||||||
print_str("ERROR!\n");
|
print_str("ERROR!\n");
|
||||||
asm volatile ("sbreak");
|
__asm__ volatile ("sbreak");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ static void print_prime(int idx, int val)
|
||||||
hash = mkhash(hash, val);
|
hash = mkhash(hash, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sieve()
|
void sieve(void)
|
||||||
{
|
{
|
||||||
int i, j, k;
|
int i, j, k;
|
||||||
int idx = 1;
|
int idx = 1;
|
||||||
|
@ -79,7 +79,7 @@ void sieve()
|
||||||
print_str(" OK\n");
|
print_str(" OK\n");
|
||||||
} else {
|
} else {
|
||||||
print_str(" ERROR\n");
|
print_str(" ERROR\n");
|
||||||
asm volatile ("sbreak");
|
__asm__ volatile ("sbreak");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -25,10 +25,10 @@ static void stats_print_dec(unsigned int val, int digits, bool zero_pad)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void stats()
|
void stats(void)
|
||||||
{
|
{
|
||||||
unsigned int num_cycles, num_instr;
|
unsigned int num_cycles, num_instr;
|
||||||
asm("rdcycle %0; rdinstret %1;" : "=r"(num_cycles), "=r"(num_instr));
|
__asm__("rdcycle %0; rdinstret %1;" : "=r"(num_cycles), "=r"(num_instr));
|
||||||
print_str("Cycle counter ........");
|
print_str("Cycle counter ........");
|
||||||
stats_print_dec(num_cycles, 8, false);
|
stats_print_dec(num_cycles, 8, false);
|
||||||
print_str("\nInstruction counter ..");
|
print_str("\nInstruction counter ..");
|
||||||
|
|
Loading…
Reference in New Issue