summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/i386/ceil.S
blob: e6a4e989c17119eb459b40d881cae229c970106a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
.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 __flcetr

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

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
__flcetr:
	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

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