summaryrefslogtreecommitdiff
path: root/src/arch/x86/isa
AgeCommit message (Collapse)Author
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: 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-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-26X86: Remove x86 code that attempted to fix misaligned accesses.Gabe Black
--HG-- extra : convert_revision : 42f68010e6498aceb7ed25da278093e99150e4df
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 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: 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-01X86: Fix for compilation bug with new cache code.Gabe Black
--HG-- extra : convert_revision : 073c6db0796cd2c11b8293b382b438a2a959b821
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
2007-07-30X86: Remove a naming conflict between the register index parameters and the ↵Gabe Black
"picked" register values. --HG-- extra : convert_revision : 7b2c1be509478153ebf396841e4cbeccee3e03d1
2007-07-30X86: Set up RIP relative LEA instructions operands correctly.Gabe Black
--HG-- extra : convert_revision : 820cafadd550487c0d62c5082261b0886fce4f0d
2007-07-30X86: Implement unsigned divide. The non-byte version ignores rdx which it ↵Gabe Black
shouldn't. --HG-- extra : convert_revision : 07e5509fb8ed9d73c144d6f52951ebc02e7c0032
2007-07-30X86: Allow RIP relative decode on -all- memory forms of operands.Gabe Black
--HG-- extra : convert_revision : 8af62cda2ce1c4acfa26a028a4f7506647bc27f7
2007-07-30X86: Take into account the regular registers and the microcode registers ↵Gabe Black
when decided whether or not to fold. --HG-- extra : convert_revision : 26feec984dec61799c4afb03a4503a53c35872c5
2007-07-30X86: Hook in the new instructions.Gabe Black
--HG-- extra : convert_revision : c4233001b35b52161083482841593ec28da6ff7d
2007-07-30X86: Implement a stub CPUID function which is hardcode to return certain values.Gabe Black
--HG-- extra : convert_revision : 4085e04fd13e834646106faa55726d07d9631f42
2007-07-30X86: Force jumps to use 64 bit operand size.Gabe Black
--HG-- extra : convert_revision : 1c3685e7f4d07d5b4ded6c78b794964f51a358a9
2007-07-30X86: Make instructions use pick, and implement/adjust some multiplication ↵Gabe Black
microops and instructions. --HG-- extra : convert_revision : 5c56f6819ee07d936b388b3d1810a3b73db84f9c
2007-07-30X86: missed a file which adds a "fold" bit.Gabe Black
--HG-- extra : convert_revision : 2c8eea425221d069a9bb888c8f18839843061899
2007-07-30Make the register indices use the appropriate "fold" bit.Gabe Black
--HG-- extra : convert_revision : 89e15e2ef1f709f2c09238b78f94505ce8ef146d
2007-07-30X86: Make disassembly use the final register index. Add bits to indicate ↵Gabe Black
whether or not register indexes should be "folded". --HG-- extra : convert_revision : 4b46e71ca91e480f6e1662b7f37b75240d6598e9
2007-07-30X86: Implement LEAVEGabe Black
--HG-- extra : convert_revision : c642d5018ece82c644e1cfa389b2d3dbd6ab5ffd
2007-07-30X86: Add a bitfield to indicate whether or not an REX prefix was present.Gabe Black
--HG-- extra : convert_revision : 9c4802f6c6e4eaab36aac900e2c7576682cb0f33
2007-07-29X86: Make logic instructions flag setting work.Gabe Black
The instructions now ask for the appropriate flags to be set, and the microops do the "right thing" with the CF and OF flags, namely zero them. --HG-- extra : convert_revision : 85138a832f44c879bf8a11bd3a35b58be6272ef3
2007-07-29X86: Make arithmetic instructions set the appropriate flags.Gabe Black
--HG-- extra : convert_revision : 3bdef3876c7b86bc93365edee876b74a201d625f
2007-07-29X86: Make limm use merge and allow overriding the data size.Gabe Black
--HG-- extra : convert_revision : c6057226b8ff8f272612a9d3bf7d1d9ba90c819b
2007-07-29X86: Fix popa and push with the stack pointer.Gabe Black
POPA used st instead of ld, and it didn't skip rsp. push rsp needs to store the -original- value of the stack pointer. --HG-- extra : convert_revision : 376370c99b6ab60fb2bc4cd4f0a6dce71153ad06
2007-07-26X86: Hook in shift and rotate by one instructions, and NOT.Gabe Black
--HG-- extra : convert_revision : b3ab74e09f5cd02671cc6425c8cb8638bd58cbee
2007-07-26X86: Fix pc relative versions of add and subtract.Gabe Black
--HG-- extra : convert_revision : c7e578aae8d36aa5d279fc27d6d7d28ed0a54181
2007-07-26X86: Implement rotate-by-one instructions, and make register rotates use ↵Gabe Black
registers. --HG-- extra : convert_revision : 701691951688ecefdc6450d31076b45e9af15324
2007-07-26X86: Implement shift-by-one instructions, and make register shifts use ↵Gabe Black
registers. --HG-- extra : convert_revision : ce4af3e56b45821e0a8b27f288b532d2f9dd3336
2007-07-26X86: Add functions to read and write to an exec context.Gabe Black
These functions take care of calling the thread contexts read and write functions with the right sized data type, and handle unaligned accesses. --HG-- extra : convert_revision : b4b59ab2b22559333035185946bae3eab316c879
2007-07-26X86: Fix carry calculation for subtraction based microops.Gabe Black
The carry flag should be calculated using the -complement- of the second operand, not it's negation. The carry in which is part of computing the 2's complement may induce a carry, but if you've already caused the carry before you get the carry computing logic involved, it will miss it. --HG-- extra : convert_revision : 318cf86929664fc52ed9e023606a9e892eba635c
2007-07-26Implement NOTGabe Black
--HG-- extra : convert_revision : 09cbed6332224d06644d401f21178eb7914993df