diff options
author | Hsuan Ting Chen <roccochen@chromium.org> | 2023-02-20 11:49:35 +0800 |
---|---|---|
committer | Jakub Czapiga <jacz@semihalf.com> | 2023-04-28 09:39:06 +0000 |
commit | 26a955507379f6933e4287fbbbae7b618657cf48 (patch) | |
tree | c3ffaab396978c9022cf37ff5c3498d65f71915b /src/drivers/pc80/vga/vga.c | |
parent | 533f1e78d6658f1a21ccdc33f64fe38fd068ee2b (diff) |
vga: Change the arguments of vga_write_text to support extended ASCII
VGA defined the extended ASCII set based on CP437, but the function
vga_write_text() accepts a signed char array.
This will cause unnecessary confusion that if we want to print u with
umlaut (code=129 in CP437), we need to explicitly cast it to -127 in
signed char.
Since we still want to leverage the built-in string utilities
which only accepts const char*, we still need to cast it to signed char
while processing, and cast it back to unsigned once we write into the
frame buffer.
BRANCH=brya
BUG=b:264666392
TEST=emerge-brya coreboot chromeos-bootimage
Signed-off-by: Hsuan Ting Chen <roccochen@chromium.org>
Change-Id: If555bbc05f40ce3f02339c0468afff6dda8b7ded
Reviewed-on: https://review.coreboot.org/c/coreboot/+/73099
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Tarun Tuli <taruntuli@google.com>
Diffstat (limited to 'src/drivers/pc80/vga/vga.c')
-rw-r--r-- | src/drivers/pc80/vga/vga.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/drivers/pc80/vga/vga.c b/src/drivers/pc80/vga/vga.c index a9befcaccc..7f8ce69795 100644 --- a/src/drivers/pc80/vga/vga.c +++ b/src/drivers/pc80/vga/vga.c @@ -283,8 +283,10 @@ vga_line_write(unsigned int line, const char *string) } void -vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line, const char *string) +vga_write_text(enum VGA_TEXT_ALIGNMENT alignment, unsigned int line, + const unsigned char *ustring) { + const char *string = (const char *)ustring; char str[VGA_COLUMNS * VGA_LINES] = {0}; memcpy(str, string, strnlen(string, sizeof(str) - 1)); |