summaryrefslogtreecommitdiff
path: root/src/arch/x86
AgeCommit message (Collapse)Author
2007-08-31X86: Major rework of how regop microops are generated.Gabe Black
The new implementation uses metaclass, and gives a lot more precise control with a lot less verbosity. The flags/no flags reg/imm variants are all handled by the same python class now which supplies a constructor to the right C++ class based on context. --HG-- extra : convert_revision : 712e3ec6de7a5a038da083f79635fd7a687d56e5
2007-08-31X86: Get x86 to compile again after the simobject constructor change.Gabe Black
--HG-- extra : convert_revision : 17a3e16e849bee88892223f0c993b19c15daa554
2007-08-29X86: Fix the sra microop to get the sign bit from the right operand.Gabe Black
--HG-- extra : convert_revision : 71e58dd6dd6918ee403f2e332c47e29acdace464
2007-08-29X86: Implement the movaps instruction.Gabe Black
--HG-- extra : convert_revision : 2aeb1c05205f8ea8f7484e8bacf3fbbc581defd2
2007-08-29X86: Implement the movsd instruction.Gabe Black
--HG-- extra : convert_revision : a5a73e0ddd39144d2aeeb9cc6a299516752fd4c2
2007-08-29X86: Implement the movlpd instruction.Gabe Black
--HG-- extra : convert_revision : dddb20fe48c0ae9de7cd0ba1a1467ecb690056c1
2007-08-29X86: Add an fp move microop.Gabe Black
--HG-- extra : convert_revision : a9d6d3568cd2c6a65df91bf56ee1e43523f04630
2007-08-29X86: Add load and store microops that use the fp registers.Gabe Black
--HG-- extra : convert_revision : 153a055e888d8c47d59758a599dbd38f63008137
2007-08-29X86: Add operands to handle floating point registers.Gabe Black
--HG-- extra : convert_revision : 2e8289dbd3f5dda1221014d4ed0e9450f60de0cf
2007-08-29X86: Flesh out register indexing constants.Gabe Black
--HG-- extra : convert_revision : 56eedc076bbb7962c3976599a15ed93c7cb154c0
2007-08-29X86: Make the fp accessors not panic.Gabe Black
--HG-- extra : convert_revision : c6d08863049a3f8755c53e1f49ce19ad6a2dedc7
2007-08-29X86: Make x86 syscall return just stuff the return value in eax.Gabe Black
--HG-- extra : convert_revision : 800d8a2398d5750c03c642264577c9c772684266
2007-08-28X86: More two byte opcode decoding. I missed two groups in the last changeset.Gabe Black
--HG-- extra : convert_revision : 1a2813b2e7d3e0e02c8f1474f372de5cf16e7d7b
2007-08-28X86: Hook in an implementation for lseek.Gabe Black
--HG-- extra : convert_revision : d2424e73fa8ce56248c4edbda9db2714c4b0a92e
2007-08-28X86: More fully decode two byte opcodes.Gabe Black
This includes the most of the SSE stuff, but not some of the "groups" of instructions. --HG-- extra : convert_revision : 4725c34f3d73971ae1763611685c5877b6c51412
2007-08-28Address translation: De-templatize the GenericTLB class.Gabe Black
--HG-- extra : convert_revision : b605a90a4a1071e39f49085a839fdcd175e09fdb
2007-08-26X86: Make the Ruflag microop work correctly, and make the code a little clearer.Gabe Black
--HG-- extra : convert_revision : c551f51cdda46df99370363ed2d70916db8413eb
2007-08-26X86: Return values for some cpuid functions that match what my development ↵Gabe Black
machine returns. --HG-- extra : convert_revision : e6619da11f43bbe025ceabd06387dd24e1cd883b
2007-08-26X86: Make the microassembler accept lines which are just labels.Gabe Black
The labels on these lines will be associated with whatever the next microop is. --HG-- extra : convert_revision : 80c260e48ec1c16e6325061608e37c95a0610cfa
2007-08-26X86: Make cpuid actually consider the eax parameter and return different values.Gabe Black
--HG-- extra : convert_revision : 527c1cacdd20ab162859bba7f9a6bed33afa2d4f
2007-08-26X86: Fix the sign extension microop so it extends zeros correctly.Gabe Black
--HG-- extra : convert_revision : 9d7ca286ba7709175fa75226320601acce4ced98
2007-08-26X86: Implement cmps (string compare)Gabe Black
--HG-- extra : convert_revision : 0d6b783b2246b8ad8d91e4c63e407307ee11c651
2007-08-26X86: Make shift instructions set some of the flags they're supposed to.Gabe Black
The flag mechanism for microops needs to be fleshd out a little more to allow for custom flag calculation methods for certain microops. Shift is an example where the rules for calculating OF and CF are unique. --HG-- extra : convert_revision : 91981a00c1efd05db702fffa9cea51f912583013
2007-08-26Address translation: Make the page table more flexible.Gabe Black
The page table now stores actual page table entries. It is still a templated class here, but this will be corrected in the near future. --HG-- extra : convert_revision : 804dcc6320414c2b3ab76a74a15295bd24e1d13d
2007-08-26X86: Remove x86 code that attempted to fix misaligned accesses.Gabe Black
--HG-- extra : convert_revision : 42f68010e6498aceb7ed25da278093e99150e4df
2007-08-26Address Translation: Make SE mode use an actual TLB/MMU for translation like FS.Gabe Black
--HG-- extra : convert_revision : a04a30df0b6246e877a1cea35420dbac94b506b1
2007-08-07X86: Added some missing parenthesis in the condition code calculation function.Gabe Black
--HG-- extra : convert_revision : 663021070a4bcc795bb44e1839b8bcec686a42f0
2007-08-07X86: Implemented and hooked in SCAS (scan string)Gabe Black
Fixed the asz assembler symbol. Adjusted the condion checks to have appropriate options. Implemented the SCAS microcode. Attached SCAS into the decoder. --HG-- extra : convert_revision : 17bf9ddae6bc2069e43b076f8f83c4e54fb7966c
2007-08-07X86: Add a format to handle string instructions which can use the repe and ↵Gabe Black
repne prefixes. --HG-- extra : convert_revision : 205fbbb947258bc0ef2915e22d5b32a3df1a1ce2
2007-08-07X86: Overhaul of ruflags to get it to work correctly.Gabe Black
--HG-- extra : convert_revision : 00a36a80a1945806aac9fa7d9d6a3906465dcad2
2007-08-07X86: Make a microcode branch microop.Gabe Black
Also some touch up for ruflag. --HG-- extra : convert_revision : 829947169af25ca6573f53b9430707101c75cc23
2007-08-04X86: Implement microops and instructions that manipulate the flags register.Gabe Black
--HG-- extra : convert_revision : 566841577bf4a98cac0b65292fe0f7daf89a9203
2007-08-04X86: Make 64 bit unaligned accesses work as well as the other sizes.Gabe Black
There is a fundemental flaw in how unaligned accesses are supported, but this is still an improvement. --HG-- extra : convert_revision : 1c20b524ac24cd4a812c876b067495ee6a7ae29f
2007-08-04X86: Make the open flags correct.Gabe Black
--HG-- extra : convert_revision : 2dc81345176d1de247a567d1f748e2b2bd05f829
2007-08-04X86: Make fixed register operands ignore register index extensions from the ↵Gabe Black
REX prefix. The only cases where this was the correct behavior are now handled with the "B" operand type, and doing things this way was breaking some instructions, notably a shift. --HG-- extra : convert_revision : 072346d4f541edaceba7aecc26ba8d2cd756e481
2007-08-04X86: Implement the cmpxchg instruction.Gabe Black
--HG-- extra : convert_revision : b9e172bcb9551edf65c63f26dfa07d771edf3e1e
2007-08-04X86: Start implementing segmentation support.Gabe Black
Make instructions observe segment prefixes, default segment rules, segment base addresses. Also fix some microcode and add sib and riprel "keywords" to the x86 specialization of the microassembler. --HG-- extra : convert_revision : be5a3b33d33f243ed6e1ad63faea8495e46d0ac9
2007-08-04X86: Create a base enum value for indexing into a region of the miscregs.Gabe Black
This lets you index into a group of registers without having to know explicitly which one is the lowest in that group. --HG-- extra : convert_revision : e3cad25a1c5910955204c37177b049ca9834cfd9
2007-08-04X86: Add the arch_prctl system call and fix up some microcoding.Gabe Black
The arch_prctl system call is used to set and get the FS and GS segment bases. The FS segment is use for TLS, so glibc needs to be able to set it up. --HG-- extra : convert_revision : 79501491a15967a7a862add846ff88a934fb1b37
2007-08-02X86: Get rid of some debug warnings.Gabe Black
Get rid of some warnings that were accidentally committed. --HG-- extra : convert_revision : e800dbce253f6ba759932ca47d64bf98129e4177
2007-08-02X86: Finally get the x86 initial stack frame right.Gabe Black
After very carefully reading through the Linux source, I'm pretty confident I now know -exactly- how the initial stack frame is constructed, filled, and aligned. --HG-- extra : convert_revision : 3c654ade7e458bdd5445026860f11175f383a65f
2007-08-02X86: Fix special case with SIB index register and REX prefix.Gabe Black
--HG-- extra : convert_revision : b305708a722f2a08cb55c4548c5616fcbe6c5d68
2007-08-01Fix how the "cmd" parameter is set in se.py and remove hack in x86 process ↵Gabe Black
initialization code. --HG-- extra : convert_revision : 1fc741eea956ebfa4cef488eef4333d1f50617a6
2007-08-01X86: Hide the irrelevant portions of the address components for load and ↵Gabe Black
store microops. --HG-- extra : convert_revision : a5ac6fefa09882f0833537e23f1ac0477bc89bb9
2007-08-01X86: Fix for compilation bug with new cache code.Gabe Black
--HG-- extra : convert_revision : 073c6db0796cd2c11b8293b382b438a2a959b821
2007-08-01X86: Get rid of initialization of R11Gabe Black
R11 is just junk after the start of exectuion because we're "returning" from an execve call and linux destroys the contents of rcx and r11 on system calls. --HG-- extra : convert_revision : 6bf69a50ce56e0355dfdd41524163874340beec0
2007-07-31Add a flag to indicate an instruction triggers a syscall in SE mode.Gabe Black
--HG-- extra : convert_revision : 1d0b3afdd8254f5b2fb4bbff1fa4a0536f78bb06
2007-07-31X86: Add operand type information to the fnstcw and fldw instruction ↵Gabe Black
placeholders. These are the only floating point instructions that get used in my simple hello world test. These instructions are for setting up the floating point control register. Their not being implemented doesn't affect anything because floating point isn't used. --HG-- extra : convert_revision : 4dfb9ef2a5665f034946c504978029e8799e64cd
2007-07-30X86: Add decoding for x87 floating point.Gabe Black
--HG-- extra : convert_revision : 08f0f4a3d77a2c5eb9b5ca0cae7d0be9a72febec
2007-07-30X86: Attach the "DIV" instruction implementation to the decoder.Gabe Black
--HG-- extra : convert_revision : 8aef1c8d1ced2db998ed0d31241cadc17e19eadd