~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to arch/sh/include/asm/cmpxchg-grb.h

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
                "   mov.l   %2,   @%1     \n\t" /* store new value */
16
16
                "1: mov     r1,   r15     \n\t" /* LOGOUT */
17
17
                : "=&r" (retval),
18
 
                  "+r"  (m)
19
 
                : "r"   (val)
 
18
                  "+r"  (m),
 
19
                  "+r"  (val)           /* inhibit r15 overloading */
 
20
                :
20
21
                : "memory", "r0", "r1");
21
22
 
22
23
        return retval;
36
37
                "   mov.b   %2,   @%1     \n\t" /* store new value */
37
38
                "1: mov     r1,   r15     \n\t" /* LOGOUT */
38
39
                : "=&r" (retval),
39
 
                  "+r"  (m)
40
 
                : "r"   (val)
 
40
                  "+r"  (m),
 
41
                  "+r"  (val)           /* inhibit r15 overloading */
 
42
                :
41
43
                : "memory" , "r0", "r1");
42
44
 
43
45
        return retval;
54
56
                "   nop                   \n\t"
55
57
                "   mov    r15,   r1      \n\t" /* r1 = saved sp */
56
58
                "   mov    #-8,   r15     \n\t" /* LOGIN */
57
 
                "   mov.l  @%1,   %0      \n\t" /* load  old value */
58
 
                "   cmp/eq  %0,   %2      \n\t"
 
59
                "   mov.l  @%3,   %0      \n\t" /* load  old value */
 
60
                "   cmp/eq  %0,   %1      \n\t"
59
61
                "   bf            1f      \n\t" /* if not equal */
60
 
                "   mov.l   %3,   @%1     \n\t" /* store new value */
 
62
                "   mov.l   %2,   @%3     \n\t" /* store new value */
61
63
                "1: mov     r1,   r15     \n\t" /* LOGOUT */
62
 
                : "=&r" (retval)
63
 
                :  "r"  (m), "r"  (old), "r"  (new)
 
64
                : "=&r" (retval),
 
65
                  "+r"  (old), "+r"  (new) /* old or new can be r15 */
 
66
                :  "r"  (m)
64
67
                : "memory" , "r0", "r1", "t");
65
68
 
66
69
        return retval;