1
/* asm.h -- Definitions for 68k syntax variations.
3
* Copyright (C) 1992, 1994, 1996, 1998,
4
* 2001 Free Software Foundation, Inc.
6
* This file is part of GnuPG.
8
* GnuPG is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
13
* GnuPG 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 General Public License for more details.
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
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
* The GNU MP Library itself is published under the LGPL;
28
* however I decided to publish this code under the plain GPL.
38
#define MEM(base)base@
39
#define MEM_DISP(base,displacement)base@(displacement)
40
#define MEM_INDX(base,idx,size_suffix)base@(idx:size_suffix)
41
#define MEM_INDX1(base,idx,size_suffix,scale)base@(idx:size_suffix:scale)
42
#define MEM_PREDEC(memory_base)memory_base@-
43
#define MEM_POSTINC(memory_base)memory_base@+
44
#define L(label) label
49
/* Use variable sized opcodes. */
62
#define MEM(base)(base)
63
#define MEM_DISP(base,displacement)(displacement,base)
64
#define MEM_INDX(base,idx,size_suffix)(base,idx.size_suffix)
65
#define MEM_INDX1(base,idx,size_suffix,scale)(base,idx.size_suffix*scale)
66
#define MEM_PREDEC(memory_base)-(memory_base)
67
#define MEM_POSTINC(memory_base)(memory_base)+
68
#define L(label) label
74
#ifdef MOTOROLA_SYNTAX
78
#define MEM(base)(base)
79
#define MEM_DISP(base,displacement)(displacement,base)
80
#define MEM_INDX(base,idx,size_suffix)(base,idx.size_suffix)
81
#define MEM_INDX1(base,idx,size_suffix,scale)(base,idx.size_suffix*scale)
82
#define MEM_PREDEC(memory_base)-(memory_base)
83
#define MEM_POSTINC(memory_base)(memory_base)+
84
#define L(label) label
90
#define moveml MOVEM.L
91
#define moveql MOVEQ.L
136
#define PROLOG(name) .type name,@function
137
#define EPILOG(name) .size name,.-name
138
#define MEM(base)(R(base))
139
#define MEM_DISP(base,displacement)(displacement,R(base))
140
#define MEM_PREDEC(memory_base)-(R(memory_base))
141
#define MEM_POSTINC(memory_base)(R(memory_base))+
145
#define MEM_INDX_(base,idx,size_suffix)(R(base),R(idx##.##size_suffix))
146
#define MEM_INDX(base,idx,size_suffix)MEM_INDX_(base,idx,size_suffix)
147
#define MEM_INDX1_(base,idx,size_suffix,scale)(R(base),R(idx##.##size_suffix*scale))
148
#define MEM_INDX1(base,idx,size_suffix,scale)MEM_INDX1_(base,idx,size_suffix,scale)
149
#define L(label) .##label
152
#define MEM_INDX(base,idx,size_suffix)(R(base),R(idx).size_suffix)
153
#define MEM_INDX1(base,idx,size_suffix,scale)(R(base),R(idx).size_suffix*scale)
154
#define L(label) ./**/label
157
#define ALIGN .align 2
167
#if defined (SONY_SYNTAX) || defined (ELF_SYNTAX)
169
#define moveml movem.l
170
#define moveql moveq.l