tcg-target.h revision 88cc6bfb70dbd23172f00ed679d5f1df8e9d7f53
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync/*
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * Tiny Code Generator for QEMU
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync *
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * Copyright (c) 2008 Fabrice Bellard
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync *
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * Permission is hereby granted, free of charge, to any person obtaining a copy
b2bc8de1367ae24e1b27b53921d0b32ee3df7acdvboxsync * of this software and associated documentation files (the "Software"), to deal
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * in the Software without restriction, including without limitation the rights
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * copies of the Software, and to permit persons to whom the Software is
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * furnished to do so, subject to the following conditions:
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync *
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * The above copyright notice and this permission notice shall be included in
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * all copies or substantial portions of the Software.
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync *
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync * THE SOFTWARE.
43747b1f0bc8302a238fb35e55857a5e9aa1933dvboxsync */
b2bc8de1367ae24e1b27b53921d0b32ee3df7acdvboxsync
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_TARGET_I386 1
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_TARGET_REG_BITS 32
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync//#define TCG_TARGET_WORDS_BIGENDIAN
f5e53763b0a581b0299e98028c6c52192eb06785vboxsync
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_TARGET_NB_REGS 8
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsyncenum {
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync TCG_REG_EAX = 0,
2f0d866e126dd288169fed591c259c1c6b4016e5vboxsync TCG_REG_ECX,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync TCG_REG_EDX,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync TCG_REG_EBX,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync TCG_REG_ESP,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync TCG_REG_EBP,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync TCG_REG_ESI,
9b7ab382b3f9667e8847020e1e58f7143c4d2334vboxsync TCG_REG_EDI,
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync};
8742e4a4ddb7b62d21d96d56dd1baf01c9f22cecvboxsync
8742e4a4ddb7b62d21d96d56dd1baf01c9f22cecvboxsync/* used for function call generation */
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_REG_CALL_STACK TCG_REG_ESP
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_TARGET_STACK_ALIGN 16
8742e4a4ddb7b62d21d96d56dd1baf01c9f22cecvboxsync#define TCG_TARGET_CALL_STACK_OFFSET 0
8742e4a4ddb7b62d21d96d56dd1baf01c9f22cecvboxsync
8742e4a4ddb7b62d21d96d56dd1baf01c9f22cecvboxsync/* Note: must be synced with dyngen-exec.h */
fe554d9c0e3a6de4ba221610ac95a44c7d288e01vboxsync#ifndef VBOX
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_AREG0 TCG_REG_EBP
63787aca0a2a16ec959a5294148726ccf898ddf1vboxsync#define TCG_AREG1 TCG_REG_EBX
63787aca0a2a16ec959a5294148726ccf898ddf1vboxsync#define TCG_AREG2 TCG_REG_ESI
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_AREG3 TCG_REG_EDI
63787aca0a2a16ec959a5294148726ccf898ddf1vboxsync#else
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#define TCG_AREG0 TCG_REG_ESI
63787aca0a2a16ec959a5294148726ccf898ddf1vboxsync#define TCG_AREG1 TCG_REG_EDI
63787aca0a2a16ec959a5294148726ccf898ddf1vboxsync#endif
fe554d9c0e3a6de4ba221610ac95a44c7d288e01vboxsync
b2bc8de1367ae24e1b27b53921d0b32ee3df7acdvboxsync#ifndef VBOX
fe554d9c0e3a6de4ba221610ac95a44c7d288e01vboxsyncstatic inline void flush_icache_range(unsigned long start, unsigned long stop)
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#else
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsyncDECLINLINE(void) flush_icache_range(unsigned long start, unsigned long stop)
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync#endif
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync{
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync}
016096e367cd20c3d3c3fd9a6650b55935c2e31dvboxsync