Switched to GPLv3.
[gnupg.git] / mpi / i386 / syntax.h
1 /* syntax.h -- Definitions for x86 syntax variations.
2  *
3  *       Copyright (C) 1992, 1994, 1995, 1998, 
4  *                     2001 Free Software Foundation, Inc.
5  *
6  * GnuPG is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GnuPG is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, see <http://www.gnu.org/licenses/>.
18  *
19  * Note: This code is heavily based on the GNU MP Library.
20  *       Actually it's the same code with only minor changes in the
21  *       way the data is stored; this is to support the abstraction
22  *       of an optional secure memory allocation which may be used
23  *       to avoid revealing of sensitive data due to paging etc.
24  *       The GNU MP Library itself is published under the LGPL;
25  *       however I decided to publish this code under the plain GPL.
26  */
27
28 #undef ALIGN
29
30 #if defined (BSD_SYNTAX) || defined (ELF_SYNTAX)
31 #define R(r) %r
32 #define MEM(base)(base)
33 #define MEM_DISP(base,displacement)displacement(R(base))
34 #define MEM_INDEX(base,index,size)(R(base),R(index),size)
35 #ifdef __STDC__
36 #define INSN1(mnemonic,size_suffix,dst)mnemonic##size_suffix dst
37 #define INSN2(mnemonic,size_suffix,dst,src)mnemonic##size_suffix src,dst
38 #else
39 #define INSN1(mnemonic,size_suffix,dst)mnemonic/**/size_suffix dst
40 #define INSN2(mnemonic,size_suffix,dst,src)mnemonic/**/size_suffix src,dst
41 #endif
42 #define TEXT .text
43 #if defined (BSD_SYNTAX)
44 #define ALIGN(log) .align log
45 #endif
46 #if defined (ELF_SYNTAX)
47 #define ALIGN(log) .align 1<<log
48 #endif
49 #define GLOBL .globl
50 #endif
51
52 #ifdef INTEL_SYNTAX
53 #define R(r) r
54 #define MEM(base)[base]
55 #define MEM_DISP(base,displacement)[base+(displacement)]
56 #define MEM_INDEX(base,index,size)[base+index*size]
57 #define INSN1(mnemonic,size_suffix,dst)mnemonic dst
58 #define INSN2(mnemonic,size_suffix,dst,src)mnemonic dst,src
59 #define TEXT .text
60 #define ALIGN(log) .align log
61 #define GLOBL .globl
62 #endif
63
64 #ifdef X86_BROKEN_ALIGN
65 #undef ALIGN
66 #define ALIGN(log) .align log,0x90
67 #endif