summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--com32/cmenu/libmenu/com32io.c6
-rw-r--r--com32/gfxboot/gfxboot.c8
-rw-r--r--com32/hdt/hdt-common.c2
-rw-r--r--com32/lib/syslinux/disk.c1
-rw-r--r--com32/libupload/ctime.c2
-rw-r--r--com32/lua/src/vesa.c3
-rw-r--r--com32/mboot/apm.c2
-rw-r--r--com32/mboot/initvesa.c2
-rw-r--r--com32/mboot/mem.c2
-rw-r--r--com32/modules/meminfo.c2
-rw-r--r--com32/modules/poweroff.c3
-rw-r--r--com32/modules/pxechn.c1
-rw-r--r--com32/modules/vesainfo.c2
-rw-r--r--com32/sysdump/memmap.c2
-rw-r--r--com32/sysdump/vesa.c1
-rw-r--r--core/bios.c21
-rw-r--r--core/font.c3
-rw-r--r--core/fs/diskio_bios.c2
-rw-r--r--core/graphics.c3
-rw-r--r--core/localboot.c2
-rw-r--r--core/plaincon.c2
-rw-r--r--core/pxeboot.c1
-rw-r--r--core/rawcon.c1
-rw-r--r--memdisk/conio.c1
-rw-r--r--memdisk/setup.c1
25 files changed, 75 insertions, 1 deletions
diff --git a/com32/cmenu/libmenu/com32io.c b/com32/cmenu/libmenu/com32io.c
index 8e5016be..6954c438 100644
--- a/com32/cmenu/libmenu/com32io.c
+++ b/com32/cmenu/libmenu/com32io.c
@@ -20,6 +20,7 @@ com32sys_t inreg, outreg; // Global register sets for use
void getpos(char *row, char *col, char page)
{
+ memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x03;
REG_BH(inreg) = page;
__intcall(0x10, &inreg, &outreg);
@@ -30,6 +31,7 @@ void getpos(char *row, char *col, char page)
char inputc(char *scancode)
{
syslinux_idle(); /* So syslinux can perform periodic activity */
+ memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x10;
__intcall(0x16, &inreg, &outreg);
if (scancode)
@@ -40,6 +42,7 @@ char inputc(char *scancode)
void getcursorshape(char *start, char *end)
{
char page = 0; // XXX TODO
+ memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x03;
REG_BH(inreg) = page;
__intcall(0x10, &inreg, &outreg);
@@ -49,6 +52,7 @@ void getcursorshape(char *start, char *end)
void setcursorshape(char start, char end)
{
+ memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x01;
REG_CH(inreg) = start;
REG_CL(inreg) = end;
@@ -57,6 +61,7 @@ void setcursorshape(char start, char end)
void setvideomode(char mode)
{
+ memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x00;
REG_AL(inreg) = mode;
__intcall(0x10, &inreg, &outreg);
@@ -65,6 +70,7 @@ void setvideomode(char mode)
// Get char displayed at current position
unsigned char getcharat(char page)
{
+ memset(&inreg, 0, sizeof inreg);
REG_AH(inreg) = 0x08;
REG_BH(inreg) = page;
__intcall(0x16, &inreg, &outreg);
diff --git a/com32/gfxboot/gfxboot.c b/com32/gfxboot/gfxboot.c
index 9c07d263..f67132c1 100644
--- a/com32/gfxboot/gfxboot.c
+++ b/com32/gfxboot/gfxboot.c
@@ -538,6 +538,7 @@ int gfx_init(char *file)
void *lowmem = lowmem_buf;
unsigned lowmem_size = LOWMEM_BUF_SIZE;
+ memset(&r,0,sizeof(r));
progress_active = 0;
printf("Loading %s...\n", file);
@@ -646,6 +647,7 @@ int gfx_menu_init(void)
{
com32sys_t r;
+ memset(&r,0,sizeof(r));
r.esi.l = (uint32_t) &gfx_menu;
__farcall(gfx.code_seg, gfx.jmp_table[GFX_CB_MENU_INIT], &r, &r);
@@ -658,6 +660,7 @@ void gfx_done(void)
{
com32sys_t r;
+ memset(&r,0,sizeof(r));
gfx_progress_done();
__farcall(gfx.code_seg, gfx.jmp_table[GFX_CB_DONE], &r, &r);
@@ -674,6 +677,7 @@ int gfx_input(void)
{
com32sys_t r;
+ memset(&r,0,sizeof(r));
r.edi.l = (uint32_t) cmdline;
r.ecx.l = sizeof cmdline;
r.eax.l = timeout * 182 / 100;
@@ -692,6 +696,7 @@ void gfx_infobox(int type, char *str1, char *str2)
{
com32sys_t r;
+ memset(&r,0,sizeof(r));
r.eax.l = type;
r.esi.l = (uint32_t) str1;
r.edi.l = (uint32_t) str2;
@@ -707,6 +712,7 @@ void gfx_progress_init(ssize_t kernel_size, char *label)
{
com32sys_t r;
+ memset(&r,0,sizeof(r));
if(!progress_active) {
r.eax.l = kernel_size >> gfx_config.sector_shift; // in sectors
r.esi.l = (uint32_t) label;
@@ -722,6 +728,7 @@ void gfx_progress_update(ssize_t advance)
{
com32sys_t r;
+ memset(&r,0,sizeof(r));
if(progress_active) {
r.eax.l = advance >> gfx_config.sector_shift; // in sectors
__farcall(gfx.code_seg, gfx.jmp_table[GFX_CB_PROGRESS_UPDATE], &r, &r);
@@ -734,6 +741,7 @@ void gfx_progress_done(void)
{
com32sys_t r;
+ memset(&r,0,sizeof(r));
if(progress_active) {
__farcall(gfx.code_seg, gfx.jmp_table[GFX_CB_PROGRESS_DONE], &r, &r);
}
diff --git a/com32/hdt/hdt-common.c b/com32/hdt/hdt-common.c
index 289d74e3..fbb8c988 100644
--- a/com32/hdt/hdt-common.c
+++ b/com32/hdt/hdt-common.c
@@ -334,6 +334,7 @@ int detect_vesa(struct s_hardware *hardware)
goto out;
gi->signature = VBE2_MAGIC; /* Get VBE2 extended data */
+ memset(&rm, 0, sizeof rm);
rm.eax.w[0] = 0x4F00; /* Get SVGA general information */
rm.edi.w[0] = OFFS(gi);
rm.es = SEG(gi);
@@ -361,6 +362,7 @@ int detect_vesa(struct s_hardware *hardware)
while ((mode = *mode_ptr++) != 0xFFFF) {
+ memset(&rm, 0, sizeof rm);
rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */
rm.ecx.w[0] = mode;
rm.edi.w[0] = OFFS(mi);
diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c
index a824acc5..5a99bb42 100644
--- a/com32/lib/syslinux/disk.c
+++ b/com32/lib/syslinux/disk.c
@@ -229,6 +229,7 @@ static void *chs_setup(const struct disk_info *const diskinfo, com32sys_t *inreg
h = t % diskinfo->head;
c = t / diskinfo->head;
+ memset(inreg, 0, sizeof *inreg);
inreg->eax.b[0] = count;
inreg->eax.b[1] = op_code;
inreg->ecx.b[1] = c;
diff --git a/com32/libupload/ctime.c b/com32/libupload/ctime.c
index 56c8efb6..a3e8155c 100644
--- a/com32/libupload/ctime.c
+++ b/com32/libupload/ctime.c
@@ -24,9 +24,11 @@ uint32_t posix_time(void)
ir.eax.b[1] = 0x04;
__intcall(0x1A, &ir, &d0);
+ memset(&ir, 0, sizeof ir);
ir.eax.b[1] = 0x02;
__intcall(0x1A, &ir, &t0);
+ memset(&ir, 0, sizeof ir);
ir.eax.b[1] = 0x04;
__intcall(0x1A, &ir, &d1);
diff --git a/com32/lua/src/vesa.c b/com32/lua/src/vesa.c
index 06649e11..19a10242 100644
--- a/com32/lua/src/vesa.c
+++ b/com32/lua/src/vesa.c
@@ -27,7 +27,7 @@ static int vesa_getmodes(lua_State *L)
if (!mi)
goto out;
- memset(&rm, 0, sizeof rm);
+ memset(&rm, 0, sizeof(rm));
memset(gi, 0, sizeof *gi);
gi->signature = VBE2_MAGIC; /* Get VBE2 extended data */
@@ -61,6 +61,7 @@ static int vesa_getmodes(lua_State *L)
printf("Found mode: 0x%04x (%dx%dx%d)\n", mode, mi->h_res, mi->v_res, mi->bpp);
+ memset(&rm, 0, sizeof(rm));
memset(mi, 0, sizeof *mi);
rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */
rm.ecx.w[0] = mode;
diff --git a/com32/mboot/apm.c b/com32/mboot/apm.c
index 3f48af7c..82b6b608 100644
--- a/com32/mboot/apm.c
+++ b/com32/mboot/apm.c
@@ -50,6 +50,7 @@ void mboot_apm(void)
return; /* 32 bits not supported */
/* Disconnect first, just in case */
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.b[0] = 0x04;
__intcall(0x15, &ireg, &oreg);
@@ -68,6 +69,7 @@ void mboot_apm(void)
/* Redo the installation check as the 32-bit connect;
some BIOSes return different flags this way... */
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.b[0] = 0x00;
__intcall(0x15, &ireg, &oreg);
diff --git a/com32/mboot/initvesa.c b/com32/mboot/initvesa.c
index bd869e3d..9111ec27 100644
--- a/com32/mboot/initvesa.c
+++ b/com32/mboot/initvesa.c
@@ -100,6 +100,7 @@ void set_graphics_mode(const struct multiboot_header *mbh,
while ((mode = *mode_ptr++) != 0xFFFF) {
mode &= 0x1FF; /* The rest are attributes of sorts */
+ memset(&rm, 0, sizeof rm);
memset(mi, 0, sizeof *mi);
rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */
rm.ecx.w[0] = mode;
@@ -193,6 +194,7 @@ void set_graphics_mode(const struct multiboot_header *mbh,
mode = bestmode;
/* Now set video mode */
+ memset(&rm, 0, sizeof rm);
rm.eax.w[0] = 0x4F02; /* Set SVGA video mode */
mode |= 0x4000; /* Request linear framebuffer */
rm.ebx.w[0] = mode;
diff --git a/com32/mboot/mem.c b/com32/mboot/mem.c
index 6e3995bf..e42b70ba 100644
--- a/com32/mboot/mem.c
+++ b/com32/mboot/mem.c
@@ -124,6 +124,7 @@ static int mboot_scan_memory(struct AddrRangeDesc **ardp, uint32_t * dosmem)
ard[0].Type = 1;
/* Next try INT 15h AX=E801h */
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.w[0] = 0xe801;
__intcall(0x15, &ireg, &oreg);
@@ -147,6 +148,7 @@ static int mboot_scan_memory(struct AddrRangeDesc **ardp, uint32_t * dosmem)
}
/* Finally try INT 15h AH=88h */
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.w[0] = 0x8800;
if (!(oreg.eflags.l & EFLAGS_CF) && oreg.eax.w[0]) {
ard[1].size = 20;
diff --git a/com32/modules/meminfo.c b/com32/modules/meminfo.c
index 34b3e91d..fc04792f 100644
--- a/com32/modules/meminfo.c
+++ b/com32/modules/meminfo.c
@@ -110,11 +110,13 @@ static void dump_legacy(void)
ivt[0x15].seg, ivt[0x15].offs, dosram, dosram << 10, oreg.eax.w[0],
oreg.eax.w[0] << 10);
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.b[1] = 0x88;
__intcall(0x15, &ireg, &oreg);
printf("INT 15 88: 0x%04x (%uK) ", oreg.eax.w[0], oreg.eax.w[0]);
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.w[0] = 0xe801;
__intcall(0x15, &ireg, &oreg);
diff --git a/com32/modules/poweroff.c b/com32/modules/poweroff.c
index 8b656ad4..3255ac26 100644
--- a/com32/modules/poweroff.c
+++ b/com32/modules/poweroff.c
@@ -50,6 +50,7 @@ int main()
return 1;
}
+ memset(&inregs, 0, sizeof inregs);
inregs.eax.l = 0x5301; /* APM Real Mode Interface Connect (01h) */
inregs.ebx.l = 0; /* APM BIOS (0000h) */
__intcall(0x15, &inregs, &outregs);
@@ -59,6 +60,7 @@ int main()
return 1;
}
+ memset(&inregs, 0, sizeof inregs);
inregs.eax.l = 0x530e; /* APM Driver Version (0Eh) */
inregs.ebx.l = 0; /* APM BIOS (0000h) */
inregs.ecx.l = 0x101; /* APM Driver version 1.1 */
@@ -74,6 +76,7 @@ int main()
return 1;
}
+ memset(&inregs, 0, sizeof inregs);
inregs.eax.l = 0x5307; /* Set Power State (07h) */
inregs.ebx.l = 1; /* All devices power managed by the APM BIOS */
inregs.ecx.l = 3; /* Power state off */
diff --git a/com32/modules/pxechn.c b/com32/modules/pxechn.c
index 7f2002db..bd614aa9 100644
--- a/com32/modules/pxechn.c
+++ b/com32/modules/pxechn.c
@@ -328,6 +328,7 @@ void pxe_set_regs(struct syslinux_rm_regs *regs)
{
com32sys_t tregs;
+ memset(&tregs,0,sizeof(tregs));
regs->ip = 0x7C00;
/* Plan A uses SS:[SP + 4] */
/* sdi->pxe.stack is a usable pointer, not something that can be nicely
diff --git a/com32/modules/vesainfo.c b/com32/modules/vesainfo.c
index 66b121d7..a65d02c1 100644
--- a/com32/modules/vesainfo.c
+++ b/com32/modules/vesainfo.c
@@ -36,6 +36,7 @@ static void print_modes(void)
gi = &vesa->gi;
mi = &vesa->mi;
+ memset(&rm, 0, sizeof rm);
gi->signature = VBE2_MAGIC; /* Get VBE2 extended data */
rm.eax.w[0] = 0x4F00; /* Get SVGA general information */
rm.edi.w[0] = OFFS(gi);
@@ -63,6 +64,7 @@ static void print_modes(void)
lines = 0;
}
+ memset(&rm, 0, sizeof rm);
rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */
rm.ecx.w[0] = mode;
rm.edi.w[0] = OFFS(mi);
diff --git a/com32/sysdump/memmap.c b/com32/sysdump/memmap.c
index 929873fe..48241a7a 100644
--- a/com32/sysdump/memmap.c
+++ b/com32/sysdump/memmap.c
@@ -72,10 +72,12 @@ void dump_memory_map(struct upload_backend *be)
__intcall(0x12, &ireg, &oreg);
cpio_writefile(be, "memmap/12", &oreg, sizeof oreg);
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.b[1] = 0x88;
__intcall(0x15, &ireg, &oreg);
cpio_writefile(be, "memmap/1588", &oreg, sizeof oreg);
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.w[0] = 0xe801;
__intcall(0x15, &ireg, &oreg);
cpio_writefile(be, "memmap/15e801", &oreg, sizeof oreg);
diff --git a/com32/sysdump/vesa.c b/com32/sysdump/vesa.c
index 42adc3da..3540fc44 100644
--- a/com32/sysdump/vesa.c
+++ b/com32/sysdump/vesa.c
@@ -41,6 +41,7 @@ void dump_vesa_tables(struct upload_backend *be)
mode_ptr = GET_PTR(gi.video_mode_ptr);
while ((mode = *mode_ptr++) != 0xFFFF) {
memset(mip, 0, sizeof *mip);
+ memset(&rm, 0, sizeof rm);
rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */
rm.ecx.w[0] = mode;
rm.edi.w[0] = OFFS(mip);
diff --git a/core/bios.c b/core/bios.c
index 25e857b9..1dfbbe9a 100644
--- a/core/bios.c
+++ b/core/bios.c
@@ -52,6 +52,7 @@ static void bios_get_cursor(uint8_t *x, uint8_t *y)
static void bios_erase(int x0, int y0, int x1, int y1, uint8_t attribute)
{
static com32sys_t ireg;
+ memset(&ireg, 0, sizeof(ireg));
ireg.eax.w[0] = 0x0600; /* Clear window */
ireg.ebx.b[1] = attribute;
@@ -67,6 +68,8 @@ static void bios_showcursor(const struct term_state *st)
static com32sys_t ireg;
uint16_t cursor = st->cursor ? cursor_type : 0x2020;
+ memset(&ireg, 0, sizeof(ireg));
+
ireg.eax.b[1] = 0x01;
ireg.ecx.w[0] = cursor;
__intcall(0x10, &ireg, NULL);
@@ -78,6 +81,8 @@ static void bios_set_cursor(int x, int y, bool visible)
struct curxy xy = BIOS_CURXY[page];
static com32sys_t ireg;
+ memset(&ireg, 0, sizeof(ireg));
+
(void)visible;
if (xy.x != x || xy.y != y) {
@@ -93,6 +98,8 @@ static void bios_write_char(uint8_t ch, uint8_t attribute)
{
static com32sys_t ireg;
+ memset(&ireg, 0, sizeof(ireg));
+
ireg.eax.b[1] = 0x09;
ireg.eax.b[0] = ch;
ireg.ebx.b[1] = BIOS_PAGE;
@@ -105,6 +112,8 @@ static void bios_scroll_up(uint8_t cols, uint8_t rows, uint8_t attribute)
{
static com32sys_t ireg;
+ memset(&ireg, 0, sizeof(ireg));
+
ireg.eax.w[0] = 0x0601;
ireg.ebx.b[1] = attribute;
ireg.ecx.w[0] = 0;
@@ -117,6 +126,8 @@ static void bios_beep(void)
{
static com32sys_t ireg;
+ memset(&ireg, 0, sizeof(ireg));
+
ireg.eax.w[0] = 0x0e07;
ireg.ebx.b[1] = BIOS_PAGE;
__intcall(0x10, &ireg, NULL);
@@ -161,9 +172,11 @@ void bios_adv_init(void)
{
static com32sys_t reg;
+ memset(&reg, 0, sizeof(reg));
reg.eax.w[0] = 0x0025;
__intcall(0x22, &reg, &reg);
+ memset(&reg, 0, sizeof(reg));
reg.eax.w[0] = 0x001c;
__intcall(0x22, &reg, &reg);
__syslinux_adv_ptr = MK_PTR(reg.es, reg.ebx.w[0]);
@@ -174,6 +187,7 @@ int bios_adv_write(void)
{
static com32sys_t reg;
+ memset(&reg, 0, sizeof(reg));
reg.eax.w[0] = 0x001d;
__intcall(0x22, &reg, &reg);
return (reg.eflags.l & EFLAGS_CF) ? -1 : 0;
@@ -262,6 +276,7 @@ static int bios_vesacon_set_mode(struct vesa_info *vesa_info, int *px, int *py,
debug("Found mode: 0x%04x\r\n", mode);
+ memset(&rm, 0, sizeof rm);
memset(mi, 0, sizeof *mi);
rm.eax.w[0] = 0x4F01; /* Get SVGA mode information */
rm.ecx.w[0] = mode;
@@ -357,6 +372,7 @@ static int bios_vesacon_set_mode(struct vesa_info *vesa_info, int *px, int *py,
mi = &vesa_info->mi;
mode = bestmode;
+ memset(&rm, 0, sizeof rm);
/* Now set video mode */
rm.eax.w[0] = 0x4F02; /* Set SVGA video mode */
if (mi->mode_attr & 0x0080)
@@ -384,6 +400,7 @@ static void set_window_pos(struct win_info *wi, size_t win_pos)
if (wi->win_num < 0)
return; /* This should never happen... */
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.w[0] = 0x4F05;
ireg.ebx.b[0] = wi->win_num;
ireg.edx.w[0] = win_pos >> wi->win_gshift;
@@ -450,6 +467,7 @@ static inline void check_escapes(void)
{
com32sys_t ireg, oreg;
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.b[1] = 0x02; /* Check keyboard flags */
__intcall(0x16, &ireg, &oreg);
@@ -539,6 +557,7 @@ static int bios_scan_memory(scan_memory_callback_t callback, void *data)
if (!e820buf)
return -1;
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.l = 0xe820;
ireg.edx.l = 0x534d4150;
ireg.ebx.l = 0;
@@ -592,6 +611,7 @@ static int bios_scan_memory(scan_memory_callback_t callback, void *data)
return 0;
/* Next try INT 15h AX=E801h */
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.w[0] = 0xe801;
__intcall(0x15, &ireg, &oreg);
@@ -611,6 +631,7 @@ static int bios_scan_memory(scan_memory_callback_t callback, void *data)
}
/* Finally try INT 15h AH=88h */
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.w[0] = 0x8800;
if (!(oreg.eflags.l & EFLAGS_CF) && oreg.eax.w[0]) {
rv = callback(data, (addr_t) 1 << 20, oreg.ecx.w[0] << 10, SMT_FREE);
diff --git a/core/font.c b/core/font.c
index 7dd8be78..508f7059 100644
--- a/core/font.c
+++ b/core/font.c
@@ -134,6 +134,7 @@ void use_font(void)
__intcall(0x10, &ireg, &oreg);
+ memset(&ireg, 0, sizeof(ireg));
ireg.ebx.b[0] = 0;
ireg.eax.w[0] = 0x1103; /* Select page 0 */
__intcall(0x10, &ireg, NULL);
@@ -154,6 +155,8 @@ void bios_adjust_screen(void)
volatile uint8_t *vidrows = (volatile uint8_t *)BIOS_vidrows;
uint8_t rows, cols;
+ memset(&ireg, 0, sizeof(ireg));
+
rows = *vidrows;
if (!rows) {
/*
diff --git a/core/fs/diskio_bios.c b/core/fs/diskio_bios.c
index 9b935fe2..eba5a176 100644
--- a/core/fs/diskio_bios.c
+++ b/core/fs/diskio_bios.c
@@ -334,6 +334,7 @@ struct disk *bios_disk_init(void *private)
}
}
+ memset(&ireg, 0, sizeof ireg);
/* Get EBIOS support */
ireg.eax.b[1] = 0x41;
ireg.ebx.w[0] = 0x55aa;
@@ -352,6 +353,7 @@ struct disk *bios_disk_init(void *private)
/* memset(&edd_params, 0, sizeof edd_params); */
edd_params.len = sizeof edd_params;
+ memset(&ireg, 0, sizeof ireg);
ireg.eax.b[1] = 0x48;
ireg.ds = SEG(&edd_params);
ireg.esi.w[0] = OFFS(&edd_params);
diff --git a/core/graphics.c b/core/graphics.c
index 1efb2faf..471847f5 100644
--- a/core/graphics.c
+++ b/core/graphics.c
@@ -94,9 +94,11 @@ static int vgasetmode(void)
/*
* Set mode.
*/
+ memset(&ireg, 0, sizeof(ireg));
ireg.eax.w[0] = 0x0012; /* Set mode = 640x480 VGA 16 colors */
__intcall(0x10, &ireg, &oreg);
+ memset(&ireg, 0, sizeof(ireg));
ireg.edx.w[0] = (uint32_t)linear_color;
ireg.eax.w[0] = 0x1002; /* Write color registers */
__intcall(0x10, &ireg, &oreg);
@@ -339,6 +341,7 @@ static void vgacursorcommon(char data)
{
if (UsingVGA) {
com32sys_t ireg;
+ memset(&ireg, 0, sizeof(ireg));
ireg.eax.b[0] = data;
ireg.eax.b[1] = 0x09;
diff --git a/core/localboot.c b/core/localboot.c
index 39ffc8cb..04635d47 100644
--- a/core/localboot.c
+++ b/core/localboot.c
@@ -39,6 +39,7 @@ __export void local_boot(int16_t ax)
com32sys_t ireg, oreg;
int i;
+ memset(&ireg, 0, sizeof(ireg));
syslinux_force_text_mode();
writestr(LOCALBOOT_MSG);
@@ -62,6 +63,7 @@ __export void local_boot(int16_t ax)
ireg.eax.w[0] = 0; /* Reset drive */
__intcall(0x13, &ireg, NULL);
+ memset(&ireg, 0, sizeof(ireg));
ireg.eax.w[0] = 0x0201; /* Read one sector */
ireg.ecx.w[0] = 0x0001; /* C/H/S = 0/0/1 (first sector) */
ireg.ebx.w[0] = OFFS(trackbuf);
diff --git a/core/plaincon.c b/core/plaincon.c
index 2b7c4a63..66c259eb 100644
--- a/core/plaincon.c
+++ b/core/plaincon.c
@@ -14,6 +14,8 @@ __export void writechr(char data)
{
com32sys_t ireg, oreg;
+ memset(&ireg, 0, sizeof ireg);
+ memset(&oreg, 0, sizeof oreg);
write_serial(data); /* write to serial port if needed */
if (UsingVGA & 0x8)
diff --git a/core/pxeboot.c b/core/pxeboot.c
index b6c90998..d9960d81 100644
--- a/core/pxeboot.c
+++ b/core/pxeboot.c
@@ -24,6 +24,7 @@ extern void local_boot16(void);
__export void local_boot(uint16_t ax)
{
com32sys_t ireg;
+ memset(&ireg, 0, sizeof ireg);
syslinux_force_text_mode();
diff --git a/core/rawcon.c b/core/rawcon.c
index 6910a849..44030984 100644
--- a/core/rawcon.c
+++ b/core/rawcon.c
@@ -24,6 +24,7 @@ __export void writechr(char data)
bool curxyok = false;
uint16_t dx;
+ memset(&ireg, 0, sizeof ireg);
ireg.ebx.b[1] = *(uint8_t *)BIOS_page;
ireg.eax.b[1] = 0x03; /* Read cursor position */
__intcall(0x10, &ireg, &oreg);
diff --git a/memdisk/conio.c b/memdisk/conio.c
index d1f0862c..33be13ba 100644
--- a/memdisk/conio.c
+++ b/memdisk/conio.c
@@ -23,6 +23,7 @@
int putchar(int ch)
{
com32sys_t regs;
+ memset(&regs, 0, sizeof regs);
if (ch == '\n') {
/* \n -> \r\n */
diff --git a/memdisk/setup.c b/memdisk/setup.c
index 72c67852..992db58f 100644
--- a/memdisk/setup.c
+++ b/memdisk/setup.c
@@ -1223,6 +1223,7 @@ void setup(const struct real_mode_args *rm_args_ptr)
if (getcmditem("pause") != CMD_NOTFOUND) {
puts("press any key to boot... ");
+ memset(&regs, 0, sizeof regs);
regs.eax.w[0] = 0;
intcall(0x16, &regs, NULL);
}