cipher/Makefile.am: add '-fcoverage-*' to instrumentation munging
[libgcrypt.git] / mpi / i386 / syntax.h
1 /* syntax.h -- Definitions for x86 syntax variations.
2  *
3  *       Copyright (C) 1992, 1994, 1995, 1998, 
4  *                     2001, 2002 Free Software Foundation, Inc.
5  *
6  * This file is part of Libgcrypt.
7  *
8  * Libgcrypt is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU Lesser General Public License as
10  * published by the Free Software Foundation; either version 2.1 of
11  * the License, or (at your option) any later version.
12  *
13  * Libgcrypt is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU Lesser General Public License for more details.
17  *
18  * You should have received a copy of the GNU Lesser General Public
19  * License along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
21  *
22  * Note: This code is heavily based on the GNU MP Library.
23  *       Actually it's the same code with only minor changes in the
24  *       way the data is stored; this is to support the abstraction
25  *       of an optional secure memory allocation which may be used
26  *       to avoid revealing of sensitive data due to paging etc.
27  */
28
29 #include <config.h>
30
31 #ifdef HAVE_GCC_ASM_CFI_DIRECTIVES
32 # define CFI_STARTPROC()            .cfi_startproc
33 # define CFI_ENDPROC()              .cfi_endproc
34 # define CFI_ADJUST_CFA_OFFSET(off) .cfi_adjust_cfa_offset off
35 # define CFI_REL_OFFSET(reg,off)    .cfi_rel_offset reg, off
36 # define CFI_RESTORE(reg)           .cfi_restore reg
37
38 # define CFI_PUSH(reg) \
39         CFI_ADJUST_CFA_OFFSET(4); CFI_REL_OFFSET(reg, 0)
40 # define CFI_POP(reg) \
41         CFI_ADJUST_CFA_OFFSET(-4); CFI_RESTORE(reg)
42 #else
43 # define CFI_STARTPROC()
44 # define CFI_ENDPROC()
45 # define CFI_ADJUST_CFA_OFFSET(off)
46 # define CFI_REL_OFFSET(reg,off)
47 # define CFI_RESTORE(reg)
48
49 # define CFI_PUSH(reg)
50 # define CFI_POP(reg)
51 #endif
52
53 #undef ALIGN
54
55 #if defined (BSD_SYNTAX) || defined (ELF_SYNTAX)
56 #define R(r) %r
57 #define MEM(base)(base)
58 #define MEM_DISP(base,displacement)displacement(R(base))
59 #define MEM_INDEX(base,index,size)(R(base),R(index),size)
60 #ifdef __STDC__
61 #define INSN1(mnemonic,size_suffix,dst)mnemonic##size_suffix dst
62 #define INSN2(mnemonic,size_suffix,dst,src)mnemonic##size_suffix src,dst
63 #else
64 #define INSN1(mnemonic,size_suffix,dst)mnemonic/**/size_suffix dst
65 #define INSN2(mnemonic,size_suffix,dst,src)mnemonic/**/size_suffix src,dst
66 #endif
67 #define TEXT .text
68 #if defined (BSD_SYNTAX)
69 #define ALIGN(log) .align log
70 #endif
71 #if defined (ELF_SYNTAX)
72 #define ALIGN(log) .align 1<<(log)
73 #endif
74 #define GLOBL .globl
75 #endif
76
77 #ifdef INTEL_SYNTAX
78 #define R(r) r
79 #define MEM(base)[base]
80 #define MEM_DISP(base,displacement)[base+(displacement)]
81 #define MEM_INDEX(base,index,size)[base+index*size]
82 #define INSN1(mnemonic,size_suffix,dst)mnemonic dst
83 #define INSN2(mnemonic,size_suffix,dst,src)mnemonic dst,src
84 #define TEXT .text
85 #define ALIGN(log) .align log
86 #define GLOBL .globl
87 #endif
88
89 #ifdef X86_BROKEN_ALIGN
90 #undef ALIGN
91 #define ALIGN(log) .align log,0x90
92 #endif