summaryrefslogtreecommitdiff
path: root/src/arch/x86
AgeCommit message (Collapse)Author
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: Missed a file for adding a bit to indicate that an REX prefix was present.Gabe Black
--HG-- extra : convert_revision : f1bbd5165a7415d0daf27660575d30c41510f531
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: Initial stack frame fixes and constant shuffling.Gabe Black
The initial stack frame for x86 is now substantially more correct. The fixes made here can be back ported to SPARC and possible the other ISAs as well. The auxiliary vector types were moved to the LiveProcess base class because they are independent of ISA. Some of the types may only apply to Linux, though, so they may have to be moved. --HG-- extra : convert_revision : 89ace35fcc8eb9586d2fee8eeccbc3686499ef24
2007-07-29X86: Make limm use merge and allow overriding the data size.Gabe Black
--HG-- extra : convert_revision : c6057226b8ff8f272612a9d3bf7d1d9ba90c819b
2007-07-29X86: return -return_value.value() on failure.Gabe Black
--HG-- extra : convert_revision : d8e1486ff075b2917be62a0008f83fd6c9e4c09a
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-29X86: Fix a bug with mergeGabe Black
Merge was returning the value to merge in, not the actual result of the merge. --HG-- extra : convert_revision : 230b4b5064037d099ae7859edabdf5be84603849
2007-07-28X86: Fix a comment and adjust the stack base address.Gabe Black
The stack base on my development machine starts one page below where it needs to. I don't know why it does, but I've duplicated it in m5. --HG-- extra : convert_revision : c4783ba885b90f17e843f61e07af0bc3330a74bc
2007-07-28X86: Fix up auxiliary vectors.Gabe Black
The type constants should go into an architecture independent spot since they are universal to all Linux elf binaries. The right value for some of the vectors needs to be determined. Also, x86 does not store argc or argv_array_base in registers like some other architectures. --HG-- extra : convert_revision : 8d3f6a3e028d881d3c41e8ddf4f29d25738b529c
2007-07-26X86: Fix argument register indexing.Gabe Black
Code was assuming that all argument registers followed in order from ArgumentReg0. There is now an ArgumentReg array which is indexed to find the right index. There is a constant, NumArgumentRegs, which can be used to protect against using an invalid ArgumentReg. --HG-- extra : convert_revision : f448a3ca4d6adc3fc3323562870f70eec05a8a1f
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-26Add functions for mmap and brk.Gabe Black
--HG-- extra : convert_revision : 3d0340a2aae87b3462d6562b34ac7e02c685c1ef
2007-07-26Implement NOTGabe Black
--HG-- extra : convert_revision : 09cbed6332224d06644d401f21178eb7914993df
2007-07-24Hook in a bunch of new instructions, fix a few minor bugs, and expand out ↵Gabe Black
one of the prefix multiplexed opcode groups. --HG-- extra : convert_revision : b5afd54a180a8fbdf9a892b1a2316fcf0d11afc6
2007-07-24Add a tgt_iovec structure to support writev, change the name of X86Linux to ↵Gabe Black
X86Linux64, add some syscalls. --HG-- extra : convert_revision : 9c13e9c68f331fe6c4a9abd96f7aee0f064101fc
2007-07-24Add a special case for "test" which needs an immediate even though ↵Gabe Black
everything else with it's opcode doesn't. Also made some spacing consistent. --HG-- extra : convert_revision : 72a317f29c11705782e19840bef24354214d3143
2007-07-24The groups of instructions hanging off opcode 71h, 72h, and 73h all need a ↵Gabe Black
byte immediate --HG-- extra : convert_revision : 9559047adfec1490c2d40065442a579549624fcc
2007-07-24Make the shift and rotate microops mask the shift/rotate amount correctly.Gabe Black
--HG-- extra : convert_revision : 31c5d3fa8ef0d37494d0e35cef31be6056d5d93f
2007-07-24Fix immediate shifts. Implement register shifts.Gabe Black
--HG-- extra : convert_revision : 0b83422ad3c190021e46cada07e64d8d57d29859
2007-07-24Fix immediate rotates and add register ones.Gabe Black
--HG-- extra : convert_revision : a6b9cee59019ea0f906c8a8e76eeb2cd73093671
2007-07-24Clean out part of an old comment.Gabe Black
--HG-- extra : convert_revision : 6a6b2a06576ebe7383f7ce0e4e9f96bc96b84b56
2007-07-24Implement cmov.Gabe Black
--HG-- extra : convert_revision : 2e92623b53c1fe8b4da3fef3486c0dcd8d5ef9f5
2007-07-24Implement cdqe and cqo, which are also called cbw and cwde, and cwd and cdq ↵Gabe Black
respectively, depending on the operand size. --HG-- extra : convert_revision : 67ac035c68608d7260c21ce32009b344f3834e46
2007-07-24Implement setcc.Gabe Black
--HG-- extra : convert_revision : 7a47b9971fe9e4ac638b275fb56fdcba08c2d671
2007-07-24Get rid of an old comment.Gabe Black
--HG-- extra : convert_revision : 1b86a7f60489bc65a03919b27afd4dfbe4e09bba
2007-07-24Get rid of an old commentGabe Black
--HG-- extra : convert_revision : 4d626721ad54af9cbf5b0c07a3a6e8a05e4e9ab5
2007-07-23Implement pusha, popa, three operand imul, hook them into the decoder, and ↵Gabe Black
clean up the decoder a little. --HG-- extra : convert_revision : c1b8f0f433f629e4104e2b04addcdaabf57595e3
2007-07-23Make the operand size reflect the size specifier on the operand tags, and ↵Gabe Black
implement NEG --HG-- extra : convert_revision : da73ed6820d57f083c18f44b2fa868fc0976dd16
2007-07-22Add the "open" syscall.Gabe Black
--HG-- extra : convert_revision : d405ed5d3738639809dd2887955db9253138ccbb
2007-07-22Fixed immediate byte accounting bug.Gabe Black
--HG-- extra : convert_revision : ee5275da14a2923b9a525ae5b5c582c15df4608a
2007-07-22Fixed displacement size bug.Gabe Black
--HG-- extra : convert_revision : c39249ef598c1bd555098d688381dc62541a07c0
2007-07-21Implemented and hooked in xchg, rotate with carry, and ret instructionsGabe Black
--HG-- extra : convert_revision : a8e67b0ab4072308f01e0df7f7ee05b31f605a35
2007-07-21Implement rotate with carry microops.Gabe Black
--HG-- extra : convert_revision : 1d7ff6611e5b4766a5257c1e73681fabbe5f6d76
2007-07-20Fixed the distinction between far and near versions of jmp, call and ret. ↵Gabe Black
Implemented some shifts, rotates, and pushes. --HG-- extra : convert_revision : fcb06189ff213e82da16ac43231feb308cb3a285
2007-07-20Implement UD2 and replace the place holder in the decoder.Gabe Black
--HG-- extra : convert_revision : 16d0d2b2ddad8759698fa4aa668c22063307c72b
2007-07-20Make the "name" function const.Gabe Black
--HG-- extra : convert_revision : eb71bc3edd92a544a5333786635fce550aaef233
2007-07-20Implement adc and sbb instructions and microops.Gabe Black
--HG-- extra : convert_revision : a2d3068c5b487f4fa7bf5c9cebba7753bc390bfa
2007-07-20Implement the rest of the conditional jump instructions and hook them into ↵Gabe Black
the decoder. --HG-- extra : convert_revision : 8d1d6abce29371def560e1c3f31dabb4de01366f
2007-07-20Make the decoder take advantage of the new "B" operand format which takes a ↵Gabe Black
register index from the opcode itself. --HG-- extra : convert_revision : 35f9be6559ee9833049eda1817982efdde7082be