Tizen 2.1 base
[external/lzo2.git] / asm / i386 / src / leave.ash
1 /* leave.ash -- LZO assembler stuff
2
3    This file is part of the LZO real-time data compression library.
4
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.
19
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.
24
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.
29
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.
34
35    Markus F.X.J. Oberhumer
36    <markus@oberhumer.com>
37    http://www.oberhumer.com/opensource/lzo/
38  */
39
40
41 /***********************************************************************
42 //
43 ************************************************************************/
44
45 /* check uncompressed size */
46 #if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
47         cmpl    OUTEND,%edi
48         ja      .L_output_overrun
49 #endif
50
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
57
58 .L_leave:
59         subl    OUTP,%edi       /* write back the uncompressed size */
60         movl    OUTS,%edx
61         movl    %edi,(%edx)
62
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
76
77
78 .L_error:
79         movl    $1,%eax         /* LZO_E_ERROR */
80         jmp     .L_leave
81
82 .L_input_not_consumed:
83         movl    $8,%eax         /* LZO_E_INPUT_NOT_CONSUMED */
84         jmp     .L_leave
85
86 .L_input_overrun:
87         movl    $4,%eax         /* LZO_E_INPUT_OVERRUN */
88         jmp     .L_leave
89
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
95
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
101
102 #if defined(LZO_DEBUG)
103 .L_assert_fail:
104         movl    $99,%eax
105         jmp     .L_leave
106 #endif
107
108 .L_end:
109
110
111 /*
112 vi:ts=4
113 */
114