xref: /isa-l_crypto/include/datastruct.asm (revision cc0c2aef7e81e07dcef32435e7598e7531a8fa1c)
1*6df3ef80SGreg Tucker;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2*6df3ef80SGreg Tucker;  Copyright(c) 2011-2016 Intel Corporation All rights reserved.
3*6df3ef80SGreg Tucker;
4*6df3ef80SGreg Tucker;  Redistribution and use in source and binary forms, with or without
5*6df3ef80SGreg Tucker;  modification, are permitted provided that the following conditions
6*6df3ef80SGreg Tucker;  are met:
7*6df3ef80SGreg Tucker;    * Redistributions of source code must retain the above copyright
8*6df3ef80SGreg Tucker;      notice, this list of conditions and the following disclaimer.
9*6df3ef80SGreg Tucker;    * Redistributions in binary form must reproduce the above copyright
10*6df3ef80SGreg Tucker;      notice, this list of conditions and the following disclaimer in
11*6df3ef80SGreg Tucker;      the documentation and/or other materials provided with the
12*6df3ef80SGreg Tucker;      distribution.
13*6df3ef80SGreg Tucker;    * Neither the name of Intel Corporation nor the names of its
14*6df3ef80SGreg Tucker;      contributors may be used to endorse or promote products derived
15*6df3ef80SGreg Tucker;      from this software without specific prior written permission.
16*6df3ef80SGreg Tucker;
17*6df3ef80SGreg Tucker;  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18*6df3ef80SGreg Tucker;  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19*6df3ef80SGreg Tucker;  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20*6df3ef80SGreg Tucker;  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21*6df3ef80SGreg Tucker;  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22*6df3ef80SGreg Tucker;  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23*6df3ef80SGreg Tucker;  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24*6df3ef80SGreg Tucker;  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25*6df3ef80SGreg Tucker;  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26*6df3ef80SGreg Tucker;  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27*6df3ef80SGreg Tucker;  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28*6df3ef80SGreg Tucker;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
29*6df3ef80SGreg Tucker
30*6df3ef80SGreg Tucker; Macros for defining data structures
31*6df3ef80SGreg Tucker
32*6df3ef80SGreg Tucker; Usage example
33*6df3ef80SGreg Tucker
34*6df3ef80SGreg Tucker;START_FIELDS	; JOB_AES
35*6df3ef80SGreg Tucker;;;	name		size	align
36*6df3ef80SGreg Tucker;FIELD	_plaintext,	8,	8	; pointer to plaintext
37*6df3ef80SGreg Tucker;FIELD	_ciphertext,	8,	8	; pointer to ciphertext
38*6df3ef80SGreg Tucker;FIELD	_IV,		16,	8	; IV
39*6df3ef80SGreg Tucker;FIELD	_keys,		8,	8	; pointer to keys
40*6df3ef80SGreg Tucker;FIELD	_len,		4,	4	; length in bytes
41*6df3ef80SGreg Tucker;FIELD	_status,	4,	4	; status enumeration
42*6df3ef80SGreg Tucker;FIELD	_user_data,	8,	8	; pointer to user data
43*6df3ef80SGreg Tucker;UNION  _union,         size1,  align1, \
44*6df3ef80SGreg Tucker	                size2,  align2, \
45*6df3ef80SGreg Tucker	                size3,  align3, \
46*6df3ef80SGreg Tucker	                ...
47*6df3ef80SGreg Tucker;END_FIELDS
48*6df3ef80SGreg Tucker;%assign _JOB_AES_size	_FIELD_OFFSET
49*6df3ef80SGreg Tucker;%assign _JOB_AES_align	_STRUCT_ALIGN
50*6df3ef80SGreg Tucker
51*6df3ef80SGreg Tucker%ifndef _DATASTRUCT_ASM_
52*6df3ef80SGreg Tucker%define _DATASTRUCT_ASM_
53*6df3ef80SGreg Tucker
54*6df3ef80SGreg Tucker;; START_FIELDS
55*6df3ef80SGreg Tucker%macro START_FIELDS 0
56*6df3ef80SGreg Tucker%assign _FIELD_OFFSET 0
57*6df3ef80SGreg Tucker%assign _STRUCT_ALIGN 0
58*6df3ef80SGreg Tucker%endm
59*6df3ef80SGreg Tucker
60*6df3ef80SGreg Tucker;; FIELD name size align
61*6df3ef80SGreg Tucker%macro FIELD 3
62*6df3ef80SGreg Tucker%define %%name  %1
63*6df3ef80SGreg Tucker%define %%size  %2
64*6df3ef80SGreg Tucker%define %%align %3
65*6df3ef80SGreg Tucker
66*6df3ef80SGreg Tucker%assign _FIELD_OFFSET (_FIELD_OFFSET + (%%align) - 1) & (~ ((%%align)-1))
67*6df3ef80SGreg Tucker%%name	equ	_FIELD_OFFSET
68*6df3ef80SGreg Tucker%assign _FIELD_OFFSET _FIELD_OFFSET + (%%size)
69*6df3ef80SGreg Tucker%if (%%align > _STRUCT_ALIGN)
70*6df3ef80SGreg Tucker%assign _STRUCT_ALIGN %%align
71*6df3ef80SGreg Tucker%endif
72*6df3ef80SGreg Tucker%endm
73*6df3ef80SGreg Tucker
74*6df3ef80SGreg Tucker;; END_FIELDS
75*6df3ef80SGreg Tucker%macro END_FIELDS 0
76*6df3ef80SGreg Tucker%assign _FIELD_OFFSET (_FIELD_OFFSET + _STRUCT_ALIGN-1) & (~ (_STRUCT_ALIGN-1))
77*6df3ef80SGreg Tucker%endm
78*6df3ef80SGreg Tucker
79*6df3ef80SGreg Tucker%endif ; end ifdef _DATASTRUCT_ASM_
80