1c896fe29Sbellard /* 2c896fe29Sbellard * Tiny Code Generator for QEMU 3c896fe29Sbellard * 4c896fe29Sbellard * Copyright (c) 2008 Fabrice Bellard 5c896fe29Sbellard * 6c896fe29Sbellard * Permission is hereby granted, free of charge, to any person obtaining a copy 7c896fe29Sbellard * of this software and associated documentation files (the "Software"), to deal 8c896fe29Sbellard * in the Software without restriction, including without limitation the rights 9c896fe29Sbellard * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10c896fe29Sbellard * copies of the Software, and to permit persons to whom the Software is 11c896fe29Sbellard * furnished to do so, subject to the following conditions: 12c896fe29Sbellard * 13c896fe29Sbellard * The above copyright notice and this permission notice shall be included in 14c896fe29Sbellard * all copies or substantial portions of the Software. 15c896fe29Sbellard * 16c896fe29Sbellard * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17c896fe29Sbellard * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18c896fe29Sbellard * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19c896fe29Sbellard * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20c896fe29Sbellard * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21c896fe29Sbellard * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22c896fe29Sbellard * THE SOFTWARE. 23c896fe29Sbellard */ 2414e54f8eSMarkus Armbruster 2514e54f8eSMarkus Armbruster #ifndef I386_TCG_TARGET_H 2614e54f8eSMarkus Armbruster #define I386_TCG_TARGET_H 27c896fe29Sbellard 28f6bff89dSRichard Henderson #define TCG_TARGET_INSN_UNIT_SIZE 1 29f6bff89dSRichard Henderson 3078cd7b83SRichard Henderson #ifdef __x86_64__ 31770c2fc7SRichard Henderson # define TCG_TARGET_NB_REGS 32 32*26a75d12SRichard Henderson # define MAX_CODE_GEN_BUFFER_SIZE (2 * GiB) 335d8a4f8fSRichard Henderson #else 34770c2fc7SRichard Henderson # define TCG_TARGET_NB_REGS 24 35*26a75d12SRichard Henderson # define MAX_CODE_GEN_BUFFER_SIZE UINT32_MAX 365d8a4f8fSRichard Henderson #endif 37c896fe29Sbellard 38771142c2SRichard Henderson typedef enum { 39c896fe29Sbellard TCG_REG_EAX = 0, 40c896fe29Sbellard TCG_REG_ECX, 41c896fe29Sbellard TCG_REG_EDX, 42c896fe29Sbellard TCG_REG_EBX, 43c896fe29Sbellard TCG_REG_ESP, 44c896fe29Sbellard TCG_REG_EBP, 45c896fe29Sbellard TCG_REG_ESI, 46c896fe29Sbellard TCG_REG_EDI, 475d8a4f8fSRichard Henderson 485d8a4f8fSRichard Henderson /* 64-bit registers; always define the symbols to avoid 495d8a4f8fSRichard Henderson too much if-deffing. */ 505d8a4f8fSRichard Henderson TCG_REG_R8, 515d8a4f8fSRichard Henderson TCG_REG_R9, 525d8a4f8fSRichard Henderson TCG_REG_R10, 535d8a4f8fSRichard Henderson TCG_REG_R11, 545d8a4f8fSRichard Henderson TCG_REG_R12, 555d8a4f8fSRichard Henderson TCG_REG_R13, 565d8a4f8fSRichard Henderson TCG_REG_R14, 575d8a4f8fSRichard Henderson TCG_REG_R15, 58770c2fc7SRichard Henderson 59770c2fc7SRichard Henderson TCG_REG_XMM0, 60770c2fc7SRichard Henderson TCG_REG_XMM1, 61770c2fc7SRichard Henderson TCG_REG_XMM2, 62770c2fc7SRichard Henderson TCG_REG_XMM3, 63770c2fc7SRichard Henderson TCG_REG_XMM4, 64770c2fc7SRichard Henderson TCG_REG_XMM5, 65770c2fc7SRichard Henderson TCG_REG_XMM6, 66770c2fc7SRichard Henderson TCG_REG_XMM7, 67770c2fc7SRichard Henderson 68770c2fc7SRichard Henderson /* 64-bit registers; likewise always define. */ 69770c2fc7SRichard Henderson TCG_REG_XMM8, 70770c2fc7SRichard Henderson TCG_REG_XMM9, 71770c2fc7SRichard Henderson TCG_REG_XMM10, 72770c2fc7SRichard Henderson TCG_REG_XMM11, 73770c2fc7SRichard Henderson TCG_REG_XMM12, 74770c2fc7SRichard Henderson TCG_REG_XMM13, 75770c2fc7SRichard Henderson TCG_REG_XMM14, 76770c2fc7SRichard Henderson TCG_REG_XMM15, 77770c2fc7SRichard Henderson 785d8a4f8fSRichard Henderson TCG_REG_RAX = TCG_REG_EAX, 795d8a4f8fSRichard Henderson TCG_REG_RCX = TCG_REG_ECX, 805d8a4f8fSRichard Henderson TCG_REG_RDX = TCG_REG_EDX, 815d8a4f8fSRichard Henderson TCG_REG_RBX = TCG_REG_EBX, 825d8a4f8fSRichard Henderson TCG_REG_RSP = TCG_REG_ESP, 835d8a4f8fSRichard Henderson TCG_REG_RBP = TCG_REG_EBP, 845d8a4f8fSRichard Henderson TCG_REG_RSI = TCG_REG_ESI, 855d8a4f8fSRichard Henderson TCG_REG_RDI = TCG_REG_EDI, 865740d9f7SRichard Henderson 875740d9f7SRichard Henderson TCG_AREG0 = TCG_REG_EBP, 8866c0285dSRichard Henderson TCG_REG_CALL_STACK = TCG_REG_ESP 89771142c2SRichard Henderson } TCGReg; 90c896fe29Sbellard 91cb9c377fSPaolo Bonzini #endif 92