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 |
