X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fmisc%2Fbochs-2.1.1.patch;h=0c233169c5feb6769b89d517ac6d7129ce0171f6;hb=f1ace6df9a5a95ca393e6955cc941c6eb203914b;hp=942b82f1d8d8d35ca8ababac076f15ee3164d2dc;hpb=9ad2fa73d2c0361aa7e14134045b27f08872379f;p=pintos-anon diff --git a/src/misc/bochs-2.1.1.patch b/src/misc/bochs-2.1.1.patch index 942b82f..0c23316 100644 --- a/src/misc/bochs-2.1.1.patch +++ b/src/misc/bochs-2.1.1.patch @@ -14,6 +14,10 @@ connect a serial port to stdout and it doesn't work under Solaris anyway. This patch is useful everywhere with `pintos', but may not be wanted elsewhere. +The remaining patches add the `jitter' feature described in the +project documentation, in which timer interrupts are delivered at +random intervals. + To apply all the patches, cd into the Bochs directory, then type patch -p1 < ~/pintos/src/misc/bochs-2.1.1.patch You will have to supply the proper path to the patch, of course. You @@ -25,7 +29,7 @@ unwanted patches, then follow the above instructions. Here's a ./configure invocation for Bochs that works optimally with the `pintos' utility: - ./configure --with-x --with-x11 --with-term --with-nogui + ./configure --enable-4meg-pages --with-x --with-x11 --with-term --with-nogui If you want the gdb stub, add --enable-gdb-stub If you want the internal debugger, add --enable-debugger @@ -135,6 +139,8 @@ diff -urp orig/bochs-2.1.1/gdbstub.cc bochs-2.1.1/gdbstub.cc mem2hex((char *)registers, obuf, NUMREGSBYTES); put_reply(obuf); break; + +diff -u tmp/bochs-2.1.1/iodev/serial.cc bochs-2.1.1/iodev/serial.cc --- tmp/bochs-2.1.1/iodev/serial.cc 2004-02-11 14:28:54.000001000 -0800 +++ bochs-2.1.1/iodev/serial.cc 2004-09-14 23:02:04.000001000 -0700 @@ -53,7 +53,7 @@ @@ -162,3 +168,67 @@ diff -urp orig/bochs-2.1.1/gdbstub.cc bochs-2.1.1/gdbstub.cc } #endif /* def SERIAL_ENABLE */ // nothing for now + +diff -urp bochs-2.1.1.orig/bochs.h bochs-2.1.1/bochs.h +--- bochs-2.1.1.orig/bochs.h 2004-02-11 14:28:03.000000000 -0800 ++++ bochs-2.1.1/bochs.h 2004-09-20 17:02:01.000000000 -0700 +@@ -757,4 +757,6 @@ int bx_init_hardware (); + + #endif + ++extern int jitter; ++ + #endif /* BX_BOCHS_H */ +diff -urp bochs-2.1.1.orig/iodev/pit82c54.cc bochs-2.1.1/iodev/pit82c54.cc +--- bochs-2.1.1.orig/iodev/pit82c54.cc 2004-02-11 14:28:53.000000000 -0800 ++++ bochs-2.1.1/iodev/pit82c54.cc 2004-09-20 17:18:24.000000000 -0700 +@@ -28,6 +28,7 @@ + + #include "bochs.h" + #include "pit82c54.h" ++#include + #define LOG_THIS this-> + + +@@ -356,7 +357,13 @@ pit_82C54::clock(Bit8u cnum) { + case 2: + if(thisctr.count_written) { + if(thisctr.triggerGATE || thisctr.first_pass) { +- set_count(thisctr, thisctr.inlatch); ++ unsigned n = thisctr.inlatch; ++ if (jitter) { ++ n *= (double) rand() / RAND_MAX; ++ if (n < 5) ++ n = 5; ++ } ++ set_count(thisctr, n); + thisctr.next_change_time=(thisctr.count_binary-1) & 0xFFFF; + thisctr.null_count=0; + if(thisctr.inlatch==1) { +diff -urp bochs-2.1.1.orig/iodev/pit_wrap.cc bochs-2.1.1/iodev/pit_wrap.cc +diff -urp bochs-2.1.1.orig/iodev/serial.cc bochs-2.1.1/iodev/serial.cc +diff -urp bochs-2.1.1.orig/main.cc bochs-2.1.1/main.cc +--- bochs-2.1.1.orig/main.cc 2004-02-11 14:28:41.000000000 -0800 ++++ bochs-2.1.1/main.cc 2004-09-20 17:15:39.000000000 -0700 +@@ -58,6 +58,7 @@ + + + int bochsrc_include_count = 0; ++int jitter = 0; + + extern "C" { + #include +@@ -2022,6 +2024,13 @@ bx_init_main (int argc, char *argv[]) + else if (!strcmp ("-q", argv[arg])) { + SIM->get_param_enum(BXP_BOCHS_START)->set (BX_QUICK_START); + } ++ else if (!strcmp ("-j", argv[arg])) { ++ if (++arg >= argc) BX_PANIC(("-j must be followed by a number")); ++ else { ++ jitter = 1; ++ srand (atoi (argv[arg])); ++ } ++ } + else if (!strcmp ("-f", argv[arg])) { + if (++arg >= argc) BX_PANIC(("-f must be followed by a filename")); + else bochsrc_filename = argv[arg];