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

« back to all changes in this revision

Viewing changes to arch/x86/lib/rwsem_64.S

  • 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:
23
23
#include <asm/dwarf2.h>
24
24
 
25
25
#define save_common_regs \
26
 
        pushq %rdi; \
27
 
        pushq %rsi; \
28
 
        pushq %rcx; \
29
 
        pushq %r8; \
30
 
        pushq %r9; \
31
 
        pushq %r10; \
32
 
        pushq %r11
 
26
        pushq_cfi %rdi; CFI_REL_OFFSET rdi, 0; \
 
27
        pushq_cfi %rsi; CFI_REL_OFFSET rsi, 0; \
 
28
        pushq_cfi %rcx; CFI_REL_OFFSET rcx, 0; \
 
29
        pushq_cfi %r8;  CFI_REL_OFFSET r8,  0; \
 
30
        pushq_cfi %r9;  CFI_REL_OFFSET r9,  0; \
 
31
        pushq_cfi %r10; CFI_REL_OFFSET r10, 0; \
 
32
        pushq_cfi %r11; CFI_REL_OFFSET r11, 0
33
33
 
34
34
#define restore_common_regs \
35
 
        popq %r11; \
36
 
        popq %r10; \
37
 
        popq %r9; \
38
 
        popq %r8; \
39
 
        popq %rcx; \
40
 
        popq %rsi; \
41
 
        popq %rdi
 
35
        popq_cfi %r11; CFI_RESTORE r11; \
 
36
        popq_cfi %r10; CFI_RESTORE r10; \
 
37
        popq_cfi %r9;  CFI_RESTORE r9; \
 
38
        popq_cfi %r8;  CFI_RESTORE r8; \
 
39
        popq_cfi %rcx; CFI_RESTORE rcx; \
 
40
        popq_cfi %rsi; CFI_RESTORE rsi; \
 
41
        popq_cfi %rdi; CFI_RESTORE rdi
42
42
 
43
43
/* Fix up special calling conventions */
44
44
ENTRY(call_rwsem_down_read_failed)
 
45
        CFI_STARTPROC
45
46
        save_common_regs
46
 
        pushq %rdx
 
47
        pushq_cfi %rdx
 
48
        CFI_REL_OFFSET rdx, 0
47
49
        movq %rax,%rdi
48
50
        call rwsem_down_read_failed
49
 
        popq %rdx
 
51
        popq_cfi %rdx
 
52
        CFI_RESTORE rdx
50
53
        restore_common_regs
51
54
        ret
52
 
        ENDPROC(call_rwsem_down_read_failed)
 
55
        CFI_ENDPROC
 
56
ENDPROC(call_rwsem_down_read_failed)
53
57
 
54
58
ENTRY(call_rwsem_down_write_failed)
 
59
        CFI_STARTPROC
55
60
        save_common_regs
56
61
        movq %rax,%rdi
57
62
        call rwsem_down_write_failed
58
63
        restore_common_regs
59
64
        ret
60
 
        ENDPROC(call_rwsem_down_write_failed)
 
65
        CFI_ENDPROC
 
66
ENDPROC(call_rwsem_down_write_failed)
61
67
 
62
68
ENTRY(call_rwsem_wake)
 
69
        CFI_STARTPROC
63
70
        decl %edx       /* do nothing if still outstanding active readers */
64
71
        jnz 1f
65
72
        save_common_regs
67
74
        call rwsem_wake
68
75
        restore_common_regs
69
76
1:      ret
70
 
        ENDPROC(call_rwsem_wake)
 
77
        CFI_ENDPROC
 
78
ENDPROC(call_rwsem_wake)
71
79
 
72
80
/* Fix up special calling conventions */
73
81
ENTRY(call_rwsem_downgrade_wake)
 
82
        CFI_STARTPROC
74
83
        save_common_regs
75
 
        pushq %rdx
 
84
        pushq_cfi %rdx
 
85
        CFI_REL_OFFSET rdx, 0
76
86
        movq %rax,%rdi
77
87
        call rwsem_downgrade_wake
78
 
        popq %rdx
 
88
        popq_cfi %rdx
 
89
        CFI_RESTORE rdx
79
90
        restore_common_regs
80
91
        ret
81
 
        ENDPROC(call_rwsem_downgrade_wake)
 
92
        CFI_ENDPROC
 
93
ENDPROC(call_rwsem_downgrade_wake)