1*27458df8SWei Liu ///////////////////////////////////////////////////////////////////////// 2*27458df8SWei Liu // 3*27458df8SWei Liu // Copyright (C) 2001-2012 The Bochs Project 4*27458df8SWei Liu // Copyright (C) 2017 Google Inc. 5*27458df8SWei Liu // 6*27458df8SWei Liu // This library is free software; you can redistribute it and/or 7*27458df8SWei Liu // modify it under the terms of the GNU Lesser General Public 8*27458df8SWei Liu // License as published by the Free Software Foundation; either 9*27458df8SWei Liu // version 2.1 of the License, or (at your option) any later version. 10*27458df8SWei Liu // 11*27458df8SWei Liu // This library is distributed in the hope that it will be useful, 12*27458df8SWei Liu // but WITHOUT ANY WARRANTY; without even the implied warranty of 13*27458df8SWei Liu // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14*27458df8SWei Liu // Lesser General Public License for more details. 15*27458df8SWei Liu // 16*27458df8SWei Liu // You should have received a copy of the GNU Lesser General Public 17*27458df8SWei Liu // License along with this library; if not, write to the Free Software 18*27458df8SWei Liu // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA B 02110-1301 USA 19*27458df8SWei Liu ///////////////////////////////////////////////////////////////////////// 20*27458df8SWei Liu /* 21*27458df8SWei Liu * x86 eflags functions 22*27458df8SWei Liu */ 23*27458df8SWei Liu 24*27458df8SWei Liu #ifndef X86_EMU_FLAGS_H 25*27458df8SWei Liu #define X86_EMU_FLAGS_H 26*27458df8SWei Liu 27*27458df8SWei Liu #include "cpu.h" 28*27458df8SWei Liu void lflags_to_rflags(CPUX86State *env); 29*27458df8SWei Liu void rflags_to_lflags(CPUX86State *env); 30*27458df8SWei Liu 31*27458df8SWei Liu bool get_PF(CPUX86State *env); 32*27458df8SWei Liu void set_PF(CPUX86State *env, bool val); 33*27458df8SWei Liu bool get_CF(CPUX86State *env); 34*27458df8SWei Liu void set_CF(CPUX86State *env, bool val); 35*27458df8SWei Liu bool get_AF(CPUX86State *env); 36*27458df8SWei Liu void set_AF(CPUX86State *env, bool val); 37*27458df8SWei Liu bool get_ZF(CPUX86State *env); 38*27458df8SWei Liu void set_ZF(CPUX86State *env, bool val); 39*27458df8SWei Liu bool get_SF(CPUX86State *env); 40*27458df8SWei Liu void set_SF(CPUX86State *env, bool val); 41*27458df8SWei Liu bool get_OF(CPUX86State *env); 42*27458df8SWei Liu void set_OF(CPUX86State *env, bool val); 43*27458df8SWei Liu 44*27458df8SWei Liu void SET_FLAGS_OxxxxC(CPUX86State *env, uint32_t new_of, uint32_t new_cf); 45*27458df8SWei Liu 46*27458df8SWei Liu void SET_FLAGS_OSZAPC_SUB32(CPUX86State *env, uint32_t v1, uint32_t v2, 47*27458df8SWei Liu uint32_t diff); 48*27458df8SWei Liu void SET_FLAGS_OSZAPC_SUB16(CPUX86State *env, uint16_t v1, uint16_t v2, 49*27458df8SWei Liu uint16_t diff); 50*27458df8SWei Liu void SET_FLAGS_OSZAPC_SUB8(CPUX86State *env, uint8_t v1, uint8_t v2, 51*27458df8SWei Liu uint8_t diff); 52*27458df8SWei Liu 53*27458df8SWei Liu void SET_FLAGS_OSZAPC_ADD32(CPUX86State *env, uint32_t v1, uint32_t v2, 54*27458df8SWei Liu uint32_t diff); 55*27458df8SWei Liu void SET_FLAGS_OSZAPC_ADD16(CPUX86State *env, uint16_t v1, uint16_t v2, 56*27458df8SWei Liu uint16_t diff); 57*27458df8SWei Liu void SET_FLAGS_OSZAPC_ADD8(CPUX86State *env, uint8_t v1, uint8_t v2, 58*27458df8SWei Liu uint8_t diff); 59*27458df8SWei Liu 60*27458df8SWei Liu void SET_FLAGS_OSZAP_SUB32(CPUX86State *env, uint32_t v1, uint32_t v2, 61*27458df8SWei Liu uint32_t diff); 62*27458df8SWei Liu void SET_FLAGS_OSZAP_SUB16(CPUX86State *env, uint16_t v1, uint16_t v2, 63*27458df8SWei Liu uint16_t diff); 64*27458df8SWei Liu void SET_FLAGS_OSZAP_SUB8(CPUX86State *env, uint8_t v1, uint8_t v2, 65*27458df8SWei Liu uint8_t diff); 66*27458df8SWei Liu 67*27458df8SWei Liu void SET_FLAGS_OSZAP_ADD32(CPUX86State *env, uint32_t v1, uint32_t v2, 68*27458df8SWei Liu uint32_t diff); 69*27458df8SWei Liu void SET_FLAGS_OSZAP_ADD16(CPUX86State *env, uint16_t v1, uint16_t v2, 70*27458df8SWei Liu uint16_t diff); 71*27458df8SWei Liu void SET_FLAGS_OSZAP_ADD8(CPUX86State *env, uint8_t v1, uint8_t v2, 72*27458df8SWei Liu uint8_t diff); 73*27458df8SWei Liu 74*27458df8SWei Liu void SET_FLAGS_OSZAPC_LOGIC32(CPUX86State *env, uint32_t v1, uint32_t v2, 75*27458df8SWei Liu uint32_t diff); 76*27458df8SWei Liu void SET_FLAGS_OSZAPC_LOGIC16(CPUX86State *env, uint16_t v1, uint16_t v2, 77*27458df8SWei Liu uint16_t diff); 78*27458df8SWei Liu void SET_FLAGS_OSZAPC_LOGIC8(CPUX86State *env, uint8_t v1, uint8_t v2, 79*27458df8SWei Liu uint8_t diff); 80*27458df8SWei Liu 81*27458df8SWei Liu #endif /* X86_EMU_FLAGS_H */ 82