southlake: add -DNOPRINT macro to disable printf / uart

This commit is contained in:
William Wang 2022-05-01 12:48:54 +08:00
parent 194056f882
commit 766ac82103
4 changed files with 25 additions and 9 deletions

View File

@ -15,7 +15,7 @@ AM_SRCS := noop/isa/riscv/trm_flash.c \
dummy/mpe.c \
nemu/isa/riscv/boot/start_flash.S
CFLAGS += -I$(AM_HOME)/am/src/nemu/include -DISA_H=\"riscv.h\"
CFLAGS += -I$(AM_HOME)/am/src/nemu/include -DISA_H=\"riscv.h\" -DNOPRINT
ASFLAGS += -DMAINARGS=\"$(mainargs)\"
.PHONY: $(AM_HOME)/am/src/nemu/common/mainargs.S

View File

@ -18,7 +18,7 @@ AM_SRCS := noop/isa/riscv/trm.c \
dummy/mpe.c \
nemu/isa/riscv/boot/start.S
CFLAGS += -I$(AM_HOME)/am/src/nemu/include -DISA_H=\"riscv.h\"
CFLAGS += -I$(AM_HOME)/am/src/nemu/include -DISA_H=\"riscv.h\" -DNOPRINT
ASFLAGS += -DMAINARGS=\"$(mainargs)\"
.PHONY: $(AM_HOME)/am/src/nemu/common/mainargs.S

View File

@ -1,6 +1,7 @@
// uart IO is disabled to speed up SoC test
#include <riscv.h>
#include <klib.h>
#define UARTLITE_MMIO 0x1f40600000
#define UARTLITE_RX_FIFO 0x0
@ -13,18 +14,27 @@
#define UARTLITE_RX_VALID 0x01
void __am_init_uartlite(void) {
// outb(UARTLITE_MMIO + UARTLITE_CTRL_REG, UARTLITE_RST_FIFO);
#ifndef NOPRINT
outb(UARTLITE_MMIO + UARTLITE_CTRL_REG, UARTLITE_RST_FIFO);
#endif
}
void __am_uartlite_putchar(char ch) {
// if (ch == '\n') __am_uartlite_putchar('\r');
#ifndef NOPRINT
if (ch == '\n') __am_uartlite_putchar('\r');
// while (inb(UARTLITE_MMIO + UARTLITE_STAT_REG) & UARTLITE_TX_FULL);
// outb(UARTLITE_MMIO + UARTLITE_TX_FIFO, ch);
while (inb(UARTLITE_MMIO + UARTLITE_STAT_REG) & UARTLITE_TX_FULL);
outb(UARTLITE_MMIO + UARTLITE_TX_FIFO, ch);
#else
assert(0);
#endif
}
int __am_uartlite_getchar() {
// if (inb(UARTLITE_MMIO + UARTLITE_STAT_REG) & UARTLITE_RX_VALID)
// return inb(UARTLITE_MMIO + UARTLITE_RX_FIFO);
#ifndef NOPRINT
if (inb(UARTLITE_MMIO + UARTLITE_STAT_REG) & UARTLITE_RX_VALID)
return inb(UARTLITE_MMIO + UARTLITE_RX_FIFO);
return 0;
#endif
return 0;
}

View File

@ -858,7 +858,7 @@ static int _vsnprintf(out_fct_type out, char* buffer, const size_t maxlen, const
///////////////////////////////////////////////////////////////////////////////
#ifndef NOPRINT
int printf_(const char* format, ...)
{
va_list va;
@ -868,6 +868,12 @@ int printf_(const char* format, ...)
va_end(va);
return ret;
}
#else
int printf_(const char* format, ...)
{
return 0;
}
#endif
int sprintf_(char* buffer, const char* format, ...)