~ubuntu-branches/ubuntu/karmic/linux-ports/karmic

« back to all changes in this revision

Viewing changes to arch/sparc/lib/bitops.S

  • Committer: Bazaar Package Importer
  • Author(s): Luke Yelavich, Luke Yelavich, Michael Casadevall, Tim Gardner, Upstream Kernel Changes
  • Date: 2009-05-06 18:18:55 UTC
  • Revision ID: james.westby@ubuntu.com-20090506181855-t00baeevpnvd9o7a
Tags: 2.6.30-1.1
[ Luke Yelavich ]
* initial release for karmic
* SAUCE: rebase-ports - adjust for the karmic ports kernel
* SAUCE: rebase-ports - also remove abi dirs/files on rebase
* Update configs after rebase against mainline Jaunty tree
* [Config] Disable CONFIG_BLK_DEV_UB and CONFIG_USB_LIBUSUAL as per
  mainline jaunty
* forward-port patch to drbd for powerpc compilation
* [Config] disable CONFIG_LENOVO_SL_LAPTOP for i386 due to FTBFS
* add .o files found in arch/powerpc/lib to all powerpc kernel header
  packages
* [Config] enable CONFIG_DRM_I915_KMS for i386 as per karmic mainline

[ Michael Casadevall ]

* Disable kgdb on sparc64
* [sparc] [Config] Disable GPIO LEDS
* [ia64] Rename -ia64-generic to -ia64 in line with other architectures
* Correct kernel image path for sparc builds
* [hppa] Fix HPPA config files to build modules for all udebian

Rebase on top of karmic mainline 2.6.30-1.1

[ Tim Gardner ]

* [Config] armel: disable staging drivers, fixes FTBS
* [Config] armel imx51: Disable CONFIG_MTD_NAND_MXC, fixes FTBS

[ Upstream Kernel Changes ]

* mpt2sas: Change reset_type enum to avoid namespace collision.
  Submitted upstream.

* Initial release after rebasing against v2.6.30-rc3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* bitops.S: Sparc64 atomic bit operations.
 
2
 *
 
3
 * Copyright (C) 2000, 2007 David S. Miller (davem@davemloft.net)
 
4
 */
 
5
 
 
6
#include <asm/asi.h>
 
7
#include <asm/backoff.h>
 
8
 
 
9
        .text
 
10
 
 
11
        .globl  test_and_set_bit
 
12
        .type   test_and_set_bit,#function
 
13
test_and_set_bit:       /* %o0=nr, %o1=addr */
 
14
        BACKOFF_SETUP(%o3)
 
15
        srlx    %o0, 6, %g1
 
16
        mov     1, %o2
 
17
        sllx    %g1, 3, %g3
 
18
        and     %o0, 63, %g2
 
19
        sllx    %o2, %g2, %o2
 
20
        add     %o1, %g3, %o1
 
21
1:      ldx     [%o1], %g7
 
22
        or      %g7, %o2, %g1
 
23
        casx    [%o1], %g7, %g1
 
24
        cmp     %g7, %g1
 
25
        bne,pn  %xcc, 2f
 
26
         and    %g7, %o2, %g2
 
27
        clr     %o0
 
28
        movrne  %g2, 1, %o0
 
29
        retl
 
30
         nop
 
31
2:      BACKOFF_SPIN(%o3, %o4, 1b)
 
32
        .size   test_and_set_bit, .-test_and_set_bit
 
33
 
 
34
        .globl  test_and_clear_bit
 
35
        .type   test_and_clear_bit,#function
 
36
test_and_clear_bit:     /* %o0=nr, %o1=addr */
 
37
        BACKOFF_SETUP(%o3)
 
38
        srlx    %o0, 6, %g1
 
39
        mov     1, %o2
 
40
        sllx    %g1, 3, %g3
 
41
        and     %o0, 63, %g2
 
42
        sllx    %o2, %g2, %o2
 
43
        add     %o1, %g3, %o1
 
44
1:      ldx     [%o1], %g7
 
45
        andn    %g7, %o2, %g1
 
46
        casx    [%o1], %g7, %g1
 
47
        cmp     %g7, %g1
 
48
        bne,pn  %xcc, 2f
 
49
         and    %g7, %o2, %g2
 
50
        clr     %o0
 
51
        movrne  %g2, 1, %o0
 
52
        retl
 
53
         nop
 
54
2:      BACKOFF_SPIN(%o3, %o4, 1b)
 
55
        .size   test_and_clear_bit, .-test_and_clear_bit
 
56
 
 
57
        .globl  test_and_change_bit
 
58
        .type   test_and_change_bit,#function
 
59
test_and_change_bit:    /* %o0=nr, %o1=addr */
 
60
        BACKOFF_SETUP(%o3)
 
61
        srlx    %o0, 6, %g1
 
62
        mov     1, %o2
 
63
        sllx    %g1, 3, %g3
 
64
        and     %o0, 63, %g2
 
65
        sllx    %o2, %g2, %o2
 
66
        add     %o1, %g3, %o1
 
67
1:      ldx     [%o1], %g7
 
68
        xor     %g7, %o2, %g1
 
69
        casx    [%o1], %g7, %g1
 
70
        cmp     %g7, %g1
 
71
        bne,pn  %xcc, 2f
 
72
         and    %g7, %o2, %g2
 
73
        clr     %o0
 
74
        movrne  %g2, 1, %o0
 
75
        retl
 
76
         nop
 
77
2:      BACKOFF_SPIN(%o3, %o4, 1b)
 
78
        .size   test_and_change_bit, .-test_and_change_bit
 
79
 
 
80
        .globl  set_bit
 
81
        .type   set_bit,#function
 
82
set_bit:                /* %o0=nr, %o1=addr */
 
83
        BACKOFF_SETUP(%o3)
 
84
        srlx    %o0, 6, %g1
 
85
        mov     1, %o2
 
86
        sllx    %g1, 3, %g3
 
87
        and     %o0, 63, %g2
 
88
        sllx    %o2, %g2, %o2
 
89
        add     %o1, %g3, %o1
 
90
1:      ldx     [%o1], %g7
 
91
        or      %g7, %o2, %g1
 
92
        casx    [%o1], %g7, %g1
 
93
        cmp     %g7, %g1
 
94
        bne,pn  %xcc, 2f
 
95
         nop
 
96
        retl
 
97
         nop
 
98
2:      BACKOFF_SPIN(%o3, %o4, 1b)
 
99
        .size   set_bit, .-set_bit
 
100
 
 
101
        .globl  clear_bit
 
102
        .type   clear_bit,#function
 
103
clear_bit:              /* %o0=nr, %o1=addr */
 
104
        BACKOFF_SETUP(%o3)
 
105
        srlx    %o0, 6, %g1
 
106
        mov     1, %o2
 
107
        sllx    %g1, 3, %g3
 
108
        and     %o0, 63, %g2
 
109
        sllx    %o2, %g2, %o2
 
110
        add     %o1, %g3, %o1
 
111
1:      ldx     [%o1], %g7
 
112
        andn    %g7, %o2, %g1
 
113
        casx    [%o1], %g7, %g1
 
114
        cmp     %g7, %g1
 
115
        bne,pn  %xcc, 2f
 
116
         nop
 
117
        retl
 
118
         nop
 
119
2:      BACKOFF_SPIN(%o3, %o4, 1b)
 
120
        .size   clear_bit, .-clear_bit
 
121
 
 
122
        .globl  change_bit
 
123
        .type   change_bit,#function
 
124
change_bit:             /* %o0=nr, %o1=addr */
 
125
        BACKOFF_SETUP(%o3)
 
126
        srlx    %o0, 6, %g1
 
127
        mov     1, %o2
 
128
        sllx    %g1, 3, %g3
 
129
        and     %o0, 63, %g2
 
130
        sllx    %o2, %g2, %o2
 
131
        add     %o1, %g3, %o1
 
132
1:      ldx     [%o1], %g7
 
133
        xor     %g7, %o2, %g1
 
134
        casx    [%o1], %g7, %g1
 
135
        cmp     %g7, %g1
 
136
        bne,pn  %xcc, 2f
 
137
         nop
 
138
        retl
 
139
         nop
 
140
2:      BACKOFF_SPIN(%o3, %o4, 1b)
 
141
        .size   change_bit, .-change_bit