summaryrefslogtreecommitdiff
path: root/asm.m4
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2002-02-15 15:32:38 +0100
committerNiels Möller <nisse@lysator.liu.se>2002-02-15 15:32:38 +0100
commite54ea73bd09b6925849e109a54e573dc313e3770 (patch)
treed67576476c16043d53df6145af151bf0158c35cc /asm.m4
parent987fdf2c22e675d57cd929dbf93574658d2aa296 (diff)
downloadnettle-e54ea73bd09b6925849e109a54e573dc313e3770.tar.gz
* asm.m4: Define and use structure-defining macros.
Rev: src/nettle/asm.m4:1.5
Diffstat (limited to 'asm.m4')
-rw-r--r--asm.m446
1 files changed, 31 insertions, 15 deletions
diff --git a/asm.m4 b/asm.m4
index de447264..e296c0df 100644
--- a/asm.m4
+++ b/asm.m4
@@ -1,26 +1,42 @@
changequote(<,>)dnl
changecom(!,<
>)dnl
-dnl FIXME: Add some struct macros similar to the once used in Amiga assemblers
+
+dnl (progn (modify-syntax-entry ?< "(>") (modify-syntax-entry ?> ")<") )
+dnl Struct defining macros
+
+dnl STRUCTURE(prefix)
+define(<STRUCTURE>, <define(<SOFFSET>, 0)define(<SPREFIX>, <$1>)>)
+
+dnl STRUCT(name, size)
+define(STRUCT,
+<define(SPREFIX<_>$1, SOFFSET)dnl
+ define(<SOFFSET>, eval(SOFFSET + ($2)))>)
+
+dnl UNSIGNED(name)
+define(<UNSIGNED>, <STRUCT(<$1>, 4)>)
+
dnl Offsets in aes_ctx and aes_table
-define(AES_KEYS, 0)dnl
-define(AES_NROUNDS, 240)dnl
+STRUCTURE(AES)
+ STRUCT(KEYS, 4*60)
+ UNSIGNED(NROUNDS)
define(AES_SBOX_SIZE, 256)dnl
define(AES_IDX_SIZE, 16)dnl
define(AES_TABLE_SIZE, 1024)dnl
-define(AES_SBOX, 0)dnl
-define(AES_IDX1, AES_SBOX_SIZE)dnl
-define(AES_IDX2, eval(AES_IDX1 + AES_IDX_SIZE))dnl
-define(AES_IDX3, eval(AES_IDX2 + AES_IDX_SIZE))dnl
-define(AES_TABLE0, eval(AES_IDX3 + AES_IDX_SIZE))dnl
-define(AES_TABLE1, eval(AES_TABLE0 + AES_TABLE_SIZE))dnl
-define(AES_TABLE2, eval(AES_TABLE1 + AES_TABLE_SIZE))dnl
-define(AES_TABLE3, eval(AES_TABLE2 + AES_TABLE_SIZE))dnl
+STRUCT(AES)
+ STRUCT(SBOX, AES_SBOX_SIZE)
+
+ STRUCT(IDX1, AES_IDX_SIZE)
+ STRUCT(IDX2, AES_IDX_SIZE)
+ STRUCT(IDX3, AES_IDX_SIZE)
-dnl define(AES_SIDX1, 304)dnl
-dnl define(AES_SIDX2, 320)dnl
-dnl define(AES_SIDX3, 336)dnl
-dnl define(AES_TABLE, 352)dnl
+ STRUCT(SIDX1, AES_IDX_SIZE)
+ STRUCT(SIDX2, AES_IDX_SIZE)
+ STRUCT(SIDX3, AES_IDX_SIZE)
+ STRUCT(TABLE0, AES_TABLE_SIZE)
+ STRUCT(TABLE1, AES_TABLE_SIZE)
+ STRUCT(TABLE2, AES_TABLE_SIZE)
+ STRUCT(TABLE3, AES_TABLE_SIZE)