summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/i386/isleap.S
blob: 28d1ee0ce2d3ea81b2ce3bdc459ea32dbc7fa272 (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
.text
.globl __isleap
.type    __isleap,@function

__isleap:
        movl    4(%esp),%eax
        testb   $3,%al
        jne     .Lretzero
#if 1
        movb    $100,%cl        /* this works only for 0 a.D. ... 25599 a.C. */
        divb    %cl
        andb    %ah,%ah
#else
        cltd                    /* This works for 2147483648 b.C. ... 2147483647 a.C. */
        movl    $100,%ecx
        divl    %ecx
        andl    %edx,%edx
#endif
        jne     .Lretone
        testb   $3,%al
        jne     .Lretzero
.Lretone: xorl    %eax,%eax
        incl    %eax
        ret

.Lretzero:xorl    %eax,%eax
        ret