From de5770c3523e8ecb4f639417bf6f7592ed703c37 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Tue, 8 Dec 2020 12:40:28 +0100 Subject: [PATCH] vmx: add fmt checking, fix fmt errors, remove duplication for vmdebug --- sys/src/cmd/vmx/dat.h | 1 + sys/src/cmd/vmx/exith.c | 6 +++--- sys/src/cmd/vmx/fns.h | 3 ++- sys/src/cmd/vmx/ide.c | 10 +++++----- sys/src/cmd/vmx/io.c | 8 ++++---- sys/src/cmd/vmx/vmx.c | 18 ------------------ 6 files changed, 15 insertions(+), 31 deletions(-) diff --git a/sys/src/cmd/vmx/dat.h b/sys/src/cmd/vmx/dat.h index 25a1898a0..b6e375a8e 100644 --- a/sys/src/cmd/vmx/dat.h +++ b/sys/src/cmd/vmx/dat.h @@ -11,6 +11,7 @@ enum { VMDEAD, }; extern int state; +extern int debug; enum { BY2PG = 4096 diff --git a/sys/src/cmd/vmx/exith.c b/sys/src/cmd/vmx/exith.c index 1a6afc634..185c22e07 100644 --- a/sys/src/cmd/vmx/exith.c +++ b/sys/src/cmd/vmx/exith.c @@ -368,7 +368,7 @@ movcr(ExitInfo *ei) case 0: switch(q >> 4 & 3){ case 0: - vmdebug("illegal CR0 write, value %#ux", rget(x86reg[q >> 8 & 15])); + vmdebug("illegal CR0 write, value %#ux", (u32int)rget(x86reg[q >> 8 & 15])); rset("cr0real", rget(x86reg[q >> 8 & 15])); skipinstr(ei); break; @@ -390,7 +390,7 @@ movcr(ExitInfo *ei) case 4: switch(q >> 4 & 3){ case 0: - vmdebug("illegal CR4 write, value %#ux", rget(x86reg[q >> 8 & 15])); + vmdebug("illegal CR4 write, value %#ux", (u32int)rget(x86reg[q >> 8 & 15])); rset("cr4real", rget(x86reg[q >> 8 & 15])); skipinstr(ei); break; @@ -405,7 +405,7 @@ movcr(ExitInfo *ei) } break; default: - vmerror("access to unknown control register CR%d", ei->qual & 15); + vmerror("access to unknown control register CR%ud", q & 15); postexc("#ud", NOERRC); } } diff --git a/sys/src/cmd/vmx/fns.h b/sys/src/cmd/vmx/fns.h index 61336d83c..06643a9aa 100644 --- a/sys/src/cmd/vmx/fns.h +++ b/sys/src/cmd/vmx/fns.h @@ -11,7 +11,8 @@ void pitadvance(void); void rtcadvance(void); void settimer(vlong targ); void vmerror(char *, ...); -void vmdebug(char *, ...); +#pragma varargck argpos vmerror 1 +#define vmdebug if(!debug) {} else vmerror int ctl(char *, ...); void registermmio(uvlong, uvlong, uvlong (*)(int, uvlong, uvlong)); void irqline(int, int); diff --git a/sys/src/cmd/vmx/ide.c b/sys/src/cmd/vmx/ide.c index 162cac1c0..1e7cd1a7e 100644 --- a/sys/src/cmd/vmx/ide.c +++ b/sys/src/cmd/vmx/ide.c @@ -118,7 +118,7 @@ idegoio(IDE *d, int wr) addr = getlba(d); if(addr < 0){ - vmerror("ide%d: access to invalid sector address (access to CHS=(%#.4ux,%#ux,%#.2ux); geometry is (%#.4ux,%#ux,%#.2ux)", d-ide, d->cyl, d->head&0xf, d->sec, d->lcyl, d->lhead, d->lsec); + vmerror("ide%zd: access to invalid sector address (access to CHS=(%#.4ux,%#ux,%#.2ux); geometry is (%#.4ux,%#ux,%#.2ux)", d-ide, d->cyl, d->head&0xf, d->sec, d->lcyl, d->lhead, d->lsec); postexc("#bp", NOERRC); d->stat = IDEDRDY | IDEDSC | IDEDRQ | IDEERR; d->err = IDEIDNF; @@ -325,7 +325,7 @@ ideioproc(void *dp) qunlock(io); werrstr("eof"); if(getsector(a+i, p) < 0 && pread(d->fd, p, 512, (a+i)*512) < 512){ - vmerror("ide%d: read: %r", d - ide); + vmerror("ide%zd: read: %r", d - ide); qlock(io); io->err = IDEUNC; qunlock(io); @@ -355,7 +355,7 @@ idecmd(IDE *d, u8int cmd) break; default: if((d->flags & IDEPRESENT) == 0){ - vmerror("ide%d: command %#ux issued to absent drive", d-ide, cmd); + vmerror("ide%zd: command %#ux issued to absent drive", d-ide, cmd); return; } } @@ -435,7 +435,7 @@ idecmd(IDE *d, u8int cmd) case 0x66: d->flags |= IDEKEEPFEAT; break; /* retain settings */ case 0xcc: d->flags &= ~IDEKEEPFEAT; break; /* revert to default on reset */ default: - vmerror("ide%d: unknown feature %#ux", d-ide, d->feat); + vmerror("ide%zd: unknown feature %#ux", d-ide, d->feat); d->stat = IDEDRDY|IDEDSC|IDEERR; d->err = IDEABRT; return; @@ -443,7 +443,7 @@ idecmd(IDE *d, u8int cmd) d->stat = IDEDRDY|IDEDSC; break; default: - vmerror("ide%d: unknown command %#ux", d-ide, cmd); + vmerror("ide%zd: unknown command %#ux", d-ide, cmd); d->stat = IDEDRDY|IDEDSC|IDEERR; d->err = IDEABRT; } diff --git a/sys/src/cmd/vmx/io.c b/sys/src/cmd/vmx/io.c index e3125ab51..25244b4e0 100644 --- a/sys/src/cmd/vmx/io.c +++ b/sys/src/cmd/vmx/io.c @@ -292,7 +292,7 @@ picio(int isin, u16int port, u32int val, int sz, void *) p->imr = 0; p->prio = 7; p->flags = 0; - if((val & 0x0b) != 0x01) vmerror("PIC%ld ICW1 with unsupported value %#ux", p-pic, val); + if((val & 0x0b) != 0x01) vmerror("PIC%zd ICW1 with unsupported value %#ux", p-pic, (u32int)val); p->init = 1; return 0; } @@ -347,7 +347,7 @@ picio(int isin, u16int port, u32int val, int sz, void *) case 0xa1: switch(p->init){ default: - vmerror("write to PIC%ld in init=%d state", p-pic, p->init); + vmerror("write to PIC%zd in init=%d state", p-pic, p->init); return 0; case 1: p->base = val; @@ -355,11 +355,11 @@ picio(int isin, u16int port, u32int val, int sz, void *) return 0; case 2: if(p == &pic[0] && val != 4 || p == &pic[1] && val != 2) - vmerror("PIC%ld ICW3 with unsupported value %#ux", p-pic, val); + vmerror("PIC%zd ICW3 with unsupported value %#ux", p-pic, val); p->init = 3; return 0; case 3: - if((val & 0xfd) != 1) vmerror("PIC%ld ICW4 with unsupported value %#ux", p-pic, val); + if((val & 0xfd) != 1) vmerror("PIC%zd ICW4 with unsupported value %#ux", p-pic, val); if((val & 2) != 0) p->flags |= AEOI; p->init = 4; picupdate(p); diff --git a/sys/src/cmd/vmx/vmx.c b/sys/src/cmd/vmx/vmx.c index 8b71ecfd1..c82ba0d1c 100644 --- a/sys/src/cmd/vmx/vmx.c +++ b/sys/src/cmd/vmx/vmx.c @@ -48,23 +48,6 @@ vmerror(char *fmt, ...) fmtfdflush(&f); } -void -vmdebug(char *fmt, ...) -{ - Fmt f; - char buf[256]; - va_list arg; - - if(debug == 0) - return; - fmtfdinit(&f, 2, buf, sizeof buf); - va_start(arg, fmt); - fmtvprint(&f, fmt, arg); - va_end(arg); - fmtprint(&f, "\n"); - fmtfdflush(&f); -} - int ctl(char *fmt, ...) { @@ -616,7 +599,6 @@ threadmain(int argc, char **argv) waitch = chancreate(sizeof(char *), 32); sleepch = chancreate(sizeof(ulong), 32); notifch = chancreate(sizeof(VmxNotif), 16); - debug = 0; ARGBEGIN { case 'm':