panthema / 2006 / SDIOS06 / sdios06 / lib / libc / ceil.S (Download File)
#include "PIC.h"

.text

.global ceilf,ceil,ceill,__flcetr
	.type ceilf,@function
	.type ceil,@function
	.type ceill,@function
	.type __flcetr,@function

ceilf:
	flds 4(%esp)
	movb $0x08,%ah
	jmp .Lflcetr

ceill:
	fldt 4(%esp)
	movb $0x08,%ah
	jmp .Lflcetr

ceil:
	fldl 4(%esp)
	movb $0x08,%ah

# Wspolny kod dla funkcji floor, ceil i trunc
# W ah maska bitow 11 i 10 rejestru sterowania koprocesora
#ifndef __DYN_LIB
__flcetr:
#endif
.Lflcetr:
	xorl %ecx,%ecx	# wyzerowanie rejestru
	movb %ah,%ch	# i utworzenie maski w cx
	pushl %eax	# krotsze niz subl $4,%esp
	fstcw (%esp)
	movw (%esp),%ax
	andb $0x03,%ah	# wyzerowanie bitow 11 i 10
	orl %ecx,%eax	# ustawienie bitow z maski
	movw %ax,2(%esp)
	fldcw 2(%esp)
	frndint
	fldcw (%esp)	# odtworzenie rejestru sterowania
	popl %eax	# i polozenia stosu
	ret

#ifdef __DYN_LIB
__flcetr:
	PIC_RESTORE
	jmp .Lflcetr
#endif

.Lende:
.size    ceil,.Lende-ceil
.size    ceill,.Lende-ceill
.size    ceilf,.Lende-ceilf
.size    __flcetr,.Lende-__flcetr