mirror of
https://git.planet-casio.com/Lephenixnoir/gint.git
synced 2025-01-01 06:23:35 +01:00
bootlog: make a copy for use in gintctl
This commit is contained in:
parent
e48386d2a4
commit
05f2e01b50
6 changed files with 30 additions and 10 deletions
|
@ -20,6 +20,9 @@ void *memset(void *dest, int byte, size_t n);
|
||||||
/* strlen() - length of a NUL-terminated string */
|
/* strlen() - length of a NUL-terminated string */
|
||||||
size_t strlen(const char *str);
|
size_t strlen(const char *str);
|
||||||
|
|
||||||
|
/* strncpy() - copy a string with a size limit*/
|
||||||
|
char *strncpy(char *dst, const char *src, size_t n);
|
||||||
|
|
||||||
/* vsprintf() - an almost-empty subset of the real one */
|
/* vsprintf() - an almost-empty subset of the real one */
|
||||||
void vsprintf(char *str, const char *format, va_list args);
|
void vsprintf(char *str, const char *format, va_list args);
|
||||||
|
|
||||||
|
|
|
@ -12,16 +12,16 @@
|
||||||
// Driver procedure flow
|
// Driver procedure flow
|
||||||
//
|
//
|
||||||
// Drivers are initialized in priority order, and in linking order within
|
// Drivers are initialized in priority order, and in linking order within
|
||||||
// the same priority (which is pretty much undefined). Make sure every
|
// the same priority level (pretty much undefined). Make sure every
|
||||||
// driver's priority level is higher than those of its dependencies.
|
// driver's priority level is higher than those of its dependencies.
|
||||||
//
|
//
|
||||||
// At initialization, the following functions are called:
|
// At initialization, the following functions are called:
|
||||||
// 1. driver_sh3() [if not NULL, SH3 fx9860G only]
|
// 1. driver_sh3() [if not NULL, SH3 fx9860g only]
|
||||||
// 2. ctx_save(sys_ctx) [if not NULL]
|
// 2. ctx_save(sys_ctx) [if not NULL]
|
||||||
// 3. init() [if not NULL]
|
// 3. init() [if not NULL]
|
||||||
//
|
//
|
||||||
// Then, if the on-screen boot log is enabled, the status() function is
|
// Then, if the on-screen boot log is enabled, the status() function is
|
||||||
// called and the returned function is displayed (21 characters max).
|
// called and the returned string is displayed (21 characters max).
|
||||||
// 4. status() [if not NULL, if GINT_BOOT_LOG is defined]
|
// 4. status() [if not NULL, if GINT_BOOT_LOG is defined]
|
||||||
//
|
//
|
||||||
// If the gint_switch() function is called to temporarily give back
|
// If the gint_switch() function is called to temporarily give back
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
/* GINT_VERSION - the library version number
|
/* GINT_VERSION - the library version number
|
||||||
|
|
||||||
gint is versioned from it's repository commits on the master branch. The
|
gint is versioned from its repository commits on the master branch. The
|
||||||
GINT_VERSION integer contains the short commit hash.
|
GINT_VERSION integer contains the short commit hash.
|
||||||
|
|
||||||
For instance, 0x03f7c0a0 means commit 3f7c0a0. */
|
For instance, 0x03f7c0a0 means commit 3f7c0a0. */
|
||||||
|
|
|
@ -14,14 +14,19 @@
|
||||||
#include <core/syscalls.h>
|
#include <core/syscalls.h>
|
||||||
#include <gint/clock.h>
|
#include <gint/clock.h>
|
||||||
|
|
||||||
|
#ifdef GINT_BOOT_LOG
|
||||||
|
|
||||||
#ifdef FXCG50
|
#ifdef FXCG50
|
||||||
void Bdisp_AllClr_VRAM(void);
|
void Bdisp_AllClr_VRAM(void);
|
||||||
void Bdisp_PutDisp_DD(void);
|
void Bdisp_PutDisp_DD(void);
|
||||||
|
void PrintXY(int x, int y, const char *str, int fg, int bg);
|
||||||
#define dclear(c) Bdisp_AllClr_VRAM()
|
#define dclear(c) Bdisp_AllClr_VRAM()
|
||||||
#define dupdate() Bdisp_PutDisp_DD()
|
#define dupdate() Bdisp_PutDisp_DD()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* A copy of the bootlog */
|
||||||
|
GDATA char gint_bootlog[22*9] = { 0 };
|
||||||
|
|
||||||
/* Linker script symbols - see core/start.c for details */
|
/* Linker script symbols - see core/start.c for details */
|
||||||
extern char
|
extern char
|
||||||
brom, srom,
|
brom, srom,
|
||||||
|
@ -38,13 +43,15 @@ static void print(int x, int y, const char *format, ...)
|
||||||
vsprintf(str + 2, format, args);
|
vsprintf(str + 2, format, args);
|
||||||
|
|
||||||
#ifdef FX9860G
|
#ifdef FX9860G
|
||||||
dtext(6 * (x - 1) + 1, 7 * (y - 1), str + 2, color_black, color_white);
|
dtext(6 * (x-1) + 1, 7 * (y-1), str + 2, color_black, color_white);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef FXCG50
|
#ifdef FXCG50
|
||||||
PrintXY(x, y, str, 0, 0);
|
PrintXY(x, y, str, 0, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
strncpy(gint_bootlog + 22 * (y-1) + (x-1), str + 2, 21 - (x-1));
|
||||||
|
|
||||||
va_end(args);
|
va_end(args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -90,7 +97,7 @@ void bootlog_loaded(void)
|
||||||
|
|
||||||
/* bootlog_mapped() - ROM mapping stage */
|
/* bootlog_mapped() - ROM mapping stage */
|
||||||
GSECTION(".pretext")
|
GSECTION(".pretext")
|
||||||
void bootlog_mapped(int rom, int ram)
|
void bootlog_mapped(int rom, GUNUSED int ram)
|
||||||
{
|
{
|
||||||
/* Check whether all ROM is mapped */
|
/* Check whether all ROM is mapped */
|
||||||
uint32_t rom_size = (uint32_t)&srom;
|
uint32_t rom_size = (uint32_t)&srom;
|
||||||
|
@ -186,3 +193,5 @@ void bootlog_driver_summary(void)
|
||||||
|
|
||||||
dupdate();
|
dupdate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endif /* GINT_BOOT_LOG */
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
#include <gint/mpu/dma.h>
|
#include <gint/mpu/dma.h>
|
||||||
#include <gint/mpu/power.h>
|
#include <gint/mpu/power.h>
|
||||||
#include <gint/mpu/intc.h>
|
#include <gint/mpu/intc.h>
|
||||||
|
#include <gint/gint.h>
|
||||||
#include <gint/dma.h>
|
#include <gint/dma.h>
|
||||||
#include <gint/drivers.h>
|
#include <gint/drivers.h>
|
||||||
#include <gint/clock.h>
|
#include <gint/clock.h>
|
||||||
|
|
|
@ -13,13 +13,20 @@ GWEAK size_t strlen(const char *str)
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GWEAK char *strncpy(char *dst, const char *src, size_t n)
|
||||||
|
{
|
||||||
|
size_t i = 0;
|
||||||
|
while(i < n && (dst[i] = src[i])) i++;
|
||||||
|
return dst;
|
||||||
|
}
|
||||||
|
|
||||||
/* vsprintf() - a trimmed-down version of the function
|
/* vsprintf() - a trimmed-down version of the function
|
||||||
This function supports formats '%%', '%nd', '%nx' and '%s' where 'n' is a
|
This function supports formats '%%', '%<n>d', '%<n>x' and '%s' where 'n' is
|
||||||
1-digit size, and is mandatory. For '%d' and '%x', '0' is always set.
|
a 1-digit size, and is mandatory. For '%d' and '%x', flag '0' is always set.
|
||||||
Always outputs exactly the requested number of characters, even if it's not
|
Always outputs exactly the requested number of characters, even if it's not
|
||||||
enough to completely print the value.
|
enough to completely print the value.
|
||||||
Does whatever it wants if the format is invalid. This is really a basic
|
Does whatever it wants if the format is invalid. This is really a basic
|
||||||
function to format output without needing 18 kB of code. */
|
function to format output without needing 18 kB of fxlib code. */
|
||||||
GWEAK void vsprintf(char *str, const char *format, va_list args)
|
GWEAK void vsprintf(char *str, const char *format, va_list args)
|
||||||
{
|
{
|
||||||
#define in() (c = *format++)
|
#define in() (c = *format++)
|
||||||
|
|
Loading…
Reference in a new issue