]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
2 | ; Copyright(c) 2011-2016 Intel Corporation All rights reserved. | |
3 | ; | |
4 | ; Redistribution and use in source and binary forms, with or without | |
5 | ; modification, are permitted provided that the following conditions | |
6 | ; are met: | |
7 | ; * Redistributions of source code must retain the above copyright | |
8 | ; notice, this list of conditions and the following disclaimer. | |
9 | ; * Redistributions in binary form must reproduce the above copyright | |
10 | ; notice, this list of conditions and the following disclaimer in | |
11 | ; the documentation and/or other materials provided with the | |
12 | ; distribution. | |
13 | ; * Neither the name of Intel Corporation nor the names of its | |
14 | ; contributors may be used to endorse or promote products derived | |
15 | ; from this software without specific prior written permission. | |
16 | ; | |
17 | ; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | |
18 | ; "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | |
19 | ; LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR | |
20 | ; A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT | |
21 | ; OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, | |
22 | ; SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT | |
23 | ; LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | |
24 | ; DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | |
25 | ; THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
26 | ; (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
27 | ; OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
28 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
29 | ||
30 | %include "options.asm" | |
f91f0fd5 | 31 | %include "stdmac.asm" |
7c673cae FG |
32 | |
33 | ; Assumes m_out_buf is a register | |
34 | ; Clobbers RCX | |
35 | ; code is clobbered | |
f91f0fd5 TL |
36 | ; write_bits_always m_bits, m_bit_count, code, count, m_out_buf |
37 | %macro write_bits 5 | |
7c673cae FG |
38 | %define %%m_bits %1 |
39 | %define %%m_bit_count %2 | |
40 | %define %%code %3 | |
41 | %define %%count %4 | |
42 | %define %%m_out_buf %5 | |
7c673cae | 43 | |
f91f0fd5 | 44 | SHLX %%code, %%code, %%m_bit_count |
7c673cae | 45 | |
f91f0fd5 | 46 | or %%m_bits, %%code |
7c673cae | 47 | add %%m_bit_count, %%count |
7c673cae | 48 | |
f91f0fd5 | 49 | mov [%%m_out_buf], %%m_bits |
7c673cae FG |
50 | mov rcx, %%m_bit_count |
51 | shr rcx, 3 ; rcx = bytes | |
52 | add %%m_out_buf, rcx | |
53 | shl rcx, 3 ; rcx = bits | |
f91f0fd5 | 54 | and %%m_bit_count, 0x7 |
7c673cae | 55 | |
f91f0fd5 | 56 | SHRX %%m_bits, %%m_bits, rcx |
7c673cae | 57 | %endm |
224ce89b WB |
58 | |
59 | %macro write_dword 2 | |
60 | %define %%data %1d | |
61 | %define %%addr %2 | |
f91f0fd5 | 62 | mov [%%addr], %%data |
224ce89b WB |
63 | add %%addr, 4 |
64 | %endm |