Commit graph

42 commits

Author SHA1 Message Date
Thilo Schulz
03201aff22 - Add MASM assembler files for MSVC x64 projects to support vm_x86 in x64 mode
- Clean up ftol()/snapvector() mess
- Make use of SSE instructions for ftol()/snapvector() if available
- move ftol/snapvector pure assembler to inline assembler, this will add x86_64 and improve support for different calling conventions
- Set FPU control word at program startup to get consistent behaviour on all platforms
2011-06-13 09:56:39 +00:00
Thilo Schulz
71b8fe477d - Use EmitCallDoSyscall() to call the jump violations function which guarantees 16-byte stack alignment
- Add x64 code for MSVC _asm() blocks, not tested yet.
2011-06-06 14:29:45 +00:00
Thilo Schulz
c174143dc2 - Add x86_64 support to vm_x86.c
- Fix warning on mingw64
2011-06-01 15:17:18 +00:00
Thilo Schulz
4b1418c4ad - Implement opStack protection: Use register %ebx for scaled indexed addressing mode to access opStack, make opStack push/pop operate on %bl portion only
- Add a third pass to VM compilation for computation of jump address offsets, removing the need to dereference into vm->instructionPointers[] for every call/jump
- Make use of 0F opcode prefix relative jumps
- Call Com_Memcpy for OP_BLOCK_COPY
- Fix several missing range checks for vm->dataBase memory access
2011-05-23 00:46:46 +00:00
Thilo Schulz
b8ef880d85 I don't seem to get these constraints right. This should fix it 2011-05-19 03:47:35 +00:00
Thilo Schulz
a42239e1e5 Fix VM call for release version, bug introduced by myself in r1994 2011-05-18 16:06:08 +00:00
Thilo Schulz
3f9ec83ce0 - Use edx for CALLs instead of ecx, as the latter does not require any push to stack
- Make Linux AT&T asm code consistent with the MASM codeblock
2011-05-17 12:07:56 +00:00
Thilo Schulz
017bc7e5da - Add vm_x86.c optimization patch by Eugene C.
- Remove ASM syntax specific code (AT&T vs MASM) for OP_CALL and replace with machine code
2011-05-15 13:15:14 +00:00
Thilo Schulz
716caf396e - Reverting accidentally committed vm_x86.c
- Last commit contained some refactoring for vm_x86_64.c
2011-05-14 14:39:48 +00:00
Thilo Schulz
30059eb8ce ensure that ent->classname is always non-null (for entity numbers up to level.num_entities-1, and ENTITYNUM_WORLD and ENTITYNUM_NONE), for player entities and #ENTITYNUM_NONE in particular, patch by DevHC 2011-05-14 14:34:18 +00:00
Thilo Schulz
36314a1622 Add error handling to malloc as well 2011-05-09 15:40:30 +00:00
Thilo Schulz
e05c9ad1c2 - Make some string functions in g_cmds.c cleaner, by DevHC
- embed VM_FREEBUFFERS() macro in do-while-loop
2011-02-10 18:56:18 +00:00
Thilo Schulz
544a1c0c1a - Use MAP_FAILED error code for check whether mmap() was successful
- Replace various malloc() with Z_Malloc
- Fix several memory leaks when VM compilation failed and Com_Error is called
- Make failed mmap/VirtualAlloc/malloc calls fatal
2011-02-10 18:45:28 +00:00
Ludwig Nussel
c51d99117c use mmap on freebsd too 2010-11-22 07:12:35 +00:00
Tim Angus
5663ff1362 * (bug #4249) Fix buffer overflow in x86 VM 2009-10-19 23:01:00 +00:00
Ryan C. Gordon
33beb9df27 Patched to compile. 2009-09-15 05:30:08 +00:00
Ryan C. Gordon
bccd80e523 Added Intel CC compatibility to vm_x86.c's inline asm.
Fixes Bugzilla #3338.
2009-09-15 03:42:29 +00:00
Ludwig Nussel
84fbc2252f align stack before re-entering engine to make sse work (#4051) 2009-05-02 17:15:51 +00:00
Tim Angus
1af6eb9592 * More robust x86 vm entrypoint/callback assembly (Tron) 2008-08-17 23:22:06 +00:00
Tim Angus
9a5d971705 * Fix memory leak in win32 VM code (arQon/dmitry) 2008-08-06 16:09:29 +00:00
Tim Angus
672cfbf16f * Merge unified-sdl to trunk
* Bump Q3_VERSION to 1.35
2007-09-05 18:17:46 +00:00
Tim Angus
0c99c0c1d2 * Fix a few -pedantic warnings 2007-07-25 21:28:15 +00:00
Thilo Schulz
a08a539c10 Fix JIT compiler code execution on NX-protected win32 OS 2006-05-15 15:57:02 +00:00
Ludwig Nussel
39f2e449b6 use mmap to allocate memory for generated code to be able to set PROT_EXEC 2006-03-04 11:14:44 +00:00
Ludwig Nussel
4c242115dc - change long to intptr_t for 64bit windows compatability
- change vmMain arguments back to int. 64bit types are apparently not
  needed there. Only the syscall function needs them.
2006-02-18 19:07:23 +00:00
Tim Angus
e74947be2c * x86 OS X support 2006-01-15 15:22:13 +00:00
Tim Angus
e95f1f2106 * Fix to the gcc4/-O0 x86 JIT compiler bug 2006-01-06 00:04:05 +00:00
Tim Angus
05e8ab9538 * Added STATUS
* Updated TODO
* Moved ChangeLog to root
* Updated ChangeLog
* s/Foobar/Quake III Arena Source Code/
* Biggest patch EVAR. I wonder how many mail boxes this will fill...
2005-10-29 01:53:09 +00:00
Tim Angus
ffdc69f138 * Deleted code/unix/vm_x86.c - wtf was that about anyway?
* Removed HAVE_VM_NATIVE
* Removed DLL_ONLY
* Replace HAVE_VM_COMPILED with NO_VM_COMPILED -- this means the JIT compiler
  should be enabled on the OS X and VC builds now
* Remove the remainder of the freetype building stuff
2005-10-29 00:23:10 +00:00
Tim Angus
35cb35ff61 * (Non-trivial) fix to the "opStack corrupted in compiled code" bug 2005-10-13 14:47:00 +00:00
Ludwig Nussel
d5fbff3f44 revert int->long change as it breaks on 64bit. Actually only
VM_CallInterpreted hurts as VM_CallCompiled is only used on 32bit. Use
same arg types for consistency nevertheless.
2005-09-26 22:23:46 +00:00
Tim Angus
cde9e9e93c * Fixed some long/int warnings, hopefully this doesn't disrupt the MSVC and/or 64bit builds 2005-09-26 16:13:14 +00:00
Tim Angus
1ad7f9cff1 * Fix to broken win32 fix patch 2005-09-26 13:47:59 +00:00
Zachary Slater
aff4d7d858 Hopefully this will fix win32 msvc.netsuperduper++220000 extra entropy edition
compilation, and I updated the readme a little apparently.
2005-09-26 02:36:52 +00:00
Tim Angus
4bc5c29115 * FreeBSD fixes/updates from Andreas Kohn 2005-09-25 22:04:51 +00:00
Tim Angus
2b8395a4d0 * Replaced lots of __linux__ || __FreeBSD__ with __GNUC__
* MinGW port now uses asm versions of SnapVector and ftol
* Improved the handling of mangled symbols in vm_x86.c
2005-09-23 02:59:15 +00:00
Tim Angus
fcaf343d7f * Port to MinGW 2005-09-22 03:21:33 +00:00
Ludwig Nussel
5ae70d54b0 remove svn:executable property 2005-08-28 17:54:51 +00:00
Zachary Slater
8b1d93b397 Patching from floam with some edits by myself:
I was working on a patch earlier to fix some more things up to be more
modern, and I added a couple lines from that cleanup patch I showed you
on irc. Some commented code was removed, some stuff was made to not be
broke (old head usage), the makefile should install things better, and a
a few GCC warnings were gagged. I also attempted to version it but
you'll probably want to change that to whatever versioning rules you
decide on using.
2005-08-28 03:46:44 +00:00
Zachary Slater
59cce31e75 newlines fixed 2005-08-26 17:39:27 +00:00
Zachary Slater
5b755058f5 Itsa me, quake3io! 2005-08-26 04:48:05 +00:00
Travis Bradshaw
dbe4ddb103 The Quake III Arena sources as originally released under the GPL license on August 20, 2005. 2012-01-31 13:41:34 -06:00