#include <linux/linkage.h>
 #include <asm/alternative-asm.h>
+#include <asm/frame.h>
 
 #define __ASM_HALF_REG(reg)    __ASM_SEL(reg, e##reg)
 #define __ASM_HALF_SIZE(inst)  __ASM_SEL(inst##w, inst##l)
 
 /* Fix up special calling conventions */
 ENTRY(call_rwsem_down_read_failed)
+       FRAME_BEGIN
        save_common_regs
        __ASM_SIZE(push,) %__ASM_REG(dx)
        movq %rax,%rdi
        call rwsem_down_read_failed
        __ASM_SIZE(pop,) %__ASM_REG(dx)
        restore_common_regs
+       FRAME_END
        ret
 ENDPROC(call_rwsem_down_read_failed)
 
 ENTRY(call_rwsem_down_write_failed)
+       FRAME_BEGIN
        save_common_regs
        movq %rax,%rdi
        call rwsem_down_write_failed
        restore_common_regs
+       FRAME_END
        ret
 ENDPROC(call_rwsem_down_write_failed)
 
 ENTRY(call_rwsem_wake)
+       FRAME_BEGIN
        /* do nothing if still outstanding active readers */
        __ASM_HALF_SIZE(dec) %__ASM_HALF_REG(dx)
        jnz 1f
        movq %rax,%rdi
        call rwsem_wake
        restore_common_regs
-1:     ret
+1:     FRAME_END
+       ret
 ENDPROC(call_rwsem_wake)
 
 ENTRY(call_rwsem_downgrade_wake)
+       FRAME_BEGIN
        save_common_regs
        __ASM_SIZE(push,) %__ASM_REG(dx)
        movq %rax,%rdi
        call rwsem_downgrade_wake
        __ASM_SIZE(pop,) %__ASM_REG(dx)
        restore_common_regs
+       FRAME_END
        ret
 ENDPROC(call_rwsem_downgrade_wake)