Commit Graph

949 Commits

Author SHA1 Message Date
Stanislav Shwartsman
8247b94245 Another fix for INIT/RESET state 2005-11-19 19:38:45 +00:00
Stanislav Shwartsman
ec81586bb8 Init/Reset values for LDTR/TR 2005-11-19 18:27:15 +00:00
Stanislav Shwartsman
8d9b5b7134 Fixed compilation error when PAE diasbled and BX_DEBUGGER enabled
CVS patch by shirokuma #SF 1359011
2005-11-17 17:52:00 +00:00
Stanislav Shwartsman
3250edb8c5 Update instrumentation 2005-11-14 18:25:41 +00:00
Stanislav Shwartsman
7b7ac565f9 Getting ready for long mode disasm support, patch will posted soon 2005-11-14 18:09:22 +00:00
Stanislav Shwartsman
e2a5b9c338 MOV to/from test register are UD in x86-64 2005-11-11 22:02:42 +00:00
Stanislav Shwartsman
cb4ec526ab Fix comments and cleanup ...
No functional change
2005-11-11 21:34:57 +00:00
Stanislav Shwartsman
38a7e0abea 0f 0d (3dnow prefetch instruction) should execute as NOP when running on Intel EM64T CPU and as prefetch on AMD 2005-11-11 21:09:02 +00:00
Stanislav Shwartsman
0c6a401f30 Update CPU/TODO 2005-11-09 18:07:49 +00:00
Stanislav Shwartsman
e70aa1c403 Initialize l-biT (x86-64 mode) during reset or init
Do not modify segment limit and access rights when changing segment in real mode
2005-11-07 22:45:25 +00:00
Stanislav Shwartsman
5d67c7354f Fix code duplication 2005-11-05 11:39:26 +00:00
Stanislav Shwartsman
cd2a9f317d Do not PANIC when HLT with IF=0, only BX_INFO 2005-11-04 15:15:02 +00:00
Stanislav Shwartsman
ab81296e33 Update CHANGES/TODO
Change BX_INFO to BX_DEBUG in read CR4 function
2005-10-23 21:11:32 +00:00
Stanislav Shwartsman
732abe4b30 Move parity table from cpu.cc to lazy_flags.cc 2005-10-20 17:33:36 +00:00
Stanislav Shwartsman
64ba97210b INVD/WBINVD should flush caches and TLB 2005-10-18 18:07:52 +00:00
Stanislav Shwartsman
670395f1be VME support - beta #1 2005-10-17 13:06:09 +00:00
Stanislav Shwartsman
e83c77db49 Preparing to VME implementation
DO NOT ENABLE VME option until the implementation will be completed !
2005-10-16 23:13:19 +00:00
Stanislav Shwartsman
bf855506a3 Change set_FLAGS(0) by clear_FLAG ()
set_FLAGS(1) by assert_FLAG()
2005-10-15 21:01:36 +00:00
Stanislav Shwartsman
51347f2604 PAUSE instruction still should be implemented ... 2005-10-13 22:53:03 +00:00
Stanislav Shwartsman
7c1374a2ec support lazy flags for SHRD instruction 2005-10-13 20:21:35 +00:00
Stanislav Shwartsman
7022be46f5 Fix undefined flags handling for ROR and RCR instructions 2005-10-13 19:28:10 +00:00
Stanislav Shwartsman
469358aaf9 Move SHOW_IPS action to bx_gui object, may be some GUI will be able to print IPS online in the simulation window status bar ...
Small code cleanup
2005-10-13 16:22:21 +00:00
Stanislav Shwartsman
2c5b72fce5 Apply patch
[ bochs-Patches-1311170 ] small APIC bug fix (interrupt sent to the wrong CPU)
2005-10-10 20:45:41 +00:00
Stanislav Shwartsman
39fc11c5da Fix compilation error 2005-10-09 18:32:36 +00:00
Volker Ruppert
fa68f44d94 - compilation error fixed 2005-10-02 15:26:51 +00:00
Stanislav Shwartsman
7869ab425f LTR should #GP when loading NULL selector
fixed check for SYSENTER/SYSEXIT instructions
according to new Intel references
2005-10-01 07:47:00 +00:00
Stanislav Shwartsman
3885ad67c5 use get_EFER in extdb.cc 2005-09-29 17:55:31 +00:00
Stanislav Shwartsman
8c783bc329 Fixed cpu_mode corruption in x86-64 mode
Removed all potentially unsafe and duplicated code in setFLAGS methods to avoid such kind of problems in future
2005-09-29 17:32:32 +00:00
Stanislav Shwartsman
b9cc8b5b0d Do not look on mxcsr_mask field when restoring mxcsr register in FXRSTOR
At least my hardware CPU doesn't
2005-09-24 16:56:20 +00:00
Stanislav Shwartsman
d1c722211e Fix duplicate opcodes, fix opcode names and disasm bugs 2005-09-23 16:45:41 +00:00
Stanislav Shwartsman
6096698393 Fixed CLTS and HLT GP0 check 2005-09-14 20:01:42 +00:00
Stanislav Shwartsman
3d9ee328fb PMOVMSKB and PEXTRW instruction should zero-extend dest when in 64-bit mode 2005-09-12 18:08:35 +00:00
Stanislav Shwartsman
95b12d7429 #SF patch fixed transition from vm8086 to PM 2005-09-11 20:00:29 +00:00
Stanislav Shwartsman
76def09c07 Complete the FXRSTOR fix 2005-09-06 19:12:02 +00:00
Stanislav Shwartsman
734cc8496f Update changes and cpu/todo 2005-09-05 17:50:37 +00:00
Stanislav Shwartsman
f09f1d8b98 Fixed restoring of XMM regs in fxrestor 2005-09-05 17:02:30 +00:00
Stanislav Shwartsman
33c0c5367c Fixed bug in tasking.cc last change 2005-09-03 11:39:26 +00:00
Stanislav Shwartsman
086ee4c9aa Fix code duplication in tas 2005-08-28 17:37:37 +00:00
Stanislav Shwartsman
823dfa6f40 This code will be required for dynamic translation in future.
For now it is no more than code duplication fix ...
2005-08-23 20:01:54 +00:00
Stanislav Shwartsman
b28ed3be69 Fix LDT.limit < 7 check
Indent for protect_ctrl.cc code
2005-08-21 18:23:36 +00:00
Alexander Krisak
7be0d52cce Added missing reinitialization of field time_tick in guard_found 2005-08-15 15:43:04 +00:00
Alexander Krisak
672ac67ff9 Fixed bug in bochs debugger caused breakpoints doesn't fires sometimes. 2005-08-15 05:32:36 +00:00
Stanislav Shwartsman
84ce5ec720 do #GP in x86-64 mode if NT flag is set 2005-08-14 18:01:04 +00:00
Stanislav Shwartsman
681db0fd86 Roll back several incorrect changes in iret.cc 2005-08-14 17:23:03 +00:00
Stanislav Shwartsman
126069829d Fixed compilation error when icache is disabled 2005-08-13 14:10:22 +00:00
Stanislav Shwartsman
5b258fd453 Add todo file to CPU 2005-08-10 19:04:19 +00:00
Stanislav Shwartsman
80c895498e Fixed comments for code 2005-08-10 18:40:38 +00:00
Stanislav Shwartsman
a66b45e024 Fixed bug for masked writes in 64-bit mode 2005-08-10 18:34:00 +00:00
Stanislav Shwartsman
b192b2af9b Optimize pageWriteStamp checking 2005-08-10 18:18:57 +00:00
Stanislav Shwartsman
c9e44fb695 Added debug dump in case of tripple fault 2005-08-08 21:03:32 +00:00
Stanislav Shwartsman
37bd193337 Split PUSHF/POPF to 3 different methods according to op size.
By the way fix VIP/VIF flags handling in POPF/PUSHF (future fix for VME)
2005-08-08 19:56:11 +00:00
Stanislav Shwartsman
227fea6d77 do not check CS.limit in prefetch when in long64 mode 2005-08-05 18:23:36 +00:00
Stanislav Shwartsman
8616109eb8 revert back not correct change in fetchdecode 2005-08-05 12:53:09 +00:00
Stanislav Shwartsman
8be190d848 Implemented RDTSCP instruction 2005-08-05 12:47:33 +00:00
Stanislav Shwartsman
ea30a3ef06 Implemented CALL FAR in 64-bit mode 2005-08-04 19:38:51 +00:00
Stanislav Shwartsman
b8485d5f98 Fixed RSP checking 2005-08-04 19:31:59 +00:00
Stanislav Shwartsman
084b4fa2b2 Fixed IRET implementation for long mode 2005-08-03 21:19:11 +00:00
Stanislav Shwartsman
3681126235 Fixed ugly load_ss64/mode changing workaround in exception.cc 2005-08-03 21:10:42 +00:00
Stanislav Shwartsman
a096472646 Fixed NULL SS selector loading for ret_far 2005-08-03 21:01:02 +00:00
Stanislav Shwartsman
c6c721a450 Small fixes for call-far and others 2005-08-02 20:20:22 +00:00
Stanislav Shwartsman
d8ab4e3424 Fully implemented jump_far and ret_far in 64-bit mode.
Note that I am not sure about 100% correctness, I am just coding Intel specs ...
Code review and massive testing still required.
2005-08-02 18:44:20 +00:00
Stanislav Shwartsman
26f0662199 dos2unix 2005-08-01 22:18:40 +00:00
Stanislav Shwartsman
6a07173b3d Split ctrl_xfer_pro.cc to 4 different files according to the operations 2005-08-01 22:06:19 +00:00
Stanislav Shwartsman
f096a80716 Fix code duplication for check_cs descriptor
The function will execute
 - segment is executable code segment
 - conforming/non-conforming segment priviledge checks
 - segment is present
2005-08-01 21:40:17 +00:00
Stanislav Shwartsman
2c6393dd8b Fixed memory corruption in APIC 2005-08-01 18:55:58 +00:00
Stanislav Shwartsman
954aae3f99 Speedup push/pop operations, they actually not needed to do can_push/can_pop checkes, the same checkes already done in read/write_virtial methods
Split push_seg_reg methods according to op size
2005-07-31 17:57:27 +00:00
Stanislav Shwartsman
5da36b7d3d Fixed code duplication, added canonical address checking for RETF in long mode 2005-07-29 06:29:57 +00:00
Stanislav Shwartsman
2b5a812674 Split last bit.cc methods according to os16/32/64 2005-07-25 04:18:20 +00:00
Volker Ruppert
0ff15e9522 - fixed panic caused by operator precedence bug 2005-07-24 08:35:15 +00:00
Stanislav Shwartsman
dea55d5e63 Fix compilation error 2005-07-22 05:00:40 +00:00
Stanislav Shwartsman
51e03f071d Fixed XLAT instruction for x86-64
Small optimization for lazy flags for ADD/ADC/SUB/SBB instructions
Enable RETF64 for same privelege level return
2005-07-21 01:59:05 +00:00
Stanislav Shwartsman
aceb8c683b Initial implementation of RETF64 2005-07-20 01:26:47 +00:00
Stanislav Shwartsman
169fa0c574 Clearify the code. x86-64 code always running in pmode so it is not needed to check if we are in protected mode everytime 2005-07-10 20:32:32 +00:00
Stanislav Shwartsman
4638f09b24 Added BX_INSTR_HLT instrumentation callback 2005-07-07 18:40:35 +00:00
Stanislav Shwartsman
01d8a97613 Try to cleanup/rewrite RepeatSpeedups optimization
This code doesn't add new speedups but makes it very easy
After some validation it could be no problem to enable repeat speedups optimization for REP MOVSx with any address size. And REP STOSx too.
2005-07-04 17:44:08 +00:00
Stanislav Shwartsman
3d2e2162f3 Code indent, no functionality changes 2005-07-01 14:06:02 +00:00
Stanislav Shwartsman
a9dd851fd6 Fixed several PANIC cases:
the PANIC message TSS.limit < 103 should never appear anymore
2005-06-22 18:13:45 +00:00
Stanislav Shwartsman
ce8f1ade07 Some not really significant speedups 2005-06-21 17:01:21 +00:00
Stanislav Shwartsman
afe3ff691d Another fix for FPU tag word restore in FXRESTOR instruction (the tags were assigned to incorrect registers)
Fixed FPU print state status word printing (printed partial status instead of normal status word)
2005-06-18 20:46:08 +00:00
Stanislav Shwartsman
47442d437a Speedup ICAche decWriteStamp operation. The main idea for this speedup was given by h.johansson. 2005-06-16 20:28:27 +00:00
Stanislav Shwartsman
64f6d8c293 Separate force_flags function from read_flags (fix code duplication) 2005-06-16 17:25:04 +00:00
Stanislav Shwartsman
e04b4c5856 Allow zero apic timer count:
terminate the counting if apic timer initial count register was set to zero during the counting.
2005-06-16 16:56:30 +00:00
Stanislav Shwartsman
0b60100a0d Merged patch for Hkan T. Johansson
TLB access bit optimizations
2005-06-14 20:55:57 +00:00
Stanislav Shwartsman
2f4a3367e4 Fixed FPU TAG WORD restore in FXRESTOR instruction 2005-06-13 20:25:16 +00:00
Volker Ruppert
821ff1e87c - clarify operator precedence (needed by MSVC)
- defined symbol BOCHSAPI_MSVCONLY for special cases in MSVC
2005-06-09 17:42:34 +00:00
Stanislav Shwartsman
b5514f42de Merged patch for "compilation outside source directory"
Added missed copyrights for APIC.CC
2005-06-07 05:54:57 +00:00
Volker Ruppert
5e75dc3a10 - some more warnings in MSVC fixed 2005-06-06 20:14:50 +00:00
Stanislav Shwartsman
015ad92958 Added SMP status to TODO file
Removed abusive BX_INFO from WBINVD instruction
The PREFETCHW (3DNow!) instruction should not #UD in x86-64 even on Intel w/o 3DNow!
2005-05-27 01:53:38 +00:00
Stanislav Shwartsman
c026a90779 Unify coding style in CPU methods
NO AFFECT ON EMULATION RESULTS
2005-05-20 20:06:50 +00:00
Stanislav Shwartsman
4e0ca04d31 Fixed compilation problem 2005-05-20 17:04:42 +00:00
Stanislav Shwartsman
663f7d5ef3 CMPXCHG16B instruction implemented 2005-05-19 20:25:16 +00:00
Stanislav Shwartsman
92cc308ad2 implement the correct condition for the segment limit check 2005-05-19 19:46:20 +00:00
Stanislav Shwartsman
61946bd3a4 Fixed compilation error 2005-05-19 18:15:19 +00:00
Stanislav Shwartsman
6df9640844 implement jump_far64 for code segments
the panic message moved to TASK-GATE64 far jmp which is still not implemented
2005-05-19 18:13:08 +00:00
Stanislav Shwartsman
6c318bd047 SFENCE/MFENCE/LFENCE methods not defined in CPU class and they NOP in fetchdecode.cc 2005-05-18 05:05:40 +00:00
Kevin Lawton
f829c9cf93 Typo in CR8 handling in MOV_CqRq/MOV_RqCq had a typo. A switch
target of 7 was used instead of 8.
2005-05-17 22:22:35 +00:00
Stanislav Shwartsman
400b7094c6 Commit patch by kuma neko [yuubyou@gmail.com]
64-bit IDIV uses unsigned overflow test
2005-05-13 14:15:35 +00:00
Stanislav Shwartsman
d10731f162 Update my e-mail in source files
Update committed SF patches in changes
2005-05-12 18:07:48 +00:00
Stanislav Shwartsman
a86002a8bc Improve Bochs instrumentation
Small changes in APIC timer, should fix the bug report
[ 957660 ] >>PANIC<< APIC: R(curr timer count): delta < initial
2005-04-29 21:28:59 +00:00
Stanislav Shwartsman
dbbef1bc1a A lot of debug prints added to APIC.CC
Comment raise of APIC_ERR_TX_ACCEPT_ERR in trigger interrupt when err already set for this vector
2005-04-29 18:38:35 +00:00
Stanislav Shwartsman
19750b0324 Fixed highest_priority_int calculation function
Fixed I/O APIC ID for 8CPU configuration to match BIOS tables
Remove I/O APIC initialization when INIT IPI received
2005-04-27 18:09:27 +00:00
Stanislav Shwartsman
494af8b1f3 Fixed segmentation fault for 2CPU cfg 2005-04-26 19:19:58 +00:00
Stanislav Shwartsman
76af95a9a7 Added debug prints for APIC 2005-04-26 18:30:30 +00:00
Stanislav Shwartsman
4444dc095b Fixed SIGSEGV in 8cpu configuration 2005-04-23 17:52:51 +00:00
Stanislav Shwartsman
77e398b47b Added comments for cpuid flags 2005-04-20 18:12:54 +00:00
Stanislav Shwartsman
501cca67c2 Fix compilation err 2005-04-18 17:41:15 +00:00
Stanislav Shwartsman
163d28b0e8 dos2unix 2005-04-18 17:28:30 +00:00
Stanislav Shwartsman
8482511af3 Fix compilation errors
Add BX_INFO for writing to TSC_MSR (not implemented message)
2005-04-18 17:21:34 +00:00
Stanislav Shwartsman
caa0648188 Move duplicated code to separate function
And fix a bug I added by previous merge
2005-04-17 21:51:59 +00:00
Stanislav Shwartsman
6fa52214b0 Canonical address check for RIP in x86-64 2005-04-17 18:54:54 +00:00
Stanislav Shwartsman
fd02a03516 Fixed broadcast mode 2005-04-16 15:55:00 +00:00
Stanislav Shwartsman
495102369f Fix PAE functionality 2005-04-14 16:44:40 +00:00
Stanislav Shwartsman
0b6a3afb53 Fixed compilation problem in segment_ctrl.pro
Restore back the workaround for segmentation checking in exception.cc until the better solution will be found
2005-04-13 17:13:05 +00:00
Stanislav Shwartsman
9b30cad4c4 Just software changes:
1. Separate interrupt function to 3 different functions (real_mode, long_mode, pmode)
2. Added PANIC messages for not implemented FAR CALL, FAR JUMP and FAR RET in long mode
2005-04-12 18:08:10 +00:00
Stanislav Shwartsman
c2c18d2aa4 Clean fix for loading NULL SS selector in exception.cc 2005-04-11 18:53:04 +00:00
Stanislav Shwartsman
1755589376 Separate pageWriteStamp from ICACHE. The pageWriteStamp has totally independant structure and could be used in future with icache structure. Also it could be significantly speeded up using BX_SMF analog constructions. 2005-04-10 19:42:48 +00:00
Stanislav Shwartsman
6fd9f82c35 Fixed typo in apic.cc
Small speedup for arith64.cc (redundant modC0() call ellimination)
Cleanup
2005-04-02 18:49:44 +00:00
Volker Ruppert
a5fb44c340 - changed data type of bulkIOHostAddr to Bit8u* (fixed compilation on 64 bit hosts) 2005-04-02 11:30:08 +00:00
Stanislav Shwartsman
6d491de4d3 Fixed bug with jumping from long mode when executing interrupt 2005-03-30 22:31:03 +00:00
Stanislav Shwartsman
8e01acfaa1 Change non-error messages from BX_ERROR to BX_DEBUG 2005-03-30 21:43:08 +00:00
Stanislav Shwartsman
0f7f728e86 Added debug messages for interrupt function in long mode
Added mode switch debug prints
2005-03-30 20:53:04 +00:00
Stanislav Shwartsman
52041f60d4 Support for X86_64 in debug CPU method
Fixed debug messages printed from read_virtual_checks
2005-03-30 19:56:02 +00:00
Stanislav Shwartsman
e5c3e3c262 CPU mode enumeration changed 2005-03-29 22:18:13 +00:00
Stanislav Shwartsman
619942cf9a Enable SYSENTER/SYSEXIT together with x86-64 support, these instructions used by gentoo amd64 LiveCD image (at least it WRMSR to SYSENTER MSRs).
SYSENTER/SYSEXIT is not recognized in long mode but it could be used i any other mode without problem
2005-03-29 21:59:44 +00:00
Stanislav Shwartsman
da9091f04a Fixed compatability mode execution bug, compatability mode and long mode should be treated as protected for all protected_mode() checks 2005-03-29 21:37:06 +00:00
Stanislav Shwartsman
0ed560ed3d Enable info fpu command in debugger 2005-03-28 18:19:02 +00:00
Stanislav Shwartsman
22098eefa2 Removed unused instruction (function) methods which were generated as a result of the initial implementation of AMD64 support. 2005-03-28 06:29:22 +00:00
Kevin Lawton
831afe7c40 Removed unused instruction (function) prototypes which were generated as
a result of the initial implementation of AMD64 support.  These appear
  to have been cut-n-paste vestiges.
2005-03-25 21:33:47 +00:00
Kevin Lawton
e6cb602231 Moved macros for duplicate SSE/SSE2 functions from fetchdecode.h to
cpu.h, and defined function prototypes for the case where bochs
  is compiled with a new #define (called StandAloneDecoder) is set.
  This allows for the decoder to be tested separately from bochs.
2005-03-23 01:45:16 +00:00
Kevin Lawton
4e03c4448c Added some comment tags so that a script can pull out relevant parts
of the decoder to test it in standalone mode.  A few lines in cpu.h
  were re-arranged to make this easy, but no real lines of code were
  changed or generated.
Changed a few PANICs to INFOs after testing corresponding cases.
2005-03-22 18:19:55 +00:00
Stanislav Shwartsman
c3fd89eceb More accurate fix for cpu_online_map ellimination 2005-03-20 18:33:02 +00:00
Stanislav Shwartsman
1e37312c14 Remove code duplication 2005-03-20 18:08:46 +00:00
Stanislav Shwartsman
3570f5f629 Reverting back RETF instruction changes made by Kevin Lawton 2005-03-20 18:01:01 +00:00
Stanislav Shwartsman
3074078297 Added CVS version header to all the files.
One more small change in APIC
2005-03-19 20:44:01 +00:00
Stanislav Shwartsman
f77ddd9701 Remove cpu_onlline_map varaible, it wasn't initialized properly and might cause APIC problems 2005-03-19 18:43:00 +00:00
Stanislav Shwartsman
e6e9dd3825 Extend Bochs instrumentation
Compatability fixes
2005-03-17 20:50:57 +00:00
Stanislav Shwartsman
6e53a54907 Extend cpu_mode for :
#define BX_MODE_IA32_REAL       0x0   // CR0.PE=0
#define BX_MODE_IA32_PROTECTED  0x1   // CR0.PE=1, EFLAGS.VM=0
#define BX_MODE_IA32_V8086      0x2   // CR0.PE=1, EFLAGS.VM=1
#define BX_MODE_LONG_COMPAT     0x3   // EFER.LMA = 0, EFER.LME = 1
#define BX_MODE_LONG_64         0x4   // EFER.LMA = 1, EFER.LME = 1
2005-03-15 19:00:04 +00:00
Stanislav Shwartsman
189e55885d put VME initial code in BX_SUPPORT_VME ifdefs 2005-03-13 20:18:37 +00:00
Stanislav Shwartsman
e3bd4e2b34 Update recent closed byg reports
Remove redundant debug prints in VERR instruction emulation
2005-03-13 18:20:26 +00:00
Stanislav Shwartsman
fd13784231 Small cleanup in access.cc
VME feature code should be valid only for CPU LEVEL >= 4
2005-03-12 19:34:18 +00:00
Stanislav Shwartsman
6a36385743 Add more comments for loading segment register in real mode 2005-03-12 18:38:56 +00:00
Stanislav Shwartsman
5a393d2399 Fix for PANIC
1162042 Duke Nukem 3D: >>PANIC<< iret: VM set on stack, CPL!=0
according to Intel and AMD docs the behaviour wasn't correct
2005-03-12 18:09:32 +00:00
Stanislav Shwartsman
2a5a5c2de5 Fixed compilation error for 486 CPU
small fixes for IRET instructionm
2005-03-12 16:40:14 +00:00
Stanislav Shwartsman
714b9c9d22 Added ICACHE statistics 2005-03-10 21:22:15 +00:00
Stanislav Shwartsman
24fa5935c1 Getting little bit closer to VME feature 2005-03-09 22:01:13 +00:00
Stanislav Shwartsman
031cd64827 More code review - changing BX_PANIC to BX_ERROR where implentation matches Intel docs. Also solved two cases when TS exception generated instead of GPF 2005-03-04 21:03:22 +00:00
Stanislav Shwartsman
c30e89289b Fixed R/O pages access in CPL=3 (TLB accessBits bug) 2005-03-03 20:24:52 +00:00
Stanislav Shwartsman
709b218c10 Reduce metaInfo initialization in fetchDecode 2005-03-01 21:44:01 +00:00
Stanislav Shwartsman
23e2895f8e Fixed interrupt function for
286 int/trap gate, in vm8086 mode
2005-03-01 20:55:25 +00:00
Stanislav Shwartsman
dafc5fd193 Fix extdb.cc compilation error 2005-03-01 17:49:34 +00:00