Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/drzeus/mmc
[linux-2.6] / arch / frv / lib / __ucmpdi2.S
1 /* __ucmpdi2.S: 64-bit unsigned compare
2  *
3  * Copyright (C) 2006 Red Hat, Inc. All Rights Reserved.
4  * Written by David Howells (dhowells@redhat.com)
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version
9  * 2 of the License, or (at your option) any later version.
10  */
11
12
13         .text
14         .p2align        4
15
16 ###############################################################################
17 #
18 # int __ucmpdi2(unsigned long long a [GR8:GR9],
19 #               unsigned long long b [GR10:GR11])
20 #
21 # - returns 0, 1, or 2 as a <, =, > b respectively.
22 #
23 ###############################################################################
24         .globl          __ucmpdi2
25         .type           __ucmpdi2,@function
26 __ucmpdi2:
27         or.p            gr8,gr0,gr4
28         subcc           gr8,gr10,gr0,icc0
29         setlos.p        #0,gr8
30         bclr            icc0,#2                 ; a.msw < b.msw
31
32         setlos.p        #2,gr8
33         bhilr           icc0,#0                 ; a.msw > b.msw
34
35         subcc.p         gr9,gr11,gr0,icc1
36         setlos          #0,gr8
37         setlos.p        #2,gr9
38         setlos          #1,gr7
39         cknc            icc1,cc6
40         cor.p           gr9,gr0,gr8,            cc6,#1
41         cckls           icc1,cc4,               cc6,#1
42         andcr           cc6,cc4,cc4
43         cor             gr7,gr0,gr8,            cc4,#1
44         bralr
45         .size           __ucmpdi2, .-__ucmpdi2