You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
(125) |
Apr
(211) |
May
(44) |
Jun
(90) |
Jul
(57) |
Aug
(186) |
Sep
(724) |
Oct
(885) |
Nov
(340) |
Dec
(331) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(204) |
Feb
(80) |
Mar
(124) |
Apr
(96) |
May
(129) |
Jun
(48) |
Jul
(61) |
Aug
(159) |
Sep
(39) |
Oct
(100) |
Nov
(70) |
Dec
(79) |
2004 |
Jan
(128) |
Feb
(189) |
Mar
(117) |
Apr
(78) |
May
(61) |
Jun
(87) |
Jul
(54) |
Aug
(101) |
Sep
(67) |
Oct
(60) |
Nov
(61) |
Dec
(82) |
2005 |
Jan
(55) |
Feb
(82) |
Mar
(105) |
Apr
(86) |
May
(51) |
Jun
(55) |
Jul
(154) |
Aug
(63) |
Sep
(70) |
Oct
(105) |
Nov
(110) |
Dec
(63) |
2006 |
Jan
(181) |
Feb
(123) |
Mar
(118) |
Apr
(124) |
May
(171) |
Jun
(101) |
Jul
(28) |
Aug
(65) |
Sep
(83) |
Oct
(70) |
Nov
(28) |
Dec
(35) |
2007 |
Jan
(35) |
Feb
(15) |
Mar
(49) |
Apr
(48) |
May
(9) |
Jun
(6) |
Jul
(12) |
Aug
(27) |
Sep
(83) |
Oct
(81) |
Nov
(105) |
Dec
(129) |
2008 |
Jan
(78) |
Feb
(81) |
Mar
(82) |
Apr
(161) |
May
(128) |
Jun
(66) |
Jul
(48) |
Aug
(68) |
Sep
(41) |
Oct
(43) |
Nov
(27) |
Dec
(100) |
2009 |
Jan
(141) |
Feb
(139) |
Mar
(136) |
Apr
(170) |
May
(81) |
Jun
(43) |
Jul
(19) |
Aug
(39) |
Sep
(16) |
Oct
(105) |
Nov
(86) |
Dec
(66) |
2010 |
Jan
(32) |
Feb
(78) |
Mar
(117) |
Apr
(110) |
May
(58) |
Jun
(14) |
Jul
(21) |
Aug
(6) |
Sep
(20) |
Oct
(11) |
Nov
(36) |
Dec
(50) |
2011 |
Jan
(101) |
Feb
(24) |
Mar
(61) |
Apr
(52) |
May
(36) |
Jun
(64) |
Jul
(84) |
Aug
(122) |
Sep
(66) |
Oct
(42) |
Nov
(55) |
Dec
(106) |
2012 |
Jan
(95) |
Feb
(57) |
Mar
(49) |
Apr
(37) |
May
(44) |
Jun
(50) |
Jul
(55) |
Aug
(83) |
Sep
(80) |
Oct
(52) |
Nov
(28) |
Dec
(11) |
2013 |
Jan
(38) |
Feb
(40) |
Mar
(17) |
Apr
(20) |
May
(20) |
Jun
(31) |
Jul
(27) |
Aug
(34) |
Sep
(47) |
Oct
(75) |
Nov
(60) |
Dec
(111) |
2014 |
Jan
(70) |
Feb
(58) |
Mar
(49) |
Apr
(35) |
May
(45) |
Jun
(44) |
Jul
(57) |
Aug
(34) |
Sep
(13) |
Oct
(29) |
Nov
(35) |
Dec
(22) |
2015 |
Jan
(35) |
Feb
(49) |
Mar
(26) |
Apr
(28) |
May
(44) |
Jun
(8) |
Jul
(19) |
Aug
(17) |
Sep
(32) |
Oct
(24) |
Nov
(11) |
Dec
(5) |
2016 |
Jan
(1) |
Feb
(4) |
Mar
(9) |
Apr
(8) |
May
(11) |
Jun
(4) |
Jul
(8) |
Aug
(7) |
Sep
(4) |
Oct
(3) |
Nov
(22) |
Dec
(49) |
2017 |
Jan
(37) |
Feb
(34) |
Mar
(77) |
Apr
(44) |
May
(32) |
Jun
(18) |
Jul
(4) |
Aug
(19) |
Sep
(14) |
Oct
(34) |
Nov
(29) |
Dec
(60) |
2018 |
Jan
(32) |
Feb
(10) |
Mar
(8) |
Apr
(12) |
May
(26) |
Jun
(3) |
Jul
(1) |
Aug
(5) |
Sep
|
Oct
(5) |
Nov
(2) |
Dec
(2) |
2019 |
Jan
(9) |
Feb
(9) |
Mar
|
Apr
(4) |
May
(6) |
Jun
|
Jul
(1) |
Aug
(2) |
Sep
(1) |
Oct
(17) |
Nov
(38) |
Dec
(129) |
2020 |
Jan
(49) |
Feb
(15) |
Mar
(12) |
Apr
(5) |
May
(31) |
Jun
(29) |
Jul
(12) |
Aug
(16) |
Sep
(28) |
Oct
(37) |
Nov
(19) |
Dec
(33) |
2021 |
Jan
(69) |
Feb
(51) |
Mar
(42) |
Apr
(29) |
May
(24) |
Jun
(30) |
Jul
(32) |
Aug
(12) |
Sep
(4) |
Oct
(4) |
Nov
(1) |
Dec
|
From: Volker R. <vru...@us...> - 2002-10-13 08:14:35
|
Update of /cvsroot/bochs/bochs/iodev In directory usw-pr-cvs1:/tmp/cvs-serv12102 Modified Files: vga.cc vga.h Log Message: - sequencer reset bits renamed to 'reset1' and 'reset2' - default value of the sequencer reset bits is 1 (no reset) - sequencer reset flag 1 resets the charmap select register when cleared - skip the screen update when the sequencer is in reset mode (h/v sync and video ram refresh are disabled in that case) - don't clear the memory update flag before the update is done - skip the text screen update when the character height is set to 1 (MSL = 0) - sequencer debug messages updated Index: vga.cc =================================================================== RCS file: /cvsroot/bochs/bochs/iodev/vga.cc,v retrieving revision 1.46 retrieving revision 1.47 diff -u -d -r1.46 -r1.47 --- vga.cc 6 Oct 2002 19:38:54 -0000 1.46 +++ vga.cc 13 Oct 2002 08:14:31 -0000 1.47 @@ -173,8 +173,8 @@ for (i=0; i<4; i++) { BX_VGA_THIS s.sequencer.map_mask_bit[i] = 0; } - BX_VGA_THIS s.sequencer.bit0 = 0; - BX_VGA_THIS s.sequencer.bit1 = 0; + BX_VGA_THIS s.sequencer.reset1 = 1; + BX_VGA_THIS s.sequencer.reset2 = 1; BX_VGA_THIS s.sequencer.reg1 = 0; BX_VGA_THIS s.sequencer.char_map_select = 0; BX_VGA_THIS s.sequencer.extended_mem = 1; // display mem greater than 64K @@ -500,11 +500,11 @@ case 0x03c5: /* Sequencer Registers 00..04 */ switch (BX_VGA_THIS s.sequencer.index) { case 0: /* sequencer: reset */ - BX_DEBUG(("io read 3c5 case 0: sequencer reset")); - RETURN(BX_VGA_THIS s.sequencer.bit0 | (BX_VGA_THIS s.sequencer.bit1<<1)); + BX_DEBUG(("read 0x3c5: sequencer reset")); + RETURN(BX_VGA_THIS s.sequencer.reset1 | (BX_VGA_THIS s.sequencer.reset2<<1)); break; case 1: /* sequencer: clocking mode */ - BX_DEBUG(("io read 3c5 case 1: sequencer clocking mode")); + BX_DEBUG(("read 0x3c5: sequencer clocking mode")); RETURN(BX_VGA_THIS s.sequencer.reg1); break; case 2: /* sequencer: map mask register */ @@ -919,11 +919,17 @@ switch (BX_VGA_THIS s.sequencer.index) { case 0: /* sequencer: reset */ #if !defined(VGA_TRACE_FEATURE) - BX_DEBUG(("io write 3c5=%02x: reset reg: ignoring", - (unsigned) value); + BX_DEBUG(("write 0x3c5: sequencer reset: value=0x%02x", + (unsigned) value)); #endif -BX_VGA_THIS s.sequencer.bit0 = (value >> 0) & 0x01; -BX_VGA_THIS s.sequencer.bit1 = (value >> 1) & 0x01; + if (BX_VGA_THIS s.sequencer.reset1 && ((value & 0x01) == 0)) { + BX_VGA_THIS s.sequencer.char_map_select = 0; + BX_VGA_THIS s.charmap_address = 0; + bx_gui.set_text_charmap( + & BX_VGA_THIS s.vga_memory[0x20000 + BX_VGA_THIS s.charmap_address]); + } + BX_VGA_THIS s.sequencer.reset1 = (value >> 0) & 0x01; + BX_VGA_THIS s.sequencer.reset2 = (value >> 1) & 0x01; break; case 1: /* sequencer: clocking mode */ #if !defined(VGA_TRACE_FEATURE) @@ -1204,11 +1210,14 @@ { unsigned iHeight, iWidth; + /* skip screen update when the sequencer is in reset mode */ + if (!BX_VGA_THIS s.sequencer.reset1 || !BX_VGA_THIS s.sequencer.reset2) + return; + if (BX_VGA_THIS s.vga_mem_updated==0) { /* BX_DEBUG(("update(): updated=%u enabled=%u", (unsigned) BX_VGA_THIS s.vga_mem_updated, (unsigned) BX_VGA_THIS s.attribute_ctrl.video_enabled)); */ return; } - BX_VGA_THIS s.vga_mem_updated = 0; #if BX_SUPPORT_VBE if (BX_VGA_THIS s.vbe_enabled) @@ -1252,6 +1261,7 @@ } } + BX_VGA_THIS s.vga_mem_updated = 0; // after a vbe display update, don't try to do any 'normal vga' updates anymore return; } @@ -1560,6 +1570,10 @@ ((bx_vga.s.CRTC.reg[0x07]<<3)&0x200); // Maximum Scan Line: height of character cell MSL = bx_vga.s.CRTC.reg[0x09] & 0x1f; + if (MSL == 0) { + BX_ERROR(("character height = 1, skipping text update")); + return; + } rows = (VDE+1)/(MSL+1); if (rows > BX_MAX_TEXT_LINES) BX_PANIC(("text rows>%d: %d",BX_MAX_TEXT_LINES,rows)); Index: vga.h =================================================================== RCS file: /cvsroot/bochs/bochs/iodev/vga.h,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- vga.h 22 Sep 2002 11:31:48 -0000 1.17 +++ vga.h 13 Oct 2002 08:14:31 -0000 1.18 @@ -207,8 +207,8 @@ Bit8u index; Bit8u map_mask; Boolean map_mask_bit[4]; - Boolean bit0; - Boolean bit1; + Boolean reset1; + Boolean reset2; Bit8u reg1; Bit8u char_map_select; Boolean extended_mem; |
From: Bryce D. <bd...@us...> - 2002-10-13 06:19:38
|
Update of /cvsroot/bochs/bochs In directory usw-pr-cvs1:/tmp/cvs-serv21807 Modified Files: Tag: BRANCH_PLUGINS README Log Message: BRANCH_PLUGINS - found some macosx/libtool solutions on the web Index: README =================================================================== RCS file: /cvsroot/bochs/bochs/README,v retrieving revision 1.13.8.11 retrieving revision 1.13.8.12 diff -u -d -r1.13.8.11 -r1.13.8.12 --- README 13 Oct 2002 05:33:39 -0000 1.13.8.11 +++ README 13 Oct 2002 06:19:35 -0000 1.13.8.12 @@ -68,6 +68,20 @@ errors += lt_dlloader_add (lt_dlloader_next (0), &sys_dld, "dld"); #endir errors += lt_dlloader_add (lt_dlloader_next (0), &presym, "dlpreload"); + + GOOD info on MacOS X bug fixes for libtool 1.4.2 + http://fink.sourceforge.net/doc/porting/libtool.php + this may solve the problems I have been seeing. + + Also see side note: The libltdl library included with all libtool versions + will only work on Darwin when dlcompat is installed. + + dlcompat IS installed on SF compile farm in /sw/include and /sw/lib. + the next problem is this: + lt_dlsym error: dlcompat: dyld: uselib multiple definitions of symbol _module_init + but the libtool manual has some ideas about changing the symbol names + to avoid exactly this problem. + - Solaris: it does not appear to call constructors of global objects that are loaded in a plugin. I expect that if we link the plugins with the correct C++ library and linker options, it will call them. However I'm |
From: Bryce D. <bd...@us...> - 2002-10-13 06:17:14
|
Update of /cvsroot/bochs/bochs/gui In directory usw-pr-cvs1:/tmp/cvs-serv21420/gui Modified Files: Tag: BRANCH_PLUGINS Makefile.in Log Message: - fix VPATH build for x and beos, which have their own special makefile rules Index: Makefile.in =================================================================== RCS file: /cvsroot/bochs/bochs/gui/Makefile.in,v retrieving revision 1.32.2.10 retrieving revision 1.32.2.11 diff -u -d -r1.32.2.10 -r1.32.2.11 --- Makefile.in 10 Oct 2002 20:50:33 -0000 1.32.2.10 +++ Makefile.in 13 Oct 2002 06:17:11 -0000 1.32.2.11 @@ -89,13 +89,13 @@ $(LIBTOOL) $(CXX) -o $@ $(BX_GUI_OBJS) beos.lo: beos.@CPP_SUFFIX@ - $(LIBTOOL) $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(BEOS_CFLAGS) beos.@CPP_SUFFIX@ + $(LIBTOOL) $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(BEOS_CFLAGS) $(srcdir)/beos.@CPP_SUFFIX@ beos.o: beos.@CPP_SUFFIX@ - $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(BEOS_CFLAGS) beos.@CPP_SUFFIX@ + $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(BEOS_CFLAGS) $(srcdir)/beos.@CPP_SUFFIX@ x.lo: x.@CPP_SUFFIX@ - $(LIBTOOL) $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(X_CFLAGS) x.@CPP_SUFFIX@ + $(LIBTOOL) $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(X_CFLAGS) $(srcdir)/x.@CPP_SUFFIX@ x.o: x.@CPP_SUFFIX@ - $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(X_CFLAGS) x.@CPP_SUFFIX@ + $(CXX) -c $(BX_INCDIRS) $(CXXFLAGS) $(LOCAL_CXXFLAGS) $(X_CFLAGS) $(srcdir)/x.@CPP_SUFFIX@ lib%.la: %.lo $(LIBTOOL) $(CXX) -module $< -o $@ -rpath $(PLUGIN_PATH) |
From: Bryce D. <bd...@us...> - 2002-10-13 05:33:42
|
Update of /cvsroot/bochs/bochs In directory usw-pr-cvs1:/tmp/cvs-serv14239 Modified Files: Tag: BRANCH_PLUGINS README Log Message: BRANCH_PLUGINS - add even more to the to-do list Index: README =================================================================== RCS file: /cvsroot/bochs/bochs/README,v retrieving revision 1.13.8.10 retrieving revision 1.13.8.11 diff -u -d -r1.13.8.10 -r1.13.8.11 --- README 10 Oct 2002 21:32:36 -0000 1.13.8.10 +++ README 13 Oct 2002 05:33:39 -0000 1.13.8.11 @@ -48,11 +48,39 @@ - MacOS X: with patch.ltdl, it builds ok but when I try to load plugins it says no symbols defined. 00000000000p[ ] >>PANIC<< dlopen failed for module 'libunmapped.la': no symbols defined + I think lt_dlinit() is setting only one loader, the one for ldpreload. + It must have failed all these conditions and gone right to the + dlpreload loader. + + #if HAVE_LIBDL && !defined(__CYGWIN__) + errors += lt_dlloader_add (lt_dlloader_next (0), &sys_dl, "dlopen"); + #endif + #if HAVE_SHL_LOAD + errors += lt_dlloader_add (lt_dlloader_next (0), &sys_shl, "dlopen"); + #endif + #ifdef __WINDOWS__ + errors += lt_dlloader_add (lt_dlloader_next (0), &sys_wll, "dlopen"); + #endif + #ifdef __BEOS__ + errors += lt_dlloader_add (lt_dlloader_next (0), &sys_bedl, "dlopen"); + #endif + #if HAVE_DLD + errors += lt_dlloader_add (lt_dlloader_next (0), &sys_dld, "dld"); + #endir + errors += lt_dlloader_add (lt_dlloader_next (0), &presym, "dlpreload"); - Solaris: it does not appear to call constructors of global objects that are loaded in a plugin. I expect that if we link the plugins with the correct C++ library and linker options, it will call them. However I'm not sure we should rely on this. Maybe we should structure our plugins so that they do not require any global constructors? +- LTDL has a feature called dlpreload which sort of emulates dlopen + by linking all the modules statically and then emulating dlopen calls. + I don't see any value in this at the moment. If the platform cannot + support dlopen or some equivalent, let's just forget it and disable + plugins entirely. But how are we going to detect when it's going to + resort to dlpreload? Hopefully at configure time we can figure it out. + + - how do we know what plugins should be available when we start Bochs? - idea: have a list of plugin names that is linked into the binary that tells which guis and which devices are guaranteed to be available. @@ -73,15 +101,49 @@ - just attempt to load it and see if it works, using the system's default search routine. On some systems the LD_LIBRARY_PATH variable will control what directories are checked. -- how does the user select which gui to use? Add a bochsrc parameter - "gui_select: sdl". This variable can also be edited in configuration - menus. If there is no user-specified value when it's time to initialize - the gui, it will choose the first gui in the list of available ones. - We just need to put the list in a reasonable order, for example don't +- (assigned to Bryce) how does the user select which gui to use? Add a bochsrc + parameter "gui_select: sdl". This variable can also be edited in + configuration menus. If there is no user-specified value when it's time to + initialize the gui, it will choose the first gui in the list of available + ones. We just need to put the list in a reasonable order, for example don't put nogui first. +- parameters of plugins... It would be nice to move the creation of the + parameters into the code for the device that they affect. However this + would mean that you could not configure any plugin (except for whether to + enable it or not) until you have loaded it. I don't really want to display a + dialog that says "Enable this device? [ ]" and load the plugin and fill in + the rest of the dialog only if they check the box. + - one solution, which I'm not sure that I like: separate the plugin into + two shared objects. libDEVNAME_param that sets up the configuration + parameters only, and libDEVNAME implements the whole thing. The idea would + be that you would load EVERY lib*_param on startup so that you can allow + the user to configure the plugin. Then only the ones that are enabled + would load the remainder of their code. + - alternative: distinguish between plugins known at compile time, and plugins + which the user adds manually through the config interface or bochsrc. + For standard plugins that are compiled in, we can put all the parameter + code into the executable as it is now. For plugins that are added + by the user, there is no doubt about whether to load them or not. They + wouldn't have asked for it, if they didn't want to load it! In that + case, the config parameters can be initialized as soon as the module + is loaded. Once it is loaded, the config interface can display the + parameters so that the device can be configured. + - take a look at the code generated by calls to virtual functions, to check if there's huge overhead that I don't know about. - make plugin CPU??? +- s/Boolean/bx_bool/g. The problem is that Boolean conflicts with MacOS X's + Carbon headers. In the past, we had worked around this by doing + #if BX_WITH_CARBON + typedef unsigned char Boolean; + #else + typedef unsigned int Boolean; + #endif + However this is not good enough. To compile the Carbon GUI I need + Boolean to be 8bits, but all others expect it to be 32bits. + It will be must safer if we just define our own boolean to be Bit8u or + Bit32u. + DONE: - applied patch.plugins5 |
From: Bryce D. <bd...@us...> - 2002-10-13 02:28:09
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen In directory usw-pr-cvs1:/tmp/cvs-serv14239/test6-ltdlopen Modified Files: main.cc Log Message: - just dlinit once, at start of main Index: main.cc =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen/main.cc,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- main.cc 13 Oct 2002 02:26:09 -0000 1.3 +++ main.cc 13 Oct 2002 02:28:06 -0000 1.4 @@ -16,10 +16,6 @@ char buf[512]; sprintf (buf, fmt, name); printf ("loading module from %s\n", buf); - if (lt_dlinit () != 0) { - printf ("lt_dlinit error: %s\n", lt_dlerror ()); - return -1; - } lt_dlhandle handle = lt_dlopen (buf); printf ("handle is %p\n", handle); if (!handle) { @@ -41,6 +37,10 @@ int main (int argc, char **argv) { printf ("start\n"); + if (lt_dlinit () != 0) { + printf ("lt_dlinit error: %s\n", lt_dlerror ()); + return -1; + } printf ("loading module1\n"); // try to load module1 if (load_module ("lib%s.la", "module1") < 0) { |
From: Bryce D. <bd...@us...> - 2002-10-13 02:26:12
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen In directory usw-pr-cvs1:/tmp/cvs-serv13701/test6-ltdlopen Modified Files: main.cc Log Message: - add more specific printf - modules are compiled as lib%s.la, not %s.la. - always load module1 and module2. Then try to load any modules that are mentioned on the command line. Index: main.cc =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen/main.cc,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- main.cc 12 Oct 2002 11:50:28 -0000 1.2 +++ main.cc 13 Oct 2002 02:26:09 -0000 1.3 @@ -15,6 +15,7 @@ { char buf[512]; sprintf (buf, fmt, name); + printf ("loading module from %s\n", buf); if (lt_dlinit () != 0) { printf ("lt_dlinit error: %s\n", lt_dlerror ()); return -1; @@ -42,15 +43,19 @@ printf ("start\n"); printf ("loading module1\n"); // try to load module1 - if (load_module ("%s", argv[1]) < 0) { - printf ("load %s failed\n", argv[1]); - } - if (load_module ("%s.la", "module1") < 0) { + if (load_module ("lib%s.la", "module1") < 0) { printf ("load module1 failed\n"); } - if (load_module ("%s.la", "module2") < 0) { + if (load_module ("lib%s.la", "module2") < 0) { printf ("load module2 failed\n"); } + int arg; + for (int arg=1; arg < argc; arg++) { + if (load_module ("%s", argv[arg]) < 0) { + printf ("load %s failed\n", argv[arg]); + } + } + printf ("stop\n"); return 0; } |
From: Bryce D. <bd...@us...> - 2002-10-13 02:22:40
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen In directory usw-pr-cvs1:/tmp/cvs-serv13071 Modified Files: main.h module1.cc Log Message: - move the extern "C" declaration of module_init into main.h so that it will affect all modules. - modified: main.h module1.cc Index: main.h =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen/main.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- main.h 12 Oct 2002 05:52:15 -0000 1.1 +++ main.h 13 Oct 2002 02:22:37 -0000 1.2 @@ -19,3 +19,7 @@ MAINAPI(extern const char *) version_string; MAINAPI(extern int) register_module (const char *name); +extern "C" { + // this prevents C++ name mangling + void module_init (); +}; Index: module1.cc =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen/module1.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- module1.cc 12 Oct 2002 05:52:15 -0000 1.1 +++ module1.cc 13 Oct 2002 02:22:37 -0000 1.2 @@ -1,11 +1,6 @@ #include <stdio.h> #include "main.h" -extern "C" { - // prevent C++ name mangling - void module_init(); -}; - void module_init () { printf ("module1 init\n"); |
From: Stanislav S. <ssh...@us...> - 2002-10-12 14:14:16
|
Update of /cvsroot/bochs/bochs/cpu In directory usw-pr-cvs1:/tmp/cvs-serv12429/bochs/cpu Modified Files: Tag: BOCHS-SSE cpu.h mmx.cc sse.cc sse2.cc xmm.h Log Message: Index: cpu.h =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/cpu.h,v retrieving revision 1.102.2.2 retrieving revision 1.102.2.3 diff -u -d -r1.102.2.2 -r1.102.2.3 --- cpu.h 12 Oct 2002 13:42:19 -0000 1.102.2.2 +++ cpu.h 12 Oct 2002 14:14:10 -0000 1.102.2.3 @@ -1428,6 +1428,7 @@ #if BX_SUPPORT_SSE || BX_SUPPORT_SSE2 bx_xmm_reg_t xmm[BX_XMM_REGISTERS]; + bx_mxcsr_t mxcsr; #endif // pointer to the address space that this processor uses. @@ -2045,12 +2046,12 @@ /* MMX */ #if BX_SUPPORT_MMX || BX_SUPPORT_SSE || BX_SUPPORT_SSE2 - BX_SMF void PrepareMmxInstruction(void); - BX_SMF void PrintMmxRegisters(void); + BX_SMF void prepareMMX(void); + BX_SMF void printMmxRegisters(void); #endif -#if BX_SUPPORT_SSE - BX_SMF void PrepareSseInstruction(void); +#if BX_SUPPORT_SSE || BX_SUPPORT_SSE2 + BX_SMF void prepareSSE(void); #endif /* SSE */ Index: mmx.cc =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/mmx.cc,v retrieving revision 1.6.6.1 retrieving revision 1.6.6.2 diff -u -d -r1.6.6.1 -r1.6.6.2 --- mmx.cc 11 Oct 2002 17:56:53 -0000 1.6.6.1 +++ mmx.cc 12 Oct 2002 14:14:11 -0000 1.6.6.2 @@ -1,7 +1,30 @@ +///////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2002 Stanislav Shwartsman +// Written by Stanislav Shwartsman <ga...@fi...> +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// + + + #define NEED_CPU_REG_SHORTCUTS 1 #include "bochs.h" #define LOG_THIS BX_CPU_THIS_PTR + #if BX_SUPPORT_MMX || BX_SUPPORT_SSE || BX_SUPPORT_SSE2 #define MMX_REGFILE ((BX_CPU_THIS_PTR the_i387).mmx) @@ -17,7 +40,6 @@ MMX_REGFILE.mmx[index].exp = 0xffff; \ } - static Bit8s SaturateWordSToByteS(Bit16s value) { /* @@ -77,7 +99,7 @@ return (MMXUQ(mmx) >> ((index & 0x3) * 16)) & 0xffff; } -void BX_CPU_C::PrintMmxRegisters(void) +void BX_CPU_C::printMmxRegisters(void) { for(int i=0;i<8;i++) { BxPackedMmxRegister mm = BX_READ_MMX_REG(i); @@ -85,7 +107,7 @@ } } -void BX_CPU_C::PrepareMmxInstruction(void) +void BX_CPU_C::prepareMMX(void) { if(BX_CPU_THIS_PTR cr0.ts) exception(BX_NM_EXCEPTION, 0, 0); @@ -99,11 +121,12 @@ } #endif + /* 0F 60 */ void BX_CPU_C::PUNPCKLBW_PqQd(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), result; Bit32u op2; @@ -138,7 +161,7 @@ void BX_CPU_C::PUNPCKLWD_PqQd(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), result; Bit32u op2; @@ -169,7 +192,7 @@ void BX_CPU_C::PUNPCKLDQ_PqQd(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()); Bit32u op2; @@ -197,7 +220,7 @@ void BX_CPU_C::PACKSSWB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -231,7 +254,7 @@ void BX_CPU_C::PCMPGTB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -265,7 +288,7 @@ void BX_CPU_C::PCMPGTW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -295,7 +318,7 @@ void BX_CPU_C::PCMPGTD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -323,7 +346,7 @@ void BX_CPU_C::PACKUSWB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -357,7 +380,7 @@ void BX_CPU_C::PUNPCKHBW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -391,7 +414,7 @@ void BX_CPU_C::PUNPCKHWD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -421,7 +444,7 @@ void BX_CPU_C::PUNPCKHDQ_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -449,7 +472,7 @@ void BX_CPU_C::PACKSSDW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -479,7 +502,7 @@ void BX_CPU_C::MOVD_PqEd(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op; MMXUD1(op) = 0; @@ -505,7 +528,7 @@ void BX_CPU_C::MOVQ_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op; @@ -530,7 +553,7 @@ void BX_CPU_C::PSHUFW_PqQqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op, result; Bit16u order = i->Ib(); @@ -560,7 +583,7 @@ void BX_CPU_C::PCMPEQB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -594,7 +617,7 @@ void BX_CPU_C::PCMPEQW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -624,7 +647,7 @@ void BX_CPU_C::PCMPEQD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -673,7 +696,7 @@ void BX_CPU_C::MOVD_EdPd(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op = BX_READ_MMX_REG(i->nnn()); @@ -694,7 +717,7 @@ void BX_CPU_C::MOVQ_QqPq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op = BX_READ_MMX_REG(i->nnn()); @@ -715,7 +738,7 @@ void BX_CPU_C::PSRLW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -751,7 +774,7 @@ void BX_CPU_C::PSRLD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -785,7 +808,7 @@ void BX_CPU_C::PSRLQ_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -817,7 +840,7 @@ void BX_CPU_C::PADDQ_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -844,7 +867,7 @@ void BX_CPU_C::PMULLW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -879,7 +902,7 @@ void BX_CPU_C::PSUBUSB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -915,7 +938,7 @@ void BX_CPU_C::PSUBUSW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -947,7 +970,7 @@ void BX_CPU_C::PMINUB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -981,7 +1004,7 @@ void BX_CPU_C::PAND_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1008,7 +1031,7 @@ void BX_CPU_C::PADDUSB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1042,7 +1065,7 @@ void BX_CPU_C::PADDUSW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1072,7 +1095,7 @@ void BX_CPU_C::PMAXUB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1106,7 +1129,7 @@ void BX_CPU_C::PANDN_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1133,7 +1156,7 @@ void BX_CPU_C::PAVGB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1167,7 +1190,7 @@ void BX_CPU_C::PSRAW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1212,7 +1235,7 @@ void BX_CPU_C::PSRAD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1254,7 +1277,7 @@ void BX_CPU_C::PAVGW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1284,7 +1307,7 @@ void BX_CPU_C::PMULHUW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1319,7 +1342,7 @@ void BX_CPU_C::PMULHW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1354,7 +1377,7 @@ void BX_CPU_C::PSUBSB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1388,7 +1411,7 @@ void BX_CPU_C::PSUBSW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1418,7 +1441,7 @@ void BX_CPU_C::PMINSW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1448,7 +1471,7 @@ void BX_CPU_C::POR_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1475,7 +1498,7 @@ void BX_CPU_C::PADDSB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1509,7 +1532,7 @@ void BX_CPU_C::PADDSW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1539,7 +1562,7 @@ void BX_CPU_C::PMAXSW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1569,7 +1592,7 @@ void BX_CPU_C::PXOR_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1596,7 +1619,7 @@ void BX_CPU_C::PSLLW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1632,7 +1655,7 @@ void BX_CPU_C::PSLLD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1666,7 +1689,7 @@ void BX_CPU_C::PSLLQ_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1698,7 +1721,7 @@ void BX_CPU_C::PMULUDQ_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1725,7 +1748,7 @@ void BX_CPU_C::PMADDWD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; @@ -1764,7 +1787,7 @@ void BX_CPU_C::PSADBW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2, result; Bit16u temp = 0; @@ -1801,7 +1824,7 @@ void BX_CPU_C::PSUBB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1835,7 +1858,7 @@ void BX_CPU_C::PSUBW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1865,7 +1888,7 @@ void BX_CPU_C::PSUBD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1893,7 +1916,7 @@ void BX_CPU_C::PSUBQ_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1920,7 +1943,7 @@ void BX_CPU_C::PADDB_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1955,7 +1978,7 @@ void BX_CPU_C::PADDW_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -1985,7 +2008,7 @@ void BX_CPU_C::PADDD_PqQq(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->nnn()), op2; @@ -2013,7 +2036,7 @@ void BX_CPU_C::PSRLW_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()); Bit8u shift = i->Ib(); @@ -2039,7 +2062,7 @@ void BX_CPU_C::PSRAW_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()), result; Bit8u shift = i->Ib(); @@ -2074,7 +2097,7 @@ void BX_CPU_C::PSLLW_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()); Bit8u shift = i->Ib(); @@ -2101,7 +2124,7 @@ void BX_CPU_C::PSRLD_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()); Bit8u shift = i->Ib(); @@ -2125,7 +2148,7 @@ void BX_CPU_C::PSRAD_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()), result; Bit8u shift = i->Ib(); @@ -2157,7 +2180,7 @@ void BX_CPU_C::PSLLD_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()); Bit8u shift = i->Ib(); @@ -2181,7 +2204,7 @@ void BX_CPU_C::PSRLQ_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()); Bit8u shift = i->Ib(); @@ -2205,7 +2228,7 @@ void BX_CPU_C::PSLLQ_PqIb(bxInstruction_c *i) { #if BX_SUPPORT_MMX - BX_CPU_THIS_PTR PrepareMmxInstruction(); + BX_CPU_THIS_PTR prepareMMX(); BxPackedMmxRegister op1 = BX_READ_MMX_REG(i->rm()); Bit8u shift = i->Ib(); Index: sse.cc =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/sse.cc,v retrieving revision 1.2.2.2 retrieving revision 1.2.2.3 diff -u -d -r1.2.2.2 -r1.2.2.3 --- sse.cc 12 Oct 2002 13:42:19 -0000 1.2.2.2 +++ sse.cc 12 Oct 2002 14:14:11 -0000 1.2.2.3 @@ -1,9 +1,32 @@ +///////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2002 Stanislav Shwartsman +// Written by Stanislav Shwartsman <ga...@fi...> +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// + + + #define NEED_CPU_REG_SHORTCUTS 1 #include "bochs.h" #define LOG_THIS BX_CPU_THIS_PTR #if BX_SUPPORT_SSE -void BX_CPU_C::PrepareSseInstruction(void) + +void BX_CPU_C::prepareSSE(void) { if(BX_CPU_THIS_PTR cr0.ts) exception(BX_NM_EXCEPTION, 0, 0); @@ -14,27 +37,34 @@ if(! (BX_CPU_THIS_PTR cr4.get_OSXMMEXCPT())) exception(BX_UD_EXCEPTION, 0, 0); } -#endif +#define BX_MXCSR_REGISTER (BX_CPU_THIS_PTR mxcsr.mxcsr) + +#endif +/* 0F AE Grp15 010 */ void BX_CPU_C::LDMXCSR(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); - BX_PANIC(("SSE Instruction LDMXCSR still not implemented")); + read_virtual_dword(i->seg(), RMAddr(i), &BX_MXCSR_REGISTER); + if(BX_MXCSR_REGISTER & ~MXCSR_MASK) + exception(BX_GP_EXCEPTION, 0, 0); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } +/* 0F AE Grp15 011 */ void BX_CPU_C::STMXCSR(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); - BX_PANIC(("SSE Instruction STMXCSR still not implemented")); + Bit32u mxcsr = BX_MXCSR_REGISTER & MXCSR_MASK; + write_virtual_dword(i->seg(), RMAddr(i), &mxcsr); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); @@ -64,7 +94,7 @@ void BX_CPU_C::MOVUPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVUPS_VpsWps still not implemented")); #else @@ -76,7 +106,7 @@ void BX_CPU_C::MOVSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVSS_VssWss still not implemented")); #else @@ -88,7 +118,7 @@ void BX_CPU_C::MOVUPS_WpsVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVUPS_WpsVps still not implemented")); #else @@ -100,7 +130,7 @@ void BX_CPU_C::MOVSS_WssVss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVSS_WssVss still not implemented")); #else @@ -112,7 +142,7 @@ void BX_CPU_C::MOVLPS_VpsMq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVLPS_VpsMq still not implemented")); #else @@ -124,7 +154,7 @@ void BX_CPU_C::MOVLPS_MqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVLPS_MqVps still not implemented")); #else @@ -136,7 +166,7 @@ void BX_CPU_C::UNPCKLPS_VpsWq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction UNPCKLPS_VpsWq still not implemented")); #else @@ -148,7 +178,7 @@ void BX_CPU_C::UNPCKHPS_VpsWq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction UNPCKHPS_VpsWq still not implemented")); #else @@ -160,7 +190,7 @@ void BX_CPU_C::MOVHPS_VpsMq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVHPS_VpsMq still not implemented")); #else @@ -172,7 +202,7 @@ void BX_CPU_C::MOVHPS_MqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVHPS_MqVps still not implemented")); #else @@ -184,7 +214,7 @@ void BX_CPU_C::MOVAPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVAPS_VpsWps still not implemented")); #else @@ -196,7 +226,7 @@ void BX_CPU_C::MOVAPS_WpsVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVAPS_WpsVps still not implemented")); #else @@ -208,7 +238,7 @@ void BX_CPU_C::CVTPI2PS_VpsQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CVTPI2PS_VpsQq still not implemented")); #else @@ -220,7 +250,7 @@ void BX_CPU_C::CVTSI2SS_VssEd(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CVTSI2SS_VssEd still not implemented")); #else @@ -232,7 +262,7 @@ void BX_CPU_C::MOVNTPS_MdqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVNTPS_MdqVps still not implemented")); #else @@ -244,7 +274,7 @@ void BX_CPU_C::CVTTPS2PI_PqWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CVTTPS2PI_PqWps still not implemented")); #else @@ -256,7 +286,7 @@ void BX_CPU_C::CVTTSS2SI_GdWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CVTTSS2SI_GdWss still not implemented")); #else @@ -268,7 +298,7 @@ void BX_CPU_C::CVTPS2PI_PqWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CVTPS2PI_PqWps still not implemented")); #else @@ -280,7 +310,7 @@ void BX_CPU_C::CVTSS2SI_GdWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CVTSS2SI_GdWss still not implemented")); #else @@ -292,7 +322,7 @@ void BX_CPU_C::UCOMISS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction UCOMISS_VssWss still not implemented")); #else @@ -304,7 +334,7 @@ void BX_CPU_C::COMISS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction COMISS_VpsWps still not implemented")); #else @@ -316,7 +346,7 @@ void BX_CPU_C::MOVMSKPS_GdVRps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MOVMSKPS_GdVRps still not implemented")); #else @@ -328,7 +358,7 @@ void BX_CPU_C::SQRTPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction SQRTPS_VpsWps still not implemented")); #else @@ -340,7 +370,7 @@ void BX_CPU_C::SQRTSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction SQRTSS_VssWss still not implemented")); #else @@ -352,7 +382,7 @@ void BX_CPU_C::RSQRTPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction RSQRTPS_VpsWps still not implemented")); #else @@ -364,7 +394,7 @@ void BX_CPU_C::RSQRTSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction RSQRTSS_VssWss still not implemented")); #else @@ -376,7 +406,7 @@ void BX_CPU_C::RCPPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction RCPPS_VpsWps still not implemented")); #else @@ -388,7 +418,7 @@ void BX_CPU_C::RCPSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction RCPSS_VssWss still not implemented")); #else @@ -400,7 +430,7 @@ void BX_CPU_C::ANDPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction ANDPS_VpsWps still not implemented")); #else @@ -412,7 +442,7 @@ void BX_CPU_C::ANDNPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction ANDNPS_VpsWps still not implemented")); #else @@ -424,7 +454,7 @@ void BX_CPU_C::ORPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction ORPS_VpsWps still not implemented")); #else @@ -436,7 +466,7 @@ void BX_CPU_C::XORPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction XORPS_VpsWps still not implemented")); #else @@ -448,7 +478,7 @@ void BX_CPU_C::ADDPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction ADDPS_VpsWps still not implemented")); #else @@ -460,7 +490,7 @@ void BX_CPU_C::ADDSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction ADDSS_VssWss still not implemented")); #else @@ -472,7 +502,7 @@ void BX_CPU_C::MULPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MULPS_VpsWps still not implemented")); #else @@ -484,7 +514,7 @@ void BX_CPU_C::MULSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MULSS_VssWss still not implemented")); #else @@ -496,7 +526,7 @@ void BX_CPU_C::SUBPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction SUBPS_VpsWps still not implemented")); #else @@ -508,7 +538,7 @@ void BX_CPU_C::SUBSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction SUBSS_VssWss still not implemented")); #else @@ -520,7 +550,7 @@ void BX_CPU_C::MINPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MINPS_VpsWps still not implemented")); #else @@ -532,7 +562,7 @@ void BX_CPU_C::MINSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MINSS_VssWss still not implemented")); #else @@ -544,7 +574,7 @@ void BX_CPU_C::DIVPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction DIVPS_VpsWps still not implemented")); #else @@ -556,7 +586,7 @@ void BX_CPU_C::DIVSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction DIVSS_VssWss still not implemented")); #else @@ -568,7 +598,7 @@ void BX_CPU_C::MAXPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MAXPS_VpsWps still not implemented")); #else @@ -580,7 +610,7 @@ void BX_CPU_C::MAXSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction MAXSS_VssWss still not implemented")); #else @@ -592,7 +622,7 @@ void BX_CPU_C::PSHUFLW_VqWqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction PSHUFLW_VqWqIb still not implemented")); #else @@ -604,7 +634,7 @@ void BX_CPU_C::CMPPS_VpsWpsIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CMPPS_VpsWpsIb still not implemented")); #else @@ -616,7 +646,7 @@ void BX_CPU_C::CMPSS_VssWssIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction CMPSS_VssWssIb still not implemented")); #else @@ -628,7 +658,7 @@ void BX_CPU_C::PINSRW_PqEdIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction PINSRW_PqEdIb still not implemented")); #else @@ -640,7 +670,7 @@ void BX_CPU_C::PEXTRW_PqEdIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction PEXTRW_PqEdIb still not implemented")); #else @@ -652,7 +682,7 @@ void BX_CPU_C::SHUFPS_VpsWpsIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction SHUFPS_VpsWpsIb still not implemented")); #else @@ -664,7 +694,7 @@ void BX_CPU_C::PMOVMSKB_GdPRq(bxInstruction_c *i) { #if BX_SUPPORT_SSE - BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_CPU_THIS_PTR prepareSSE(); BX_PANIC(("SSE Instruction PMOVMSKB_GdPRq still not implemented")); #else Index: sse2.cc =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/sse2.cc,v retrieving revision 1.2.2.2 retrieving revision 1.2.2.3 diff -u -d -r1.2.2.2 -r1.2.2.3 --- sse2.cc 12 Oct 2002 13:42:19 -0000 1.2.2.2 +++ sse2.cc 12 Oct 2002 14:14:11 -0000 1.2.2.3 @@ -1,3 +1,25 @@ +///////////////////////////////////////////////////////////////////////// +// +// Copyright (c) 2002 Stanislav Shwartsman +// Written by Stanislav Shwartsman <ga...@fi...> +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// + + + #define NEED_CPU_REG_SHORTCUTS 1 #include "bochs.h" #define LOG_THIS BX_CPU_THIS_PTR Index: xmm.h =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/Attic/xmm.h,v retrieving revision 1.1.2.2 retrieving revision 1.1.2.3 diff -u -d -r1.1.2.2 -r1.1.2.3 --- xmm.h 12 Oct 2002 13:42:19 -0000 1.1.2.2 +++ xmm.h 12 Oct 2002 14:14:11 -0000 1.1.2.3 @@ -57,7 +57,7 @@ */ struct bx_mxcsr_t { - Bit32u mxcsr; /* define bitfields later */ + Bit32u mxcsr; /* define bitfields accessors later */ }; #define MXCSR_MASK 0x00FF /* reset reserved bits */ |
From: Stanislav S. <ssh...@us...> - 2002-10-12 13:42:22
|
Update of /cvsroot/bochs/bochs/cpu In directory usw-pr-cvs1:/tmp/cvs-serv4460/bochs/cpu Modified Files: Tag: BOCHS-SSE cpu.h sse.cc sse2.cc xmm.h Log Message: Index: cpu.h =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/cpu.h,v retrieving revision 1.102.2.1 retrieving revision 1.102.2.2 diff -u -d -r1.102.2.1 -r1.102.2.2 --- cpu.h 11 Oct 2002 17:56:52 -0000 1.102.2.1 +++ cpu.h 12 Oct 2002 13:42:19 -0000 1.102.2.2 @@ -1288,6 +1288,10 @@ #include "cpu/i387.h" +#if BX_SUPPORT_SSE || BX_SUPPORT_SSE2 +#include "cpu/xmm.h" +#endif + class BX_CPU_C : public logfunctions { public: // for now... @@ -1421,6 +1425,10 @@ #endif i387_t the_i387; + +#if BX_SUPPORT_SSE || BX_SUPPORT_SSE2 + bx_xmm_reg_t xmm[BX_XMM_REGISTERS]; +#endif // pointer to the address space that this processor uses. BX_MEM_C *mem; Index: sse.cc =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/sse.cc,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -u -d -r1.2.2.1 -r1.2.2.2 --- sse.cc 12 Oct 2002 13:26:59 -0000 1.2.2.1 +++ sse.cc 12 Oct 2002 13:42:19 -0000 1.2.2.2 @@ -16,9 +16,56 @@ } #endif + +void BX_CPU_C::LDMXCSR(bxInstruction_c *i) +{ +#if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + + BX_PANIC(("SSE Instruction LDMXCSR still not implemented")); +#else + BX_INFO(("SSE instruction set not supported in current configuration")); + UndefinedOpcode(i); +#endif +} + +void BX_CPU_C::STMXCSR(bxInstruction_c *i) +{ +#if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + + BX_PANIC(("SSE Instruction STMXCSR still not implemented")); +#else + BX_INFO(("SSE instruction set not supported in current configuration")); + UndefinedOpcode(i); +#endif +} + +void BX_CPU_C::FXSAVE(bxInstruction_c *i) +{ +#if BX_SUPPORT_SSE + BX_PANIC(("SSE Instruction FXSAVE still not implemented")); +#else + BX_INFO(("SSE instruction set not supported in current configuration")); + UndefinedOpcode(i); +#endif +} + +void BX_CPU_C::FXRSTOR(bxInstruction_c *i) +{ +#if BX_SUPPORT_SSE + BX_PANIC(("SSE Instruction FXRSTOR still not implemented")); +#else + BX_INFO(("SSE instruction set not supported in current configuration")); + UndefinedOpcode(i); +#endif +} + void BX_CPU_C::MOVUPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVUPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -41,6 +88,8 @@ void BX_CPU_C::MOVUPS_WpsVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVUPS_WpsVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -51,6 +100,8 @@ void BX_CPU_C::MOVSS_WssVss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVSS_WssVss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -61,6 +112,8 @@ void BX_CPU_C::MOVLPS_VpsMq(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVLPS_VpsMq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -71,6 +124,8 @@ void BX_CPU_C::MOVLPS_MqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVLPS_MqVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -81,6 +136,8 @@ void BX_CPU_C::UNPCKLPS_VpsWq(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction UNPCKLPS_VpsWq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -91,6 +148,8 @@ void BX_CPU_C::UNPCKHPS_VpsWq(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction UNPCKHPS_VpsWq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -101,6 +160,8 @@ void BX_CPU_C::MOVHPS_VpsMq(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVHPS_VpsMq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -111,6 +172,8 @@ void BX_CPU_C::MOVHPS_MqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVHPS_MqVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -121,6 +184,8 @@ void BX_CPU_C::MOVAPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVAPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -131,6 +196,8 @@ void BX_CPU_C::MOVAPS_WpsVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVAPS_WpsVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -141,6 +208,8 @@ void BX_CPU_C::CVTPI2PS_VpsQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CVTPI2PS_VpsQq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -151,6 +220,8 @@ void BX_CPU_C::CVTSI2SS_VssEd(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CVTSI2SS_VssEd still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -161,6 +232,8 @@ void BX_CPU_C::MOVNTPS_MdqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVNTPS_MdqVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -171,6 +244,8 @@ void BX_CPU_C::CVTTPS2PI_PqWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CVTTPS2PI_PqWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -181,6 +256,8 @@ void BX_CPU_C::CVTTSS2SI_GdWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CVTTSS2SI_GdWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -191,6 +268,8 @@ void BX_CPU_C::CVTPS2PI_PqWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CVTPS2PI_PqWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -201,6 +280,8 @@ void BX_CPU_C::CVTSS2SI_GdWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CVTSS2SI_GdWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -211,6 +292,8 @@ void BX_CPU_C::UCOMISS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction UCOMISS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -221,6 +304,8 @@ void BX_CPU_C::COMISS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction COMISS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -231,6 +316,8 @@ void BX_CPU_C::MOVMSKPS_GdVRps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MOVMSKPS_GdVRps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -241,6 +328,8 @@ void BX_CPU_C::SQRTPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction SQRTPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -251,6 +340,8 @@ void BX_CPU_C::SQRTSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction SQRTSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -261,6 +352,8 @@ void BX_CPU_C::RSQRTPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction RSQRTPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -271,6 +364,8 @@ void BX_CPU_C::RSQRTSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction RSQRTSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -281,6 +376,8 @@ void BX_CPU_C::RCPPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction RCPPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -291,6 +388,8 @@ void BX_CPU_C::RCPSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction RCPSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -301,6 +400,8 @@ void BX_CPU_C::ANDPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction ANDPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -311,6 +412,8 @@ void BX_CPU_C::ANDNPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction ANDNPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -321,6 +424,8 @@ void BX_CPU_C::ORPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction ORPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -331,6 +436,8 @@ void BX_CPU_C::XORPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction XORPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -341,6 +448,8 @@ void BX_CPU_C::ADDPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction ADDPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -351,6 +460,8 @@ void BX_CPU_C::ADDSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction ADDSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -361,6 +472,8 @@ void BX_CPU_C::MULPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MULPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -371,6 +484,8 @@ void BX_CPU_C::MULSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MULSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -381,6 +496,8 @@ void BX_CPU_C::SUBPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction SUBPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -391,6 +508,8 @@ void BX_CPU_C::SUBSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction SUBSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -401,6 +520,8 @@ void BX_CPU_C::MINPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MINPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -411,6 +532,8 @@ void BX_CPU_C::MINSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MINSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -421,6 +544,8 @@ void BX_CPU_C::DIVPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction DIVPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -431,6 +556,8 @@ void BX_CPU_C::DIVSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction DIVSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -441,6 +568,8 @@ void BX_CPU_C::MAXPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MAXPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -451,6 +580,8 @@ void BX_CPU_C::MAXSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction MAXSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -461,6 +592,8 @@ void BX_CPU_C::PSHUFLW_VqWqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction PSHUFLW_VqWqIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -471,6 +604,8 @@ void BX_CPU_C::CMPPS_VpsWpsIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CMPPS_VpsWpsIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -481,6 +616,8 @@ void BX_CPU_C::CMPSS_VssWssIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction CMPSS_VssWssIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -491,6 +628,8 @@ void BX_CPU_C::PINSRW_PqEdIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction PINSRW_PqEdIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -501,6 +640,8 @@ void BX_CPU_C::PEXTRW_PqEdIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction PEXTRW_PqEdIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -511,6 +652,8 @@ void BX_CPU_C::SHUFPS_VpsWpsIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction SHUFPS_VpsWpsIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -521,6 +664,8 @@ void BX_CPU_C::PMOVMSKB_GdPRq(bxInstruction_c *i) { #if BX_SUPPORT_SSE + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE Instruction PMOVMSKB_GdPRq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); @@ -542,46 +687,6 @@ { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MASKMOVQ_PqPRq still not implemented")); -#else - BX_INFO(("SSE instruction set not supported in current configuration")); - UndefinedOpcode(i); -#endif -} - -void BX_CPU_C::LDMXCSR(bxInstruction_c *i) -{ -#if BX_SUPPORT_SSE - BX_PANIC(("SSE Instruction LDMXCSR still not implemented")); -#else - BX_INFO(("SSE instruction set not supported in current configuration")); - UndefinedOpcode(i); -#endif -} - -void BX_CPU_C::STMXCSR(bxInstruction_c *i) -{ -#if BX_SUPPORT_SSE - BX_PANIC(("SSE Instruction STMXCSR still not implemented")); -#else - BX_INFO(("SSE instruction set not supported in current configuration")); - UndefinedOpcode(i); -#endif -} - -void BX_CPU_C::FXSAVE(bxInstruction_c *i) -{ -#if BX_SUPPORT_SSE - BX_PANIC(("SSE Instruction FXSAVE still not implemented")); -#else - BX_INFO(("SSE instruction set not supported in current configuration")); - UndefinedOpcode(i); -#endif -} - -void BX_CPU_C::FXRSTOR(bxInstruction_c *i) -{ -#if BX_SUPPORT_SSE - BX_PANIC(("SSE Instruction FXRSTOR still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); Index: sse2.cc =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/sse2.cc,v retrieving revision 1.2.2.1 retrieving revision 1.2.2.2 diff -u -d -r1.2.2.1 -r1.2.2.2 --- sse2.cc 12 Oct 2002 13:26:59 -0000 1.2.2.1 +++ sse2.cc 12 Oct 2002 13:42:19 -0000 1.2.2.2 @@ -5,6 +5,8 @@ void BX_CPU_C::MOVUPD_VpdWpd(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 + BX_CPU_THIS_PTR PrepareSSEInstruction(); + BX_PANIC(("SSE2 Instruction MOVUPD_VpdWpd still not implemented")); #else BX_INFO(("SSE2 instruction set not supported in current configuration")); @@ -15,6 +17,8 @@ void BX_CPU_C::MOVSD_VsdWsd(bxInstruction_c *i) { [...1210 lines suppressed...] #else BX_INFO(("SSE2 instruction set not supported in current configuration")); @@ -1365,6 +1637,8 @@ void BX_CPU_C::PSLLQ_PdqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE2 Instruction PSLLQ_PdqIb still not implemented")); #else BX_INFO(("SSE2 instruction set not supported in current configuration")); @@ -1375,6 +1649,8 @@ void BX_CPU_C::PSLLDQ_WdqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 + BX_CPU_THIS_PTR PrepareSseInstruction(); + BX_PANIC(("SSE2 Instruction PSLLDQ_WdqIb still not implemented")); #else BX_INFO(("SSE2 instruction set not supported in current configuration")); Index: xmm.h =================================================================== RCS file: /cvsroot/bochs/bochs/cpu/Attic/xmm.h,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -d -r1.1.2.1 -r1.1.2.2 --- xmm.h 12 Oct 2002 12:52:02 -0000 1.1.2.1 +++ xmm.h 12 Oct 2002 13:42:19 -0000 1.1.2.2 @@ -3,6 +3,9 @@ /* XMM REGISTER */ +typedef Bit32u Float32; +typedef Bit64u Float64; + typedef union bx_xmm_reg_t { Bit8s s8[16]; Bit16s s16[8]; @@ -16,6 +19,11 @@ Float64 f64[2]; } BxPackedXmmRegister; +#ifdef BX_SUPPORT_X86_64 +# define BX_XMM_REGISTERS 16 +#else +# define BX_XMM_REGISTERS 8 +#endif /* MXCSR REGISTER */ @@ -52,7 +60,7 @@ Bit32u mxcsr; /* define bitfields later */ }; -#define MXCSR_MASK 0x00ff /* reset reserved bits */ -#define MXCSR_RESET 0x1f80 /* reset value of the MXCSR register */ +#define MXCSR_MASK 0x00FF /* reset reserved bits */ +#define MXCSR_RESET 0x1F80 /* reset value of the MXCSR register */ #endif |
From: Stanislav S. <ssh...@us...> - 2002-10-12 13:27:25
|
Update of /cvsroot/bochs/bochs/cpu In directory usw-pr-cvs1:/tmp/cvs-serv1044 Added Files: Tag: BOCHS-SSE sse.cc sse2.cc Log Message: --- NEW FILE: sse.cc --- #define NEED_CPU_REG_SHORTCUTS 1 #include "bochs.h" #define LOG_THIS BX_CPU_THIS_PTR #if BX_SUPPORT_SSE void BX_CPU_C::PrepareSseInstruction(void) { if(BX_CPU_THIS_PTR cr0.ts) exception(BX_NM_EXCEPTION, 0, 0); if(BX_CPU_THIS_PTR cr0.em) exception(BX_UD_EXCEPTION, 0, 0); if(! (BX_CPU_THIS_PTR cr4.get_OSXMMEXCPT())) exception(BX_UD_EXCEPTION, 0, 0); } #endif void BX_CPU_C::MOVUPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVUPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_CPU_THIS_PTR PrepareSseInstruction(); BX_PANIC(("SSE Instruction MOVSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVUPS_WpsVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVUPS_WpsVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVSS_WssVss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVSS_WssVss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVLPS_VpsMq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVLPS_VpsMq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVLPS_MqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVLPS_MqVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::UNPCKLPS_VpsWq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction UNPCKLPS_VpsWq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::UNPCKHPS_VpsWq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction UNPCKHPS_VpsWq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVHPS_VpsMq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVHPS_VpsMq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVHPS_MqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVHPS_MqVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVAPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVAPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVAPS_WpsVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVAPS_WpsVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CVTPI2PS_VpsQq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CVTPI2PS_VpsQq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CVTSI2SS_VssEd(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CVTSI2SS_VssEd still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVNTPS_MdqVps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVNTPS_MdqVps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CVTTPS2PI_PqWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CVTTPS2PI_PqWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CVTTSS2SI_GdWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CVTTSS2SI_GdWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CVTPS2PI_PqWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CVTPS2PI_PqWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CVTSS2SI_GdWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CVTSS2SI_GdWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::UCOMISS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction UCOMISS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::COMISS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction COMISS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVMSKPS_GdVRps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVMSKPS_GdVRps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::SQRTPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction SQRTPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::SQRTSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction SQRTSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::RSQRTPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction RSQRTPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::RSQRTSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction RSQRTSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::RCPPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction RCPPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::RCPSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction RCPSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::ANDPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction ANDPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::ANDNPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction ANDNPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::ORPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction ORPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::XORPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction XORPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::ADDPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction ADDPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::ADDSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction ADDSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MULPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MULPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MULSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MULSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::SUBPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction SUBPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::SUBSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction SUBSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MINPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MINPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MINSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MINSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::DIVPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction DIVPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::DIVSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction DIVSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MAXPS_VpsWps(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MAXPS_VpsWps still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MAXSS_VssWss(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MAXSS_VssWss still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::PSHUFLW_VqWqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction PSHUFLW_VqWqIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CMPPS_VpsWpsIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CMPPS_VpsWpsIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::CMPSS_VssWssIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction CMPSS_VssWssIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::PINSRW_PqEdIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction PINSRW_PqEdIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::PEXTRW_PqEdIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction PEXTRW_PqEdIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::SHUFPS_VpsWpsIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction SHUFPS_VpsWpsIb still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::PMOVMSKB_GdPRq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction PMOVMSKB_GdPRq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVNTQ_MqPq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MOVNTQ_MqPq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MASKMOVQ_PqPRq(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction MASKMOVQ_PqPRq still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::LDMXCSR(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction LDMXCSR still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::STMXCSR(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction STMXCSR still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::FXSAVE(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction FXSAVE still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::FXRSTOR(bxInstruction_c *i) { #if BX_SUPPORT_SSE BX_PANIC(("SSE Instruction FXRSTOR still not implemented")); #else BX_INFO(("SSE instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } --- NEW FILE: sse2.cc --- #define NEED_CPU_REG_SHORTCUTS 1 #include "bochs.h" #define LOG_THIS BX_CPU_THIS_PTR void BX_CPU_C::MOVUPD_VpdWpd(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 BX_PANIC(("SSE2 Instruction MOVUPD_VpdWpd still not implemented")); #else BX_INFO(("SSE2 instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::MOVSD_VsdWsd(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 BX_PANIC(("SSE2 Instruction MOVSD_VsdWsd still not implemented")); #else [...1344 lines suppressed...] void BX_CPU_C::PSLLQ_PdqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 BX_PANIC(("SSE2 Instruction PSLLQ_PdqIb still not implemented")); #else BX_INFO(("SSE2 instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } void BX_CPU_C::PSLLDQ_WdqIb(bxInstruction_c *i) { #if BX_SUPPORT_SSE2 BX_PANIC(("SSE2 Instruction PSLLDQ_WdqIb still not implemented")); #else BX_INFO(("SSE2 instruction set not supported in current configuration")); UndefinedOpcode(i); #endif } |
From: Volker R. <vru...@us...> - 2002-10-12 13:10:13
|
Update of /cvsroot/bochs/bochs/gui In directory usw-pr-cvs1:/tmp/cvs-serv29866 Modified Files: sdl.cc Log Message: - keysym for the "AltGr" key added (SDLK_RMETA = BX_KEY_ALT_R) Index: sdl.cc =================================================================== RCS file: /cvsroot/bochs/bochs/gui/sdl.cc,v retrieving revision 1.26 retrieving revision 1.27 diff -u -d -r1.26 -r1.27 --- sdl.cc 10 Oct 2002 18:02:08 -0000 1.26 +++ sdl.cc 12 Oct 2002 13:10:09 -0000 1.27 @@ -541,7 +541,7 @@ case SDLK_LCTRL: return BX_KEY_CTRL_L; case SDLK_RALT: return BX_KEY_ALT_R; case SDLK_LALT: return BX_KEY_ALT_L; -// case SDLK_RMETA: return BX_KEY_RMETA; + case SDLK_RMETA: return BX_KEY_ALT_R; // case SDLK_LMETA: return BX_KEY_LMETA; case SDLK_LSUPER: return BX_KEY_WIN_L; case SDLK_RSUPER: return BX_KEY_WIN_R; |
From: Volker R. <vru...@us...> - 2002-10-12 13:09:35
|
Update of /cvsroot/bochs/bochs/iodev In directory usw-pr-cvs1:/tmp/cvs-serv29712 Modified Files: serial.cc Log Message: - check for the platform __BEOS__ instead of the gui - fixed a warning Index: serial.cc =================================================================== RCS file: /cvsroot/bochs/bochs/iodev/serial.cc,v retrieving revision 1.28 retrieving revision 1.29 diff -u -d -r1.28 -r1.29 --- serial.cc 6 Oct 2002 19:38:53 -0000 1.28 +++ serial.cc 12 Oct 2002 13:09:32 -0000 1.29 @@ -726,9 +726,9 @@ BX_SER_THIS raw->transmit(BX_SER_THIS s[0].txbuffer); #endif #if defined(SERIAL_ENABLE) - { char *s = (char *)(BX_SER_THIS s[0].txbuffer); - BX_DEBUG(("write: '%c'", BX_SER_THIS s[0].txbuffer)); - } + { + BX_DEBUG(("write: '%c'", BX_SER_THIS s[0].txbuffer)); + } if (tty_id >= 0) write(tty_id, (bx_ptr_t) & BX_SER_THIS s[0].txbuffer, 1); #endif } @@ -752,7 +752,7 @@ bx_serial_c::rx_timer(void) { #if BX_HAVE_SELECT -#if BX_WITH_BEOS == 0 +#ifndef __BEOS__ struct timeval tval; fd_set fds; #endif @@ -761,7 +761,7 @@ unsigned char chbuf = 0; #if BX_HAVE_SELECT -#if BX_WITH_BEOS == 0 +#ifndef __BEOS__ tval.tv_sec = 0; tval.tv_usec = 0; |
From: Stanislav S. <ssh...@us...> - 2002-10-12 12:52:08
|
Update of /cvsroot/bochs/bochs/cpu In directory usw-pr-cvs1:/tmp/cvs-serv25705 Added Files: Tag: BOCHS-SSE xmm.h Log Message: Added xmm register definition Added cxcsr register definition --- NEW FILE: xmm.h --- #ifndef BX_SSE_EXTENSIONS_H #define BX_SSE_EXTENSIONS_H /* XMM REGISTER */ typedef union bx_xmm_reg_t { Bit8s s8[16]; Bit16s s16[8]; Bit32s s32[4]; Bit64s s64[2]; Bit8u u8[16]; Bit16u u16[8]; Bit32u u32[4]; Bit64u u64[2]; Float32 f32[4]; Float64 f64[2]; } BxPackedXmmRegister; /* MXCSR REGISTER */ /* 31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16 * ==|==|=====|==|==|==|==|==|==|==|==|==|==|==|== (reserved) * 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0| 0 * * 15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0 * ==|==|=====|==|==|==|==|==|==|==|==|==|==|==|== * FZ| R C |PM|UM|OM|ZM|DM|IM|DZ|PE|UE|OE|ZE|DE|IE */ /* MXCSR REGISTER FIELDS DESCRIPTION */ /* * IE 0 Invalid-Operation Exception 0 * DE 1 Denormalized-Operand Exception 0 * ZE 2 Zero-Divide Exception 0 * OE 3 Overflow Exception 0 * UE 4 Underflow Exception 0 * PE 5 Precision Exception 0 * DZ 6 Denormals are Zeros 0 * IM 7 Invalid-Operation Exception Mask 1 * DM 8 Denormalized-Operand Exception Mask 1 * ZM 9 Zero-Divide Exception Mask 1 * OM 10 Overflow Exception Mask 1 * UM 11 Underflow Exception Mask 1 * PM 12 Precision Exception Mask 1 * RC 13-14 Floating-Point Rounding Control 00 * FZ 15 Flush-to-Zero for Masked Underflow 0 */ struct bx_mxcsr_t { Bit32u mxcsr; /* define bitfields later */ }; #define MXCSR_MASK 0x00ff /* reset reserved bits */ #define MXCSR_RESET 0x1f80 /* reset value of the MXCSR register */ #endif |
From: Bryce D. <bd...@us...> - 2002-10-12 12:29:38
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen In directory usw-pr-cvs1:/tmp/cvs-serv20099/test6-ltdlopen Modified Files: Makefile.in Log Message: - put INCLTDL and LIBLTDL substitution variables into the Makefile - this requires a correct setting for top_srcdir Index: Makefile.in =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen/Makefile.in,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile.in 12 Oct 2002 11:49:22 -0000 1.3 +++ Makefile.in 12 Oct 2002 12:29:35 -0000 1.4 @@ -1,11 +1,12 @@ top_builddir = .. +top_srcdir = @srcdir@/.. srcdir = @srcdir@ VPATH = @srcdir@ CXX=@CXX@ -CXXFLAGS=@CXXFLAGS@ +CXXFLAGS=@CXXFLAGS@ @INCLTDL@ LDFLAGS=@LDFLAGS@ @LT_LDFLAGS@ -LIBS=@LIBS@ +LIBS=@LIBS@ @LIBLTDL@ LIBTOOL=@LIBTOOL@ RPATH=`pwd`/lib |
From: Bryce D. <bd...@us...> - 2002-10-12 12:00:47
|
Update of /cvsroot/bochs/bochs-testing/plugin-test In directory usw-pr-cvs1:/tmp/cvs-serv9541 Modified Files: Makefile.in Log Message: - oops. change order so that things other than libltdl get built as well. Index: Makefile.in =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/Makefile.in,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- Makefile.in 12 Oct 2002 11:57:33 -0000 1.4 +++ Makefile.in 12 Oct 2002 12:00:44 -0000 1.5 @@ -1,10 +1,10 @@ SUBDIRS = test1-static test2-dynamic test3-twomodules test4-interdep test5-execsymbols test6-ltdlopen -build_libltdl: - cd libltdl; make all - all: build_libltdl for i in $(SUBDIRS); do (echo Entering $$i; cd $$i; make all; echo Leaving $$i;); done + +build_libltdl: + cd libltdl; make all test: all for i in $(SUBDIRS); do (echo Entering $$i; cd $$i; make test; echo Leaving $$i;); done |
From: Bryce D. <bd...@us...> - 2002-10-12 11:59:29
|
Update of /cvsroot/bochs/bochs-testing/plugin-test In directory usw-pr-cvs1:/tmp/cvs-serv9181 Modified Files: configure.in Log Message: - add missing AC_SUBST(LIBS) Index: configure.in =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/configure.in,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- configure.in 12 Oct 2002 11:48:51 -0000 1.4 +++ configure.in 12 Oct 2002 11:59:26 -0000 1.5 @@ -42,6 +42,7 @@ AC_SUBST(CPPFLAGS) AC_SUBST(CXXFLAGS) AC_SUBST(LDFLAGS) +AC_SUBST(LIBS) AC_SUBST(LT_LDFLAGS) AC_OUTPUT(config.h Makefile test1-static/Makefile test2-dynamic/Makefile test3-twomodules/Makefile test4-interdep/Makefile test5-execsymbols/Makefile test6-ltdlopen/Makefile) |
From: Bryce D. <bd...@us...> - 2002-10-12 11:57:36
|
Update of /cvsroot/bochs/bochs-testing/plugin-test In directory usw-pr-cvs1:/tmp/cvs-serv8784 Modified Files: Makefile.in Log Message: - don't forget to build libltdl Index: Makefile.in =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/Makefile.in,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- Makefile.in 12 Oct 2002 05:53:39 -0000 1.3 +++ Makefile.in 12 Oct 2002 11:57:33 -0000 1.4 @@ -1,6 +1,9 @@ SUBDIRS = test1-static test2-dynamic test3-twomodules test4-interdep test5-execsymbols test6-ltdlopen -all: +build_libltdl: + cd libltdl; make all + +all: build_libltdl for i in $(SUBDIRS); do (echo Entering $$i; cd $$i; make all; echo Leaving $$i;); done test: all |
From: Bryce D. <bd...@us...> - 2002-10-12 11:50:31
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen In directory usw-pr-cvs1:/tmp/cvs-serv6781/test6-ltdlopen Modified Files: main.cc Log Message: - add missing call to lt_dlinit(). Why do I keep forgetting this?! - printf handle was missing the handle - remove underscore from module_init function name - fix err msg Index: main.cc =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen/main.cc,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- main.cc 12 Oct 2002 05:52:15 -0000 1.1 +++ main.cc 12 Oct 2002 11:50:28 -0000 1.2 @@ -15,20 +15,24 @@ { char buf[512]; sprintf (buf, fmt, name); + if (lt_dlinit () != 0) { + printf ("lt_dlinit error: %s\n", lt_dlerror ()); + return -1; + } lt_dlhandle handle = lt_dlopen (buf); - printf ("handle is %p\n"); + printf ("handle is %p\n", handle); if (!handle) { printf ("lt_dlopen error: %s\n", lt_dlerror ()); - return -1; + return -1; } - modload_func func = (modload_func) lt_dlsym (handle, "_module_init"); + modload_func func = (modload_func) lt_dlsym (handle, "module_init"); printf ("module_init function is at %p\n", func); if (func != NULL) { printf ("Calling module_init\n"); (*func)(); } else { - printf ("lt_dlopen error: %s\n", lt_dlerror ()); - return -1; + printf ("lt_dlsym error: %s\n", lt_dlerror ()); + return -1; } return 0; } |
From: Bryce D. <bd...@us...> - 2002-10-12 11:49:25
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen In directory usw-pr-cvs1:/tmp/cvs-serv6712/test6-ltdlopen Modified Files: Makefile.in Log Message: - correct LIBS line is now provided by configure Index: Makefile.in =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/test6-ltdlopen/Makefile.in,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Makefile.in 12 Oct 2002 06:02:01 -0000 1.2 +++ Makefile.in 12 Oct 2002 11:49:22 -0000 1.3 @@ -5,7 +5,7 @@ CXX=@CXX@ CXXFLAGS=@CXXFLAGS@ LDFLAGS=@LDFLAGS@ @LT_LDFLAGS@ -LIBS=-L`pwd`/../ltdl -lltdl +LIBS=@LIBS@ LIBTOOL=@LIBTOOL@ RPATH=`pwd`/lib |
From: Bryce D. <bd...@us...> - 2002-10-12 11:48:54
|
Update of /cvsroot/bochs/bochs-testing/plugin-test In directory usw-pr-cvs1:/tmp/cvs-serv6483 Modified Files: configure.in Log Message: - now that libltdl is installed in the source tree, add args to CFLAGS and LIBS to point to the local version. Index: configure.in =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/configure.in,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- configure.in 12 Oct 2002 05:53:39 -0000 1.3 +++ configure.in 12 Oct 2002 11:48:51 -0000 1.4 @@ -21,6 +21,11 @@ dnl Configure libltdl AC_CONFIG_SUBDIRS(libltdl) +CFLAGS="$CFLAGS $INCLDL" +CPPFLAGS="$CPPFLAGS $INCLDL" +CXXFLAGS="$CXXFLAGS $INCLDL" +LIBS="$LIBS $LIBLTDL" + AC_MSG_CHECKING(if -no-undefined is required to build a shared library) LT_LDFLAGS= case $host in @@ -32,6 +37,11 @@ AC_MSG_RESULT(no) ;; esac + +AC_SUBST(CFLAGS) +AC_SUBST(CPPFLAGS) +AC_SUBST(CXXFLAGS) +AC_SUBST(LDFLAGS) AC_SUBST(LT_LDFLAGS) AC_OUTPUT(config.h Makefile test1-static/Makefile test2-dynamic/Makefile test3-twomodules/Makefile test4-interdep/Makefile test5-execsymbols/Makefile test6-ltdlopen/Makefile) |
From: Bryce D. <bd...@us...> - 2002-10-12 11:47:29
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/libltdl In directory usw-pr-cvs1:/tmp/cvs-serv6209 Modified Files: ltdl.c Log Message: - add additional NULL check. I know you can get this if you forget to call lt_dlinit(), but I'm pretty certain that I've seen it in other cases as well. Index: ltdl.c =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/libltdl/ltdl.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- ltdl.c 12 Oct 2002 06:03:59 -0000 1.1 +++ ltdl.c 12 Oct 2002 11:47:26 -0000 1.2 @@ -3327,6 +3327,12 @@ return 0; } + if (!handle->loader) + { + LT_DLMUTEX_SETERROR (LT_DLSTRERROR (INVALID_LOADER)); + return 0; + } + lensym = LT_STRLEN (symbol) + LT_STRLEN (handle->loader->sym_prefix) + LT_STRLEN (handle->info.name); |
From: Volker R. <vru...@us...> - 2002-10-12 09:04:56
|
Update of /cvsroot/bochs/bochs/gui In directory usw-pr-cvs1:/tmp/cvs-serv8008 Modified Files: wx.cc Log Message: - the "AltGr" key on European keyboards works now (wxbochs on win32 only) Index: wx.cc =================================================================== RCS file: /cvsroot/bochs/bochs/gui/wx.cc,v retrieving revision 1.42 retrieving revision 1.43 diff -u -d -r1.42 -r1.43 --- wx.cc 7 Oct 2002 04:49:50 -0000 1.42 +++ wx.cc 12 Oct 2002 09:04:50 -0000 1.43 @@ -411,8 +411,8 @@ // Swap the scancodes of "numlock" and "pause" if ((key & 0xff)==0x45) key ^= 0x100; if (key & 0x0100) { - // Its an extended key - bxev.bx_key = 0xE000; + // Its an extended key + bxev.bx_key = 0xE000; } // Its a key bxev.bx_key |= (key & 0x00FF) | (release? 0x80 : 0x00); @@ -796,6 +796,11 @@ // event contains raw scancodes: use put_scancode Bit8u scancode; if (bx_key & 0xFF00) { // for extended keys + // This makes the "AltGr" key on European keyboards work + if (bx_key==0xE038) { + scancode = 0x9d; // left control key released + bx_devices.keyboard->put_scancode(&scancode, 1); + } scancode = 0xFF & (bx_key>>8); IFDBG_KEY (wxLogDebug ("sending raw scancode 0x%02x (extended key)", (int)scancode)); bx_devices.keyboard->put_scancode (&scancode, 1); |
From: Bryce D. <bd...@us...> - 2002-10-12 06:04:01
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/libltdl In directory usw-pr-cvs1:/tmp/cvs-serv7976 Added Files: COPYING.LIB Makefile.am Makefile.in README acinclude.m4 aclocal.m4 config-h.in configure configure.in ltdl.c ltdl.h stamp-h.in Log Message: - add libltdl files from libtool version 1.4.2 --- NEW FILE: COPYING.LIB --- GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. ^L Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. ^L GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. ^L Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. ^L 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. ^L 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. ^L 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. ^L 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS ^L How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. <one line to give the library's name and a brief idea of what it does.> Copyright (C) <year> <name of author> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. <signature of Ty Coon>, 1 April 1990 Ty Coon, President of Vice That's all there is to it! --- NEW FILE: Makefile.am --- ## Process this file with automake to produce Makefile.in AUTOMAKE_OPTIONS = no-dependencies foreign if INSTALL_LTDL include_HEADERS = ltdl.h lib_LTLIBRARIES = libltdl.la else noinst_HEADERS = ltdl.h endif if CONVENIENCE_LTDL noinst_LTLIBRARIES = libltdlc.la endif ## Make sure these will be cleaned even when they're not built by ## default. CLEANFILES = libltdl.la libltdlc.la libltdl_la_SOURCES = ltdl.c libltdl_la_LDFLAGS = -no-undefined -version-info 4:0:1 libltdl_la_LIBADD = $(LIBADD_DL) libltdlc_la_SOURCES = ltdl.c libltdlc_la_LIBADD = $(LIBADD_DL) ## Because we do not have automatic dependency tracking: ltdl.lo: ltdl.h config.h $(OBJECTS): libtool libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck ## This allows us to install libltdl without using ln and without creating ## a world writeable directory. ## FIXME: Remove this rule once automake can do this properly by itself. local-install-files: $(DISTFILES) -rm -rf $(DESTDIR)$(datadir)/libtool/libltdl $(mkinstalldirs) $(DESTDIR)$(datadir)/libtool/libltdl @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -r $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file; \ else \ test -f $(DESTDIR)$(datadir)/libtool/libltdl/$$file \ || cp $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file || :; \ fi; \ done --- NEW FILE: Makefile.in --- # Makefile.in generated automatically by automake 1.4-p5a from Makefile.am # Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. SHELL = @SHELL@ srcdir = @srcdir@ top_srcdir = @top_srcdir@ VPATH = @srcdir@ prefix = @prefix@ exec_prefix = @exec_prefix@ bindir = @bindir@ sbindir = @sbindir@ libexecdir = @libexecdir@ datadir = @datadir@ sysconfdir = @sysconfdir@ sharedstatedir = @sharedstatedir@ localstatedir = @localstatedir@ libdir = @libdir@ infodir = @infodir@ mandir = @mandir@ includedir = @includedir@ oldincludedir = /usr/include DESTDIR = pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ top_builddir = . ACLOCAL = @ACLOCAL@ AUTOCONF = @AUTOCONF@ AUTOMAKE = @AUTOMAKE@ AUTOHEADER = @AUTOHEADER@ INSTALL = @INSTALL@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) INSTALL_DATA = @INSTALL_DATA@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ transform = @program_transform_name@ NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ AMTAR = @AMTAR@ AS = @AS@ AWK = @AWK@ CC = @CC@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ ECHO = @ECHO@ EXEEXT = @EXEEXT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LIBADD_DL = @LIBADD_DL@ LIBTOOL = @LIBTOOL@ LIBTOOL_DEPS = @LIBTOOL_DEPS@ LN_S = @LN_S@ MAINT = @MAINT@ MAKEINFO = @MAKEINFO@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ RANLIB = @RANLIB@ STRIP = @STRIP@ VERSION = @VERSION@ am__include = @am__include@ am__quote = @am__quote@ install_sh = @install_sh@ AUTOMAKE_OPTIONS = no-dependencies foreign @INSTALL_LTDL_TRUE@include_HEADERS = ltdl.h @INSTALL_LTDL_TRUE@lib_LTLIBRARIES = libltdl.la @INSTALL_LTDL_FALSE@noinst_HEADERS = ltdl.h @CONVENIENCE_LTDL_TRUE@noinst_LTLIBRARIES = libltdlc.la CLEANFILES = libltdl.la libltdlc.la libltdl_la_SOURCES = ltdl.c libltdl_la_LDFLAGS = -no-undefined -version-info 4:0:1 libltdl_la_LIBADD = $(LIBADD_DL) libltdlc_la_SOURCES = ltdl.c libltdlc_la_LIBADD = $(LIBADD_DL) ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) DEFS = @DEFS@ -I. -I$(srcdir) -I. CPPFLAGS = @CPPFLAGS@ LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ libltdl_la_DEPENDENCIES = libltdl_la_OBJECTS = ltdl.lo libltdlc_la_LDFLAGS = libltdlc_la_DEPENDENCIES = libltdlc_la_OBJECTS = ltdl.lo CFLAGS = @CFLAGS@ COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --mode=compile $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ HEADERS = $(include_HEADERS) $(noinst_HEADERS) DIST_COMMON = README ./stamp-h.in COPYING.LIB Makefile.am Makefile.in \ acinclude.m4 aclocal.m4 config-h.in configure configure.in DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) TAR = gtar GZIP_ENV = --best SOURCES = $(libltdl_la_SOURCES) $(libltdlc_la_SOURCES) OBJECTS = $(libltdl_la_OBJECTS) $(libltdlc_la_OBJECTS) all: all-redirect .SUFFIXES: .SUFFIXES: .S .c .lo .o .obj .s $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status $(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in acinclude.m4 cd $(srcdir) && $(ACLOCAL) config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES) cd $(srcdir) && $(AUTOCONF) config.h: stamp-h @if test ! -f $@; then \ rm -f stamp-h; \ $(MAKE) stamp-h; \ else :; fi stamp-h: $(srcdir)/config-h.in $(top_builddir)/config.status cd $(top_builddir) \ && CONFIG_FILES= CONFIG_HEADERS=config.h:config-h.in \ $(SHELL) ./config.status @echo timestamp > stamp-h 2> /dev/null $(srcdir)/config-h.in: @MAINTAINER_MODE_TRUE@$(srcdir)/stamp-h.in @if test ! -f $@; then \ rm -f $(srcdir)/stamp-h.in; \ $(MAKE) $(srcdir)/stamp-h.in; \ else :; fi $(srcdir)/stamp-h.in: $(top_srcdir)/configure.in $(ACLOCAL_M4) cd $(top_srcdir) && $(AUTOHEADER) @echo timestamp > $(srcdir)/stamp-h.in 2> /dev/null mostlyclean-hdr: clean-hdr: distclean-hdr: -rm -f config.h maintainer-clean-hdr: mostlyclean-libLTLIBRARIES: clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) distclean-libLTLIBRARIES: maintainer-clean-libLTLIBRARIES: install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(libdir) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ echo "$(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p"; \ $(LIBTOOL) --mode=install $(INSTALL) $$p $(DESTDIR)$(libdir)/$$p; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) list='$(lib_LTLIBRARIES)'; for p in $$list; do \ $(LIBTOOL) --mode=uninstall rm -f $(DESTDIR)$(libdir)/$$p; \ done mostlyclean-noinstLTLIBRARIES: clean-noinstLTLIBRARIES: -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) distclean-noinstLTLIBRARIES: maintainer-clean-noinstLTLIBRARIES: .c.o: $(COMPILE) -c $< # FIXME: We should only use cygpath when building on Windows, # and only if it is available. .c.obj: $(COMPILE) -c `cygpath -w $<` .s.o: $(COMPILE) -c $< .S.o: $(COMPILE) -c $< mostlyclean-compile: -rm -f *.o core *.core -rm -f *.$(OBJEXT) clean-compile: distclean-compile: -rm -f *.tab.c maintainer-clean-compile: .c.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< .s.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< .S.lo: $(LIBTOOL) --mode=compile $(COMPILE) -c $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: maintainer-clean-libtool: libltdl.la: $(libltdl_la_OBJECTS) $(libltdl_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libltdl_la_LDFLAGS) $(libltdl_la_OBJECTS) $(libltdl_la_LIBADD) $(LIBS) libltdlc.la: $(libltdlc_la_OBJECTS) $(libltdlc_la_DEPENDENCIES) $(LINK) $(libltdlc_la_LDFLAGS) $(libltdlc_la_OBJECTS) $(libltdlc_la_LIBADD) $(LIBS) install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) $(mkinstalldirs) $(DESTDIR)$(includedir) @list='$(include_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d= ; else d="$(srcdir)/"; fi; \ echo " $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p"; \ $(INSTALL_DATA) $$d$$p $(DESTDIR)$(includedir)/$$p; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) list='$(include_HEADERS)'; for p in $$list; do \ rm -f $(DESTDIR)$(includedir)/$$p; \ done tags: TAGS ID: $(HEADERS) $(SOURCES) $(LISP) list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ here=`pwd` && cd $(srcdir) \ && mkid -f$$here/ID $$unique $(LISP) TAGS: $(HEADERS) $(SOURCES) config-h.in $(TAGS_DEPENDENCIES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS)'; \ unique=`for i in $$list; do echo $$i; done | \ awk ' { files[$$0] = 1; } \ END { for (i in files) print i; }'`; \ test -z "$(ETAGS_ARGS)config-h.in$$unique$(LISP)$$tags" \ || (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags config-h.in $$unique $(LISP) -o $$here/TAGS) mostlyclean-tags: clean-tags: distclean-tags: -rm -f TAGS ID maintainer-clean-tags: distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist -rm -rf $(distdir) GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz mkdir $(distdir)/=build mkdir $(distdir)/=inst dc_install_base=`cd $(distdir)/=inst && pwd`; \ cd $(distdir)/=build \ && ../configure --srcdir=.. --prefix=$$dc_install_base \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) dist -rm -rf $(distdir) @banner="$(distdir).tar.gz is ready for distribution"; \ dashes=`echo "$$banner" | sed s/./=/g`; \ echo "$$dashes"; \ echo "$$banner"; \ echo "$$dashes" dist: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) dist-all: distdir -chmod -R a+r $(distdir) GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir) -rm -rf $(distdir) distdir: $(DISTFILES) -rm -rf $(distdir) mkdir $(distdir) -chmod 777 $(distdir) @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -pr $$d/$$file $(distdir)/$$file; \ else \ test -f $(distdir)/$$file \ || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ || cp -p $$d/$$file $(distdir)/$$file || :; \ fi; \ done info-am: info: info-am dvi-am: dvi: dvi-am check-am: all-am check: check-am installcheck-am: installcheck: installcheck-am all-recursive-am: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive install-exec-am: install-libLTLIBRARIES install-exec: install-exec-am install-data-am: install-includeHEADERS install-data: install-data-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am install: install-am uninstall-am: uninstall-libLTLIBRARIES uninstall-includeHEADERS uninstall: uninstall-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) config.h all-redirect: all-am install-strip: $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install installdirs: $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir) mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -rm -f Makefile $(CONFIG_CLEAN_FILES) -rm -f config.cache config.log stamp-h stamp-h[0-9]* maintainer-clean-generic: mostlyclean-am: mostlyclean-hdr mostlyclean-libLTLIBRARIES \ mostlyclean-noinstLTLIBRARIES mostlyclean-compile \ mostlyclean-libtool mostlyclean-tags \ mostlyclean-generic mostlyclean: mostlyclean-am clean-am: clean-hdr clean-libLTLIBRARIES clean-noinstLTLIBRARIES \ clean-compile clean-libtool clean-tags clean-generic \ mostlyclean-am clean: clean-am distclean-am: distclean-hdr distclean-libLTLIBRARIES \ distclean-noinstLTLIBRARIES distclean-compile \ distclean-libtool distclean-tags distclean-generic \ clean-am -rm -f libtool distclean: distclean-am -rm -f config.status maintainer-clean-am: maintainer-clean-hdr \ maintainer-clean-libLTLIBRARIES \ maintainer-clean-noinstLTLIBRARIES \ maintainer-clean-compile maintainer-clean-libtool \ maintainer-clean-tags maintainer-clean-generic \ distclean-am @echo "This command is intended for maintainers to use;" @echo "it deletes files that may require special tools to rebuild." maintainer-clean: maintainer-clean-am -rm -f config.status .PHONY: mostlyclean-hdr distclean-hdr clean-hdr maintainer-clean-hdr \ mostlyclean-libLTLIBRARIES distclean-libLTLIBRARIES \ clean-libLTLIBRARIES maintainer-clean-libLTLIBRARIES \ uninstall-libLTLIBRARIES install-libLTLIBRARIES \ mostlyclean-noinstLTLIBRARIES distclean-noinstLTLIBRARIES \ clean-noinstLTLIBRARIES maintainer-clean-noinstLTLIBRARIES \ mostlyclean-compile distclean-compile clean-compile \ maintainer-clean-compile mostlyclean-libtool distclean-libtool \ clean-libtool maintainer-clean-libtool uninstall-includeHEADERS \ install-includeHEADERS tags mostlyclean-tags distclean-tags clean-tags \ maintainer-clean-tags distdir info-am info dvi-am dvi check check-am \ installcheck-am installcheck all-recursive-am install-exec-am \ install-exec install-data-am install-data install-am install \ uninstall-am uninstall all-redirect all-am all installdirs \ mostlyclean-generic distclean-generic clean-generic \ maintainer-clean-generic clean mostlyclean distclean maintainer-clean ltdl.lo: ltdl.h config.h $(OBJECTS): libtool libtool: $(LIBTOOL_DEPS) $(SHELL) ./config.status --recheck local-install-files: $(DISTFILES) -rm -rf $(DESTDIR)$(datadir)/libtool/libltdl $(mkinstalldirs) $(DESTDIR)$(datadir)/libtool/libltdl @for file in $(DISTFILES); do \ d=$(srcdir); \ if test -d $$d/$$file; then \ cp -r $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file; \ else \ test -f $(DESTDIR)$(datadir)/libtool/libltdl/$$file \ || cp $$d/$$file $(DESTDIR)$(datadir)/libtool/libltdl/$$file || :; \ fi; \ done # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: --- NEW FILE: README --- This is GNU libltdl, a system independent dlopen wrapper for GNU libtool. It supports the following dlopen interfaces: * dlopen (Solaris, Linux and various BSD flavors) * shl_load (HP-UX) * LoadLibrary (Win16 and Win32) * load_add_on (BeOS) * GNU DLD (emulates dynamic linking for static libraries) * libtool's dlpreopen --- NEW FILE: acinclude.m4 --- # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- ## Copyright 1996, 1997, 1998, 1999, 2000, 2001 ## Free Software Foundation, Inc. ## Originally by Gordon Matzigkeit <go...@gn...>, 1996 ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, write to the Free Software ## Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ## [...3862 lines suppressed...] ifelse([$3], [], [:], [$3]) fi]) ])# AC_CHECK_TYPES # AC_LTDL_FUNC_ARGZ # ----------------- AC_DEFUN([AC_LTDL_FUNC_ARGZ], [AC_CHECK_HEADERS([argz.h]) AC_CHECK_TYPES([error_t], [], [AC_DEFINE([error_t], [int], [Define to a type to use for \`error_t' if it is not otherwise available.])], [#if HAVE_ARGZ_H # include <argz.h> #endif]) AC_CHECK_FUNCS([argz_append argz_create_sep argz_insert argz_next argz_stringify]) ])# AC_LTDL_FUNC_ARGZ --- NEW FILE: aclocal.m4 --- dnl aclocal.m4 generated automatically by aclocal 1.4-p5a dnl Copyright (C) 1994, 1995-8, 1999, 2001 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. dnl This program is distributed in the hope that it will be useful, dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A dnl PARTICULAR PURPOSE. # libtool.m4 - Configure libtool for the host system. -*-Shell-script-*- # serial 46 AC_PROG_LIBTOOL AC_DEFUN([AC_PROG_LIBTOOL], [AC_REQUIRE([AC_LIBTOOL_SETUP])dnl [...4339 lines suppressed...] # Add --enable-maintainer-mode option to configure. # From Jim Meyering # serial 1 AC_DEFUN([AM_MAINTAINER_MODE], [AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode is disabled by default AC_ARG_ENABLE(maintainer-mode, [ --enable-maintainer-mode enable make rules and dependencies not useful (and sometimes confusing) to the casual installer], USE_MAINTAINER_MODE=$enableval, USE_MAINTAINER_MODE=no) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL(MAINTAINER_MODE, [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE AC_SUBST(MAINT)dnl ] ) --- NEW FILE: config-h.in --- /* config-h.in. Generated automatically from configure.in by autoheader. */ /* Define to empty if the keyword does not work. */ #undef const /* Define as __inline if that's what the C compiler calls it. */ #undef inline /* Define if you have the ANSI C header files. */ #undef STDC_HEADERS /* Define if you have the argz_append function. */ #undef HAVE_ARGZ_APPEND /* Define if you have the argz_create_sep function. */ #undef HAVE_ARGZ_CREATE_SEP /* Define if you have the argz_insert function. */ #undef HAVE_ARGZ_INSERT /* Define if you have the argz_next function. */ #undef HAVE_ARGZ_NEXT /* Define if you have the argz_stringify function. */ #undef HAVE_ARGZ_STRINGIFY /* Define if you have the bcopy function. */ #undef HAVE_BCOPY /* Define if you have the dlerror function. */ #undef HAVE_DLERROR /* Define if you have the index function. */ #undef HAVE_INDEX /* Define if you have the memcpy function. */ #undef HAVE_MEMCPY /* Define if you have the memmove function. */ #undef HAVE_MEMMOVE /* Define if you have the rindex function. */ #undef HAVE_RINDEX /* Define if you have the strchr function. */ #undef HAVE_STRCHR /* Define if you have the strcmp function. */ #undef HAVE_STRCMP /* Define if you have the strrchr function. */ #undef HAVE_STRRCHR /* Define if you have the <argz.h> header file. */ #undef HAVE_ARGZ_H /* Define if you have the <assert.h> header file. */ #undef HAVE_ASSERT_H /* Define if you have the <ctype.h> header file. */ #undef HAVE_CTYPE_H /* Define if you have the <dirent.h> header file. */ #undef HAVE_DIRENT_H /* Define if you have the <dl.h> header file. */ #undef HAVE_DL_H /* Define if you have the <dld.h> header file. */ #undef HAVE_DLD_H /* Define if you have the <dlfcn.h> header file. */ #undef HAVE_DLFCN_H /* Define if you have the <errno.h> header file. */ #undef HAVE_ERRNO_H /* Define if you have the <malloc.h> header file. */ #undef HAVE_MALLOC_H /* Define if you have the <memory.h> header file. */ #undef HAVE_MEMORY_H /* Define if you have the <ndir.h> header file. */ #undef HAVE_NDIR_H /* Define if you have the <stdio.h> header file. */ #undef HAVE_STDIO_H /* Define if you have the <stdlib.h> header file. */ #undef HAVE_STDLIB_H /* Define if you have the <string.h> header file. */ #undef HAVE_STRING_H /* Define if you have the <strings.h> header file. */ #undef HAVE_STRINGS_H /* Define if you have the <sys/dir.h> header file. */ #undef HAVE_SYS_DIR_H /* Define if you have the <sys/dl.h> header file. */ #undef HAVE_SYS_DL_H /* Define if you have the <sys/ndir.h> header file. */ #undef HAVE_SYS_NDIR_H /* Define if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H /* Define to the extension used for shared libraries, say, .so. */ #undef LTDL_SHLIB_EXT /* Define to the name of the environment variable that determines the dynamic library search path. */ #undef LTDL_SHLIBPATH_VAR /* Define to the system default library search path. */ #undef LTDL_SYSSEARCHPATH /* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LTDL_OBJDIR /* Define if libtool can extract symbol lists from object files. */ #undef HAVE_PRELOADED_SYMBOLS /* Define if you have the libdl library or equivalent. */ #undef HAVE_LIBDL /* Define if you have the libdl library or equivalent. */ #undef HAVE_LIBDL /* Define if you have the libdl library or equivalent. */ #undef HAVE_LIBDL /* Define if you have the shl_load function. */ #undef HAVE_SHL_LOAD /* Define if you have the shl_load function. */ #undef HAVE_SHL_LOAD /* Define if you have the GNU dld library. */ #undef HAVE_DLD /* Define if dlsym() requires a leading underscode in symbol names. */ #undef NEED_USCORE /* Define if the OS needs help to load dependent libraries for dlopen(). */ #undef LTDL_DLOPEN_DEPLIBS /* Define to a type to use for `error_t' if it is not otherwise available. */ #undef error_t --- NEW FILE: configure --- #! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated automatically using autoconf version 2.13 # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. # Defaults: ac_help= ac_default_prefix=/usr/local # Any additions from configure.in: ac_help="$ac_help --with-auxdir=DIR path to autoconf auxiliary files" ac_help="$ac_help --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors" ac_help="$ac_help [...7761 lines suppressed...] test -f "$dirpart/$file" && continue fdir=`echo "$file" | sed -e 's|/[^/]*$||'` $ac_aux_dir/mkinstalldirs "$dirpart/$fdir" > /dev/null 2>&1 # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done exit 0 EOF chmod +x $CONFIG_STATUS rm -fr confdefs* $ac_clean_files test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 # Local Variables: # mode:shell-script # sh-indentation:2 # End: --- NEW FILE: configure.in --- dnl Process this file with autoconf to create configure. AC_INIT(ltdl.c) dnl We shouldn't be using these internal macros of autoconf, dnl but CONFIG_AUX_DIR($with_auxdir) breaks automake. AC_ARG_WITH(auxdir, [ --with-auxdir=DIR path to autoconf auxiliary files], [AC_CONFIG_AUX_DIRS($with_auxdir)], [AC_CONFIG_AUX_DIR_DEFAULT]) if test -z "$enable_ltdl_install$enable_ltdl_convenience"; then if test -f ${srcdir}/ltmain.sh; then # if libltdl is libtoolized, it is assumed to be stand-alone and # installed unless the command line overrides it (tested above) enable_ltdl_install=yes else AC_MSG_WARN([*** The top-level configure must select either]) AC_MSG_WARN([*** [A""C_LIBLTDL_INSTALLABLE] or [A""C_LIBLTDL_CONVENIENCE].]) AC_MSG_ERROR([*** Maybe you want to --enable-ltdl-install?]) fi fi AM_INIT_AUTOMAKE(libltdl,1.2,-) AM_CONFIG_HEADER(config.h:config-h.in) AM_MAINTAINER_MODE AC_PROG_CC AC_C_CONST AC_C_INLINE AC_LIBTOOL_WIN32_DLL AM_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS) AC_LIB_LTDL dnl Output the makefile AC_OUTPUT(Makefile) # Local Variables: # mode:shell-script # sh-indentation:2 # End: --- NEW FILE: ltdl.c --- /* ltdl.c -- system independent dlopen wrapper Copyright (C) 1998, 1999, 2000 Free Software Foundation, Inc. Originally by Thomas Tanner <ta...@ff...> This file is part of GNU Libtool. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. As a special exception to the GNU Lesser General Public License, if you distribute this file as part of a program or library that is built using GNU libtool, you may include it under the same distribution terms that you use for the rest of that program. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. [...3930 lines suppressed...] } lt_dlloader * lt_dlloader_find (loader_name) const char *loader_name; { lt_dlloader *place = 0; LT_DLMUTEX_LOCK (); for (place = loaders; place; place = place->next) { if (strcmp (place->loader_name, loader_name) == 0) { break; } } LT_DLMUTEX_UNLOCK (); return place; } --- NEW FILE: ltdl.h --- /* ltdl.h -- generic dlopen functions Copyright (C) 1998-2000 Free Software Foundation, Inc. Originally by Thomas Tanner <ta...@ff...> This file is part of GNU Libtool. This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. As a special exception to the GNU Lesser General Public License, if you distribute this file as part of a program or library that is built using GNU libtool, you may include it under the same distribution terms that you use for the rest of that program. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ /* Only include this header file once. */ #ifndef LTDL_H #define LTDL_H 1 #include <sys/types.h> /* for size_t declaration */ /* --- MACROS FOR PORTABILITY --- */ /* Saves on those hard to debug '\0' typos.... */ #define LT_EOS_CHAR '\0' /* LTDL_BEGIN_C_DECLS should be used at the beginning of your declarations, so that C++ compilers don't mangle their names. Use LTDL_END_C_DECLS at the end of C declarations. */ #ifdef __cplusplus # define LT_BEGIN_C_DECLS extern "C" { # define LT_END_C_DECLS } #else # define LT_BEGIN_C_DECLS /* empty */ # define LT_END_C_DECLS /* empty */ #endif LT_BEGIN_C_DECLS /* LT_PARAMS is a macro used to wrap function prototypes, so that compilers that don't understand ANSI C prototypes still work, and ANSI C compilers can issue warnings about type mismatches. */ #if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(WIN32) || defined(__cplusplus) # define LT_PARAMS(protos) protos # define lt_ptr void* #else # define LT_PARAMS(protos) () # define lt_ptr char* #endif /* LT_STMT_START/END are used to create macros which expand to a a single compound statement in a portable way. */ #if defined (__GNUC__) && !defined (__STRICT_ANSI__) && !defined (__cplusplus) # define LT_STMT_START (void)( # define LT_STMT_END ) #else # if (defined (sun) || defined (__sun__)) # define LT_STMT_START if (1) # define LT_STMT_END else (void)0 # else # define LT_STMT_START do # define LT_STMT_END while (0) # endif #endif /* LT_CONC creates a new concatenated symbol for the compiler in a portable way. */ #if defined(__STDC__) || defined(__cplusplus) # define LT_CONC(s,t) s##t #else # define LT_CONC(s,t) s/**/t #endif /* LT_STRLEN can be used safely on NULL pointers. */ #define LT_STRLEN(s) (((s) && (s)[0]) ? strlen (s) : 0) /* --- WINDOWS SUPPORT --- */ /* Canonicalise Windows and Cygwin recognition macros. */ #ifdef __CYGWIN32__ # ifndef __CYGWIN__ # define __CYGWIN__ __CYGWIN32__ # endif #endif #if defined(_WIN32) || defined(WIN32) # ifndef __WINDOWS__ # ifdef _WIN32 # define __WINDOWS__ _WIN32 # else # ifdef WIN32 # define __WINDOWS__ WIN32 # endif # endif # endif #endif #ifdef __WINDOWS__ # ifndef __CYGWIN__ /* LT_DIRSEP_CHAR is accepted *in addition* to '/' as a directory separator when it is set. */ # define LT_DIRSEP_CHAR '\\' # define LT_PATHSEP_CHAR ';' # endif #endif #ifndef LT_PATHSEP_CHAR # define LT_PATHSEP_CHAR ':' #endif /* DLL building support on win32 hosts; mostly to workaround their ridiculous implementation of data symbol exporting. */ #ifndef LT_SCOPE # ifdef __WINDOWS__ # ifdef DLL_EXPORT /* defined by libtool (if required) */ # define LT_SCOPE __declspec(dllexport) # endif # ifdef LIBLTDL_DLL_IMPORT /* define if linking with this dll */ # define LT_SCOPE extern __declspec(dllimport) # endif # endif # ifndef LT_SCOPE /* static linking or !__WINDOWS__ */ # define LT_SCOPE extern # endif #endif /* --- DYNAMIC MODULE LOADING API --- */ typedef struct lt_dlhandle_struct *lt_dlhandle; /* A loaded module. */ /* Initialisation and finalisation functions for libltdl. */ extern int lt_dlinit LT_PARAMS((void)); extern int lt_dlexit LT_PARAMS((void)); /* Module search path manipulation. */ extern int lt_dladdsearchdir LT_PARAMS((const char *search_dir)); extern int lt_dlinsertsearchdir LT_PARAMS((const char *before, const char *search_dir)); extern int lt_dlsetsearchpath LT_PARAMS((const char *search_path)); extern const char *lt_dlgetsearchpath LT_PARAMS((void)); extern int lt_dlforeachfile LT_PARAMS(( const char *search_path, int (*func) (const char *filename, lt_ptr data), lt_ptr data)); /* Portable libltdl versions of the system dlopen() API. */ extern lt_dlhandle lt_dlopen LT_PARAMS((const char *filename)); extern lt_dlhandle lt_dlopenext LT_PARAMS((const char *filename)); extern lt_ptr lt_dlsym LT_PARAMS((lt_dlhandle handle, const char *name)); extern const char *lt_dlerror LT_PARAMS((void)); extern int lt_dlclose LT_PARAMS((lt_dlhandle handle)); /* Module residency management. */ extern int lt_dlmakeresident LT_PARAMS((lt_dlhandle handle)); extern int lt_dlisresident LT_PARAMS((lt_dlhandle handle)); /* --- MUTEX LOCKING --- */ typedef void lt_dlmutex_lock LT_PARAMS((void)); typedef void lt_dlmutex_unlock LT_PARAMS((void)); typedef void lt_dlmutex_seterror LT_PARAMS((const char *errmsg)); typedef const char *lt_dlmutex_geterror LT_PARAMS((void)); extern int lt_dlmutex_register LT_PARAMS((lt_dlmutex_lock *lock, lt_dlmutex_unlock *unlock, lt_dlmutex_seterror *seterror, lt_dlmutex_geterror *geterror)); /* --- MEMORY HANDLING --- */ /* By default, the realloc function pointer is set to our internal realloc implementation which iself uses lt_dlmalloc and lt_dlfree. libltdl relies on a featureful realloc, but if you are sure yours has the right semantics then you can assign it directly. Generally, it is safe to assign just a malloc() and a free() function. */ LT_SCOPE lt_ptr (*lt_dlmalloc) LT_PARAMS((size_t size)); LT_SCOPE lt_ptr (*lt_dlrealloc) LT_PARAMS((lt_ptr ptr, size_t size)); LT_SCOPE void (*lt_dlfree) LT_PARAMS((lt_ptr ptr)); /* --- PRELOADED MODULE SUPPORT --- */ /* A preopened symbol. Arrays of this type comprise the exported symbols for a dlpreopened module. */ typedef struct { const char *name; lt_ptr address; } lt_dlsymlist; extern int lt_dlpreload LT_PARAMS((const lt_dlsymlist *preloaded)); extern int lt_dlpreload_default LT_PARAMS((const lt_dlsymlist *preloaded)); #define LTDL_SET_PRELOADED_SYMBOLS() LT_STMT_START{ \ extern const lt_dlsymlist lt_preloaded_symbols[]; \ lt_dlpreload_default(lt_preloaded_symbols); \ }LT_STMT_END /* --- MODULE INFORMATION --- */ /* Read only information pertaining to a loaded module. */ typedef struct { char *filename; /* file name */ char *name; /* module name */ int ref_count; /* number of times lt_dlopened minus number of times lt_dlclosed. */ } lt_dlinfo; extern const lt_dlinfo *lt_dlgetinfo LT_PARAMS((lt_dlhandle handle)); extern lt_dlhandle lt_dlhandle_next LT_PARAMS((lt_dlhandle place)); extern int lt_dlforeach LT_PARAMS(( int (*func) (lt_dlhandle handle, lt_ptr data), lt_ptr data)); /* Associating user data with loaded modules. */ typedef unsigned lt_dlcaller_id; extern lt_dlcaller_id lt_dlcaller_register LT_PARAMS((void)); extern lt_ptr lt_dlcaller_set_data LT_PARAMS((lt_dlcaller_id key, lt_dlhandle handle, lt_ptr data)); extern lt_ptr lt_dlcaller_get_data LT_PARAMS((lt_dlcaller_id key, lt_dlhandle handle)); /* --- USER MODULE LOADER API --- */ typedef struct lt_dlloader lt_dlloader; typedef lt_ptr lt_user_data; typedef lt_ptr lt_... [truncated message content] |
From: Bryce D. <bd...@us...> - 2002-10-12 06:02:56
|
Update of /cvsroot/bochs/bochs-testing/plugin-test/libltdl In directory usw-pr-cvs1:/tmp/cvs-serv7839/libltdl Log Message: Directory /cvsroot/bochs/bochs-testing/plugin-test/libltdl added to the repository |
From: Bryce D. <bd...@us...> - 2002-10-12 06:02:20
|
Update of /cvsroot/bochs/bochs-testing/plugin-test In directory usw-pr-cvs1:/tmp/cvs-serv7660 Modified Files: configure Log Message: - update Index: configure =================================================================== RCS file: /cvsroot/bochs/bochs-testing/plugin-test/configure,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- configure 12 Oct 2002 05:53:39 -0000 1.3 +++ configure 12 Oct 2002 06:02:18 -0000 1.4 @@ -6834,7 +6834,7 @@ ;; esac -ac_config_files="$ac_config_files config.h Makefile test1-static/Makefile test2-dynamic/Makefile test3-twomodules/Makefile test4-interdep/Makefile test5-execsymbols/Makefile test6-execsymbols2/Makefile" +ac_config_files="$ac_config_files config.h Makefile test1-static/Makefile test2-dynamic/Makefile test3-twomodules/Makefile test4-interdep/Makefile test5-execsymbols/Makefile test6-ltdlopen/Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -7172,7 +7172,7 @@ "test3-twomodules/Makefile" ) CONFIG_FILES="$CONFIG_FILES test3-twomodules/Makefile" ;; "test4-interdep/Makefile" ) CONFIG_FILES="$CONFIG_FILES test4-interdep/Makefile" ;; "test5-execsymbols/Makefile" ) CONFIG_FILES="$CONFIG_FILES test5-execsymbols/Makefile" ;; - "test6-execsymbols2/Makefile" ) CONFIG_FILES="$CONFIG_FILES test6-execsymbols2/Makefile" ;; + "test6-ltdlopen/Makefile" ) CONFIG_FILES="$CONFIG_FILES test6-ltdlopen/Makefile" ;; *) { { echo "$as_me:7176: error: invalid argument: $ac_config_target" >&5 echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; |