Macros |
#define | MOVE2(operand_size, DST, SRC) |
#define | helper_LOOPS(NAME, X) |
#define | helper_LDT(NAME, VAR, MTD) |
#define | helper_SDT(NAME, VAR, MTD) |
#define | NCHECK(X) { if (X) break; } |
#define | FEATURE(X, Y) { if (feature & (X)) Y; } |
#define | MOVE2(operand_size, DST, SRC) |
| Move.
|
#define | helper_LOOPS(NAME, X) |
#define | helper_LDT(NAME, VAR, MTD) |
#define | helper_SDT(NAME, VAR, MTD) |
#define | NCHECK(X) { if (X) break; } |
#define | FEATURE(X, Y) { if (feature & (X)) Y; } |
Functions |
int | cpl0_test () |
| Check whether CPL0 is required.
|
int | handle_segment (CpuState::Descriptor *desc, unsigned &virt, unsigned length, bool write, bool stackop) |
| Add base and check segment type and limit.
|
template<unsigned operand_size> |
int | logical_mem (CpuState::Descriptor *desc, unsigned virt, bool write, void *&res, bool stackop=false) |
template<unsigned operand_size> |
int | helper_JMP_absolute (unsigned nrip) |
| Perform an absolute JMP.
|
template<unsigned feature, unsigned operand_size> |
int | __attribute__ ((regparm(3))) string_helper() |
int | helper_MOV__CR0__EDX () |
| Move from control register.
|
int | helper_MOV__EDX__CR0 () |
| Move to control register.
|
int | helper_LMSW (unsigned short value) |
int | desc_get_base (unsigned short selector, unsigned long &base, bool ext) |
int | load_gdt_descriptor (Descriptor &desc, unsigned short selector, bool ext) |
int | load_idt_descriptor (Descriptor &desc, unsigned event) |
int | desc_set_flag (Descriptor &desc, unsigned short selector, unsigned char flag, bool ext) |
int | helper_LTR (unsigned short selector) |
int | helper_LLDT (unsigned short selector) |
int | set_segment (CpuState::Descriptor *seg, unsigned short sel, bool cplcheck=true) |
int | helper_far_jmp (unsigned tmp_cs, unsigned tmp_eip, unsigned tmp_flag) |
template<unsigned operand_size, bool lcall> |
int | helper_lcall (void *tmp_src) |
template<unsigned operand_size> |
int | helper_LJMP (void *tmp_src) |
template<unsigned operand_size> |
int | helper_LCALL (void *tmp_src) |
template<unsigned operand_size> |
int | helper_IRET () |
int | idt_traversal (unsigned event, unsigned error_code) |
int | helper_INT (unsigned char vector) |
int | helper_INVLPG () |
int | helper_FWAIT () |
int | helper_MOV__DB0__EDX () |
int | helper_MOV__EDX__DB0 () |
int | helper_FXSAVE () |
| fxsave.
|
int | helper_FRSTOR () |
void | helper_AAM (unsigned char imm) |
void | helper_AAD (unsigned char imm) |
void | helper_XLAT () |
template<unsigned operand_size> |
void | helper_ENTER (unsigned *imm) |
Instruction helper.
Copyright (C) 2009-2010, Bernhard Kauer bk@vm.nosp@m.mon..nosp@m.org Economic rights: Technische Universitaet Dresden (Germany)
This file is part of Vancouver.
Vancouver is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 2 as published by the Free Software Foundation.
Vancouver is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version 2 for more details.