xref: /openbmc/qemu/target/i386/emulate/x86_flags.h (revision 1721fe75df1cbabf2665a2b76a6e7b5bc0fc036b)
127458df8SWei Liu /////////////////////////////////////////////////////////////////////////
227458df8SWei Liu //
327458df8SWei Liu //  Copyright (C) 2001-2012  The Bochs Project
427458df8SWei Liu //  Copyright (C) 2017 Google Inc.
527458df8SWei Liu //
627458df8SWei Liu //  This library is free software; you can redistribute it and/or
727458df8SWei Liu //  modify it under the terms of the GNU Lesser General Public
827458df8SWei Liu //  License as published by the Free Software Foundation; either
927458df8SWei Liu //  version 2.1 of the License, or (at your option) any later version.
1027458df8SWei Liu //
1127458df8SWei Liu //  This library is distributed in the hope that it will be useful,
1227458df8SWei Liu //  but WITHOUT ANY WARRANTY; without even the implied warranty of
1327458df8SWei Liu //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1427458df8SWei Liu //  Lesser General Public License for more details.
1527458df8SWei Liu //
1627458df8SWei Liu //  You should have received a copy of the GNU Lesser General Public
17*fd68168eSSean Wei //  License along with this library; if not, see
18*fd68168eSSean Wei //  <https://www.gnu.org/licenses/>.
1927458df8SWei Liu /////////////////////////////////////////////////////////////////////////
2027458df8SWei Liu /*
2127458df8SWei Liu  * x86 eflags functions
2227458df8SWei Liu  */
2327458df8SWei Liu 
2427458df8SWei Liu #ifndef X86_EMU_FLAGS_H
2527458df8SWei Liu #define X86_EMU_FLAGS_H
2627458df8SWei Liu 
2727458df8SWei Liu #include "cpu.h"
2827458df8SWei Liu void lflags_to_rflags(CPUX86State *env);
2927458df8SWei Liu void rflags_to_lflags(CPUX86State *env);
3027458df8SWei Liu 
3127458df8SWei Liu bool get_CF(CPUX86State *env);
3227458df8SWei Liu void set_CF(CPUX86State *env, bool val);
3327458df8SWei Liu 
345b80dcf9SPaolo Bonzini void SET_FLAGS_OxxxxC(CPUX86State *env, bool new_of, bool new_cf);
3527458df8SWei Liu 
3627458df8SWei Liu void SET_FLAGS_OSZAPC_SUB32(CPUX86State *env, uint32_t v1, uint32_t v2,
3727458df8SWei Liu                             uint32_t diff);
3827458df8SWei Liu void SET_FLAGS_OSZAPC_SUB16(CPUX86State *env, uint16_t v1, uint16_t v2,
3927458df8SWei Liu                             uint16_t diff);
4027458df8SWei Liu void SET_FLAGS_OSZAPC_SUB8(CPUX86State *env, uint8_t v1, uint8_t v2,
4127458df8SWei Liu                            uint8_t diff);
4227458df8SWei Liu 
4327458df8SWei Liu void SET_FLAGS_OSZAPC_ADD32(CPUX86State *env, uint32_t v1, uint32_t v2,
4427458df8SWei Liu                             uint32_t diff);
4527458df8SWei Liu void SET_FLAGS_OSZAPC_ADD16(CPUX86State *env, uint16_t v1, uint16_t v2,
4627458df8SWei Liu                             uint16_t diff);
4727458df8SWei Liu void SET_FLAGS_OSZAPC_ADD8(CPUX86State *env, uint8_t v1, uint8_t v2,
4827458df8SWei Liu                            uint8_t diff);
4927458df8SWei Liu 
5027458df8SWei Liu void SET_FLAGS_OSZAP_SUB32(CPUX86State *env, uint32_t v1, uint32_t v2,
5127458df8SWei Liu                            uint32_t diff);
5227458df8SWei Liu void SET_FLAGS_OSZAP_SUB16(CPUX86State *env, uint16_t v1, uint16_t v2,
5327458df8SWei Liu                            uint16_t diff);
5427458df8SWei Liu void SET_FLAGS_OSZAP_SUB8(CPUX86State *env, uint8_t v1, uint8_t v2,
5527458df8SWei Liu                           uint8_t diff);
5627458df8SWei Liu 
5727458df8SWei Liu void SET_FLAGS_OSZAP_ADD32(CPUX86State *env, uint32_t v1, uint32_t v2,
5827458df8SWei Liu                            uint32_t diff);
5927458df8SWei Liu void SET_FLAGS_OSZAP_ADD16(CPUX86State *env, uint16_t v1, uint16_t v2,
6027458df8SWei Liu                            uint16_t diff);
6127458df8SWei Liu void SET_FLAGS_OSZAP_ADD8(CPUX86State *env, uint8_t v1, uint8_t v2,
6227458df8SWei Liu                           uint8_t diff);
6327458df8SWei Liu 
6427458df8SWei Liu void SET_FLAGS_OSZAPC_LOGIC32(CPUX86State *env, uint32_t v1, uint32_t v2,
6527458df8SWei Liu                               uint32_t diff);
6627458df8SWei Liu void SET_FLAGS_OSZAPC_LOGIC16(CPUX86State *env, uint16_t v1, uint16_t v2,
6727458df8SWei Liu                               uint16_t diff);
6827458df8SWei Liu void SET_FLAGS_OSZAPC_LOGIC8(CPUX86State *env, uint8_t v1, uint8_t v2,
6927458df8SWei Liu                              uint8_t diff);
7027458df8SWei Liu 
7127458df8SWei Liu #endif /* X86_EMU_FLAGS_H */
72