From 882dded4c0bb5c9cd49edce060e5bd068b233c2f Mon Sep 17 00:00:00 2001 From: Stuart Bennett Date: Fri, 7 Dec 2007 01:00:51 +0000 Subject: Add bios dumper --- vbtracetool.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'vbtracetool.c') diff --git a/vbtracetool.c b/vbtracetool.c index 8230935..9a1e88b 100644 --- a/vbtracetool.c +++ b/vbtracetool.c @@ -89,6 +89,16 @@ int do_post_int(unsigned pci_device) return 0; } +int do_writeout_bios(void) +{ + int i; + + for (i = 0; i < ((*((char *)0xc0002) * 512 < 0x10000) ? *((char *)0xc0002) * 512 : 0x10000); i++) + fprintf(stderr, "%c", *((char *)0xc0000 + i)); + + return 0; +} + int main(int argc, char *argv[]) { static struct pci_access *pacc; @@ -97,7 +107,7 @@ int main(int argc, char *argv[]) unsigned int pci_id = 0, pci_vendor; int opt, debug = 0, mode, op = 'g', opset = 0, nvlog = 0; - while ((opt = getopt(argc, argv, "dglps:")) != -1) { + while ((opt = getopt(argc, argv, "dglps:w")) != -1) { switch (opt) { case 'd': debug = 1; @@ -117,6 +127,10 @@ int main(int argc, char *argv[]) opset++; mode = atoi(optarg); break; + case 'w': + op = 'w'; + opset++; + break; default: opset = 2; } @@ -185,6 +199,8 @@ int main(int argc, char *argv[]) return (do_post_int(pci_id)); case 's': return (do_set_mode(mode)); + case 'w': + return (do_writeout_bios()); } return 0; -- cgit v1.2.3