syslinux/core/lzo/leave.ash
<<
>>
Prefs
   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/*
 112vi:ts=4
 113*/
 114
 115
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.