diff options
Diffstat (limited to 'arch/frv/kernel/break.S')
-rw-r--r-- | arch/frv/kernel/break.S | 34 |
1 files changed, 19 insertions, 15 deletions
diff --git a/arch/frv/kernel/break.S b/arch/frv/kernel/break.S index ea161f0ca427..dac4a5f68c2e 100644 --- a/arch/frv/kernel/break.S +++ b/arch/frv/kernel/break.S | |||
@@ -9,11 +9,11 @@ | |||
9 | * 2 of the License, or (at your option) any later version. | 9 | * 2 of the License, or (at your option) any later version. |
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/sys.h> | ||
13 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
14 | #include <asm/setup.h> | 13 | #include <asm/setup.h> |
15 | #include <asm/segment.h> | 14 | #include <asm/segment.h> |
16 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
16 | #include <asm/thread_info.h> | ||
17 | #include <asm/spr-regs.h> | 17 | #include <asm/spr-regs.h> |
18 | 18 | ||
19 | #include <asm/errno.h> | 19 | #include <asm/errno.h> |
@@ -23,13 +23,11 @@ | |||
23 | # | 23 | # |
24 | .section .bss.stack | 24 | .section .bss.stack |
25 | .globl __break_user_context | 25 | .globl __break_user_context |
26 | .balign 8192 | 26 | .balign THREAD_SIZE |
27 | __break_stack: | 27 | __break_stack: |
28 | .space (8192 - (USER_CONTEXT_SIZE + REG__DEBUG_XTRA)) & ~7 | 28 | .space THREAD_SIZE - FRV_FRAME0_SIZE |
29 | __break_stack_tos: | 29 | __break_frame_0: |
30 | .space REG__DEBUG_XTRA | 30 | .space FRV_FRAME0_SIZE |
31 | __break_user_context: | ||
32 | .space USER_CONTEXT_SIZE | ||
33 | 31 | ||
34 | # | 32 | # |
35 | # miscellaneous variables | 33 | # miscellaneous variables |
@@ -74,8 +72,8 @@ __entry_break: | |||
74 | #endif | 72 | #endif |
75 | LEDS 0x1001,gr31 | 73 | LEDS 0x1001,gr31 |
76 | 74 | ||
77 | sethi.p %hi(__break_user_context),gr31 | 75 | sethi.p %hi(__break_frame_0),gr31 |
78 | setlo %lo(__break_user_context),gr31 | 76 | setlo %lo(__break_frame_0),gr31 |
79 | 77 | ||
80 | stdi gr2,@(gr31,#REG_GR(2)) | 78 | stdi gr2,@(gr31,#REG_GR(2)) |
81 | movsg ccr,gr3 | 79 | movsg ccr,gr3 |
@@ -585,8 +583,8 @@ __break_continue: | |||
585 | # set up the kernel stack pointer | 583 | # set up the kernel stack pointer |
586 | sti sp,@(gr31,#REG_SP) | 584 | sti sp,@(gr31,#REG_SP) |
587 | 585 | ||
588 | sethi.p %hi(__break_stack_tos),sp | 586 | sethi.p %hi(__break_frame_0),sp |
589 | setlo %lo(__break_stack_tos),sp | 587 | setlo %lo(__break_frame_0),sp |
590 | 588 | ||
591 | # finish building the exception frame | 589 | # finish building the exception frame |
592 | stdi gr4 ,@(gr31,#REG_GR(4)) | 590 | stdi gr4 ,@(gr31,#REG_GR(4)) |
@@ -651,9 +649,12 @@ __break_continue: | |||
651 | movsg nmar,gr5 | 649 | movsg nmar,gr5 |
652 | movsg dcr,gr6 | 650 | movsg dcr,gr6 |
653 | 651 | ||
654 | stdi gr4 ,@(gr31,#REG_BRR) | 652 | sethi.p %hi(__debug_status),gr7 |
655 | sti gr19,@(gr31,#REG_BPSR) | 653 | setlo %lo(__debug_status),gr7 |
656 | sti.p gr6 ,@(gr31,#REG_DCR) | 654 | |
655 | stdi gr4 ,@(gr7,#DEBUG_BRR) | ||
656 | sti gr19,@(gr7,#DEBUG_BPSR) | ||
657 | sti.p gr6 ,@(gr7,#DEBUG_DCR) | ||
657 | 658 | ||
658 | # trap exceptions during break handling and disable h/w breakpoints/watchpoints | 659 | # trap exceptions during break handling and disable h/w breakpoints/watchpoints |
659 | sethi %hi(DCR_EBE),gr5 | 660 | sethi %hi(DCR_EBE),gr5 |
@@ -698,7 +699,10 @@ __break_continue: | |||
698 | lddi @(gr31,#REG_PSR) ,gr22 | 699 | lddi @(gr31,#REG_PSR) ,gr22 |
699 | ldi @(gr31,#REG_PC) ,gr21 | 700 | ldi @(gr31,#REG_PC) ,gr21 |
700 | ldi @(gr31,#REG_TBR) ,gr20 | 701 | ldi @(gr31,#REG_TBR) ,gr20 |
701 | ldi.p @(gr31,#REG_DCR) ,gr6 | 702 | |
703 | sethi.p %hi(__debug_status),gr6 | ||
704 | setlo %lo(__debug_status),gr6 | ||
705 | ldi.p @(gr6,#DEBUG_DCR) ,gr6 | ||
702 | 706 | ||
703 | andi gr22,#PSR_S,gr19 /* rebuild BPSR */ | 707 | andi gr22,#PSR_S,gr19 /* rebuild BPSR */ |
704 | andi.p gr22,#PSR_ET,gr5 | 708 | andi.p gr22,#PSR_ET,gr5 |