Go to the documentation of this file.
46 #include "fputils/fp80.h"
100 return ((ncc_flags | cc_flags | cfof_bits | df_bit) & 0x3F7FD5)
124 for (
int i = 0;
i < 8; ++
i) {
126 const unsigned tag((ftw >> (2 *
i)) & 0x3);
149 for (
int i = 0;
i < 8; ++
i) {
150 const unsigned xtag(((ftwx >>
i) & 0x1));
155 ftw |= 0x3 << (2 *
i);
169 const uint8_t new_top((
top + spm + 8) % 8);
173 for (
int i =
top;
i != new_top;
i = (
i + 1 + 8) % 8)
174 ftw |= 0x3 << (2 *
i);
175 }
else if (spm < 0) {
179 for (
int i = new_top;
i !=
top;
i = (
i + 1 + 8) % 8)
180 ftw &= ~(0x3 << (2 *
i));
190 memcpy(fp80.bits, _mem, 10);
192 return fp80_cvtd(fp80);
198 fp80_t fp80 = fp80_cvfd(value);
199 memcpy(_mem, fp80.bits, 10);
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
uint8_t convX87TagsToXTags(uint16_t ftw)
Convert an x87 tag word to abridged tag format.
virtual RegVal readIntRegFlat(RegIndex idx) const =0
Flat register interfaces.
uint16_t genX87Tags(uint16_t ftw, uint8_t top, int8_t spm)
Generate and updated x87 tag register after a push/pop operation.
virtual BaseMMU * getMMUPtr()=0
double loadFloat80(const void *_mem)
Load an 80-bit float from memory and convert it to double.
void copyRegs(ThreadContext *src, ThreadContext *dest)
uint16_t convX87XTagsToTags(uint8_t ftwx)
Convert an x87 xtag word to normal tags format.
virtual void setFloatRegFlat(RegIndex idx, RegVal val)=0
void storeFloat80(void *_mem, double value)
Convert and store a double as an 80-bit float.
virtual RegVal readCCRegFlat(RegIndex idx) const =0
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual void setIntRegFlat(RegIndex idx, RegVal val)=0
const uint32_t ccFlagMask
static bool isValidMiscReg(int index)
void setRFlags(ThreadContext *tc, uint64_t val)
Set update the rflags register and internal gem5 state.
virtual RegVal readFloatRegFlat(RegIndex idx) const =0
This is exposed globally, independent of the ISA.
virtual TheISA::PCState pcState() const =0
uint64_t getRFlags(ThreadContext *tc)
Reconstruct the rflags register from the internal gem5 register state.
virtual RegVal readCCReg(RegIndex reg_idx) const =0
virtual void setCCReg(RegIndex reg_idx, RegVal val)=0
virtual void setCCRegFlat(RegIndex idx, RegVal val)=0
virtual RegVal readMiscReg(RegIndex misc_reg)=0
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
virtual void setMiscRegNoEffect(RegIndex misc_reg, RegVal val)=0
void copyMiscRegs(ThreadContext *src, ThreadContext *dest)
Generated on Tue Mar 23 2021 19:41:20 for gem5 by doxygen 1.8.17