From 32002049c524f3c822d7db5d932ed5ad08895de2 Mon Sep 17 00:00:00 2001 From: hsc Date: Mon, 16 Apr 2012 11:42:23 +0000 Subject: [PATCH] FailBochs: access to more CPU flags git-svn-id: https://www4.informatik.uni-erlangen.de/i4svn/danceos/trunk/devel/fail@1076 8c4709b5-6ec9-48aa-a5cd-a96041d1645a --- core/SAL/bochs/BochsRegister.hpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/core/SAL/bochs/BochsRegister.hpp b/core/SAL/bochs/BochsRegister.hpp index 7525eded..2cceabfe 100644 --- a/core/SAL/bochs/BochsRegister.hpp +++ b/core/SAL/bochs/BochsRegister.hpp @@ -144,6 +144,18 @@ class BxFlagsReg : public BochsRegister bool getSignFlag() const { return (BX_CPU(0)->get_SF()); } bool getOverflowFlag() const { return (BX_CPU(0)->get_OF()); } + bool getTrapFlag() const { return (BX_CPU(0)->get_TF()); } + bool getInterruptFlag() const { return (BX_CPU(0)->get_IF()); } + bool getDirectionFlag() const { return (BX_CPU(0)->get_DF()); } + unsigned getIOPrivilegeLevel() const { return (BX_CPU(0)->get_IOPL()); } + bool getNestedTaskFlag() const { return (BX_CPU(0)->get_NT()); } + bool getResumeFlag() const { return (BX_CPU(0)->get_RF()); } + bool getVMFlag() const { return (BX_CPU(0)->get_VM()); } + bool getAlignmentCheckFlag() const { return (BX_CPU(0)->get_AC()); } + bool getVInterruptFlag() const { return (BX_CPU(0)->get_VIF()); } + bool getVInterruptPendingFlag() const { return (BX_CPU(0)->get_VIP()); } + bool getIdentificationFlag() const { return (BX_CPU(0)->get_ID()); } + /** * Sets/resets various status FLAGS. */ @@ -153,6 +165,18 @@ class BxFlagsReg : public BochsRegister void setSignFlag(bool bit) { BX_CPU(0)->set_SF(bit); } void setOverflowFlag(bool bit) { BX_CPU(0)->set_OF(bit); } + void setTrapFlag(bool bit) { BX_CPU(0)->set_TF(bit); } + void setInterruptFlag(bool bit) { BX_CPU(0)->set_IF(bit); } + void setDirectionFlag(bool bit) { BX_CPU(0)->set_DF(bit); } + void setIOPrivilegeLevel(unsigned lvl) { BX_CPU(0)->set_IOPL(lvl); } + void setNestedTaskFlag(bool bit) { BX_CPU(0)->set_NT(bit); } + void setResumeFlag(bool bit) { BX_CPU(0)->set_RF(bit); } + void setVMFlag(bool bit) { BX_CPU(0)->set_VM(bit); } + void setAlignmentCheckFlag(bool bit) { BX_CPU(0)->set_AC(bit); } + void setVInterruptFlag(bool bit) { BX_CPU(0)->set_VIF(bit); } + void setVInterruptPendingFlag(bool bit) { BX_CPU(0)->set_VIP(bit); } + void setIdentificationFlag(bool bit) { BX_CPU(0)->set_ID(bit); } + /** * Sets the content of the status register. * @param data the new register data to be written; note that only the