Adding upstream version 4.00~pre55+dfsg.
[syslinux-debian/hramrach.git] / core / lzo / leave.ash
blob9550b46f55f98cb02d8d6e5d78304d0fb9462e41
1 /* leave.ash -- LZO assembler stuff
3    This file is part of the LZO real-time data compression library.
5    Copyright (C) 2008 Markus Franz Xaver Johannes Oberhumer
6    Copyright (C) 2007 Markus Franz Xaver Johannes Oberhumer
7    Copyright (C) 2006 Markus Franz Xaver Johannes Oberhumer
8    Copyright (C) 2005 Markus Franz Xaver Johannes Oberhumer
9    Copyright (C) 2004 Markus Franz Xaver Johannes Oberhumer
10    Copyright (C) 2003 Markus Franz Xaver Johannes Oberhumer
11    Copyright (C) 2002 Markus Franz Xaver Johannes Oberhumer
12    Copyright (C) 2001 Markus Franz Xaver Johannes Oberhumer
13    Copyright (C) 2000 Markus Franz Xaver Johannes Oberhumer
14    Copyright (C) 1999 Markus Franz Xaver Johannes Oberhumer
15    Copyright (C) 1998 Markus Franz Xaver Johannes Oberhumer
16    Copyright (C) 1997 Markus Franz Xaver Johannes Oberhumer
17    Copyright (C) 1996 Markus Franz Xaver Johannes Oberhumer
18    All Rights Reserved.
20    The LZO library is free software; you can redistribute it and/or
21    modify it under the terms of the GNU General Public License as
22    published by the Free Software Foundation; either version 2 of
23    the License, or (at your option) any later version.
25    The LZO library is distributed in the hope that it will be useful,
26    but WITHOUT ANY WARRANTY; without even the implied warranty of
27    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
28    GNU General Public License for more details.
30    You should have received a copy of the GNU General Public License
31    along with the LZO library; see the file COPYING.
32    If not, write to the Free Software Foundation, Inc.,
33    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
35    Markus F.X.J. Oberhumer
36    <markus@oberhumer.com>
37    http://www.oberhumer.com/opensource/lzo/
38  */
41 /***********************************************************************
43 ************************************************************************/
45 /* check uncompressed size */
46 #if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
47         cmpl    OUTEND,%edi
48         ja      .L_output_overrun
49 #endif
51 /* check compressed size */
52         movl    INP,%edx
53         addl    INS,%edx
54         cmpl    %edx,%esi       /* check compressed size */
55         ja      .L_input_overrun
56         jb      .L_input_not_consumed
58 .L_leave:
59         subl    OUTP,%edi       /* write back the uncompressed size */
60         movl    OUTS,%edx
61         movl    %edi,(%edx)
63         negl    %eax
64         addl    $12,%esp
65         popl    %edx
66         popl    %ecx
67         popl    %ebx
68         popl    %esi
69         popl    %edi
70         popl    %ebp
71 #if 1
72         ret
73 #else
74         jmp     .L_end
75 #endif
78 .L_error:
79         movl    $1,%eax         /* LZO_E_ERROR */
80         jmp     .L_leave
82 .L_input_not_consumed:
83         movl    $8,%eax         /* LZO_E_INPUT_NOT_CONSUMED */
84         jmp     .L_leave
86 .L_input_overrun:
87         movl    $4,%eax         /* LZO_E_INPUT_OVERRUN */
88         jmp     .L_leave
90 #if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
91 .L_output_overrun:
92         movl    $5,%eax         /* LZO_E_OUTPUT_OVERRUN */
93         jmp     .L_leave
94 #endif
96 #if defined(LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND)
97 .L_lookbehind_overrun:
98         movl    $6,%eax         /* LZO_E_LOOKBEHIND_OVERRUN */
99         jmp     .L_leave
100 #endif
102 #if defined(LZO_DEBUG)
103 .L_assert_fail:
104         movl    $99,%eax
105         jmp     .L_leave
106 #endif
108 .L_end:
112 vi:ts=4