commit
e0e56e3655
|
@ -1,3 +1,5 @@
|
|||
import os
|
||||
|
||||
from litex.gen import *
|
||||
|
||||
from litex.soc.interconnect.csr import CSRStatus
|
||||
|
@ -9,18 +11,30 @@ cpu_endianness = {
|
|||
}
|
||||
|
||||
def get_cpu_mak(cpu):
|
||||
clang = os.getenv("CLANG", "")
|
||||
if clang != "":
|
||||
clang = bool(int(clang))
|
||||
else:
|
||||
clang = None
|
||||
|
||||
if cpu == "lm32":
|
||||
assert not clang, "lm32 not supported with clang."
|
||||
triple = "lm32-elf"
|
||||
cpuflags = "-mbarrel-shift-enabled -mmultiply-enabled -mdivide-enabled -msign-extend-enabled"
|
||||
clang = ""
|
||||
elif cpu == "or1k":
|
||||
triple = "or1k-linux"
|
||||
cpuflags = "-mhard-mul -mhard-div -mror -mffl1 -maddc"
|
||||
clang = "1"
|
||||
# Default to CLANG unless told otherwise
|
||||
if clang is None:
|
||||
clang = True
|
||||
|
||||
triple = "or1k-elf"
|
||||
cpuflags = "-mhard-mul -mhard-div -mror"
|
||||
if clang:
|
||||
triple = "or1k-linux"
|
||||
cpuflags += "-mffl1 -maddc"
|
||||
elif cpu == "riscv32":
|
||||
assert not clang, "riscv32 not supported with clang."
|
||||
triple = "riscv32-unknown-elf"
|
||||
cpuflags = "-mno-save-restore"
|
||||
clang = ""
|
||||
else:
|
||||
raise ValueError("Unsupported CPU type: "+cpu)
|
||||
return [
|
||||
|
@ -28,7 +42,7 @@ def get_cpu_mak(cpu):
|
|||
("CPU", cpu),
|
||||
("CPUFLAGS", cpuflags),
|
||||
("CPUENDIANNESS", cpu_endianness[cpu]),
|
||||
("CLANG", clang)
|
||||
("CLANG", str(int(clang)))
|
||||
]
|
||||
|
||||
|
||||
|
|
|
@ -462,9 +462,15 @@ static int test_user_abort(void)
|
|||
|
||||
printf("Automatic boot in 2 seconds...\n");
|
||||
printf("Q/ESC: abort boot\n");
|
||||
printf("F7: boot from serial\n");
|
||||
#ifdef FLASH_BOOT_ADDRESS
|
||||
printf("F: boot from flash\n");
|
||||
#endif
|
||||
printf("S: boot from serial\n");
|
||||
#ifdef CSR_ETHMAC_BASE
|
||||
printf("F8: boot from network\n");
|
||||
printf("N: boot from network\n");
|
||||
#endif
|
||||
#ifdef ROM_BOOT_ADDRESS
|
||||
printf("R: boot from embedded ROM\n");
|
||||
#endif
|
||||
timer0_en_write(0);
|
||||
timer0_reload_write(0);
|
||||
|
@ -478,19 +484,31 @@ static int test_user_abort(void)
|
|||
while(timer0_value_read()) {
|
||||
if(readchar_nonblock()) {
|
||||
c = readchar();
|
||||
if((c == 'Q')||(c == '\e')) {
|
||||
if((c == 'Q')||(c == 'q')||(c == '\e')) {
|
||||
puts("Aborted");
|
||||
return 0;
|
||||
}
|
||||
if(c == 0x06) {
|
||||
#ifdef FLASH_BOOT_ADDRESS
|
||||
if((c == 'F')||(c == 'f')) {
|
||||
flashboot();
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
if((c == 'S')||(c == 's')) {
|
||||
serialboot();
|
||||
return 0;
|
||||
}
|
||||
#ifdef CSR_ETHMAC_BASE
|
||||
if(c == 0x07) {
|
||||
if((c == 'N')||(c == 'n')) {
|
||||
netboot();
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#ifdef ROM_BOOT_ADDRESS
|
||||
if((c == 'R')||(c == 'r')) {
|
||||
romboot();
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
timer0_update_value_write(1);
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
include ../include/generated/variables.mak
|
||||
include $(SOC_DIRECTORY)/software/common.mak
|
||||
|
||||
ifeq ($(CPU),big)
|
||||
ifeq ($(CPUENDIANNESS),big)
|
||||
CFLAGS+=-D_YUGA_LITTLE_ENDIAN=0 -D_YUGA_BIG_ENDIAN=1 -Wno-missing-prototypes
|
||||
else
|
||||
CFLAGS+=-D_YUGA_LITTLE_ENDIAN=1 -D_YUGA_BIG_ENDIAN=0 -Wno-missing-prototypes
|
||||
|
|
Loading…
Reference in New Issue