Blame asm/i386/src/leave.ash

Packit 679830
/* leave.ash -- LZO assembler stuff
Packit 679830
Packit 679830
   This file is part of the LZO real-time data compression library.
Packit 679830
Packit 679830
   Copyright (C) 1996-2014 Markus Franz Xaver Johannes Oberhumer
Packit 679830
   All Rights Reserved.
Packit 679830
Packit 679830
   The LZO library is free software; you can redistribute it and/or
Packit 679830
   modify it under the terms of the GNU General Public License as
Packit 679830
   published by the Free Software Foundation; either version 2 of
Packit 679830
   the License, or (at your option) any later version.
Packit 679830
Packit 679830
   The LZO library is distributed in the hope that it will be useful,
Packit 679830
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 679830
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit 679830
   GNU General Public License for more details.
Packit 679830
Packit 679830
   You should have received a copy of the GNU General Public License
Packit 679830
   along with the LZO library; see the file COPYING.
Packit 679830
   If not, write to the Free Software Foundation, Inc.,
Packit 679830
   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Packit 679830
Packit 679830
   Markus F.X.J. Oberhumer
Packit 679830
   <markus@oberhumer.com>
Packit 679830
   http://www.oberhumer.com/opensource/lzo/
Packit 679830
 */
Packit 679830
Packit 679830
Packit 679830
/***********************************************************************
Packit 679830
//
Packit 679830
************************************************************************/
Packit 679830
Packit 679830
/* check uncompressed size */
Packit 679830
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
Packit 679830
        cmpl    OUTEND,%edi
Packit 679830
        ja      .L_output_overrun
Packit 679830
#endif
Packit 679830
Packit 679830
/* check compressed size */
Packit 679830
        movl    INP,%edx
Packit 679830
        addl    INS,%edx
Packit 679830
        cmpl    %edx,%esi       /* check compressed size */
Packit 679830
        ja      .L_input_overrun
Packit 679830
        jb      .L_input_not_consumed
Packit 679830
Packit 679830
.L_leave:
Packit 679830
        subl    OUTP,%edi       /* write back the uncompressed size */
Packit 679830
        movl    OUTS,%edx
Packit 679830
        movl    %edi,(%edx)
Packit 679830
Packit 679830
        negl    %eax
Packit 679830
        addl    $12,%esp
Packit 679830
        popl    %edx
Packit 679830
        popl    %ecx
Packit 679830
        popl    %ebx
Packit 679830
        popl    %esi
Packit 679830
        popl    %edi
Packit 679830
        popl    %ebp
Packit 679830
#if 1
Packit 679830
        ret
Packit 679830
#else
Packit 679830
        jmp     .L_end
Packit 679830
#endif
Packit 679830
Packit 679830
Packit 679830
.L_error:
Packit 679830
        movl    $1,%eax         /* LZO_E_ERROR */
Packit 679830
        jmp     .L_leave
Packit 679830
Packit 679830
.L_input_not_consumed:
Packit 679830
        movl    $8,%eax         /* LZO_E_INPUT_NOT_CONSUMED */
Packit 679830
        jmp     .L_leave
Packit 679830
Packit 679830
.L_input_overrun:
Packit 679830
        movl    $4,%eax         /* LZO_E_INPUT_OVERRUN */
Packit 679830
        jmp     .L_leave
Packit 679830
Packit 679830
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_OUTPUT)
Packit 679830
.L_output_overrun:
Packit 679830
        movl    $5,%eax         /* LZO_E_OUTPUT_OVERRUN */
Packit 679830
        jmp     .L_leave
Packit 679830
#endif
Packit 679830
Packit 679830
#if defined(LZO_TEST_DECOMPRESS_OVERRUN_LOOKBEHIND)
Packit 679830
.L_lookbehind_overrun:
Packit 679830
        movl    $6,%eax         /* LZO_E_LOOKBEHIND_OVERRUN */
Packit 679830
        jmp     .L_leave
Packit 679830
#endif
Packit 679830
Packit 679830
#if defined(LZO_DEBUG)
Packit 679830
.L_assert_fail:
Packit 679830
        movl    $99,%eax
Packit 679830
        jmp     .L_leave
Packit 679830
#endif
Packit 679830
Packit 679830
.L_end:
Packit 679830
Packit 679830
Packit 679830
/*
Packit 679830
vi:ts=4
Packit 679830
*/
Packit 679830