Skip to content
Snippets Groups Projects
Commit dcb431e7 authored by Alexey Brodkin's avatar Alexey Brodkin
Browse files

arc: add dependences on MMU presence


Depending on MMU presence in CPU there're differences in HW behavior.
For example address of instruction that caused exception is put in
ECR register if MMU exists and in ERET register otherwise.

Signed-off-by: default avatarAlexey Brodkin <abrodkin@synopsys.com>
Signed-off-by: default avatarIgor Guryanov <guryanov@synopsys.com>
parent c0e9535e
No related branches found
No related tags found
No related merge requests found
...@@ -21,6 +21,10 @@ ifeq ($(CROSS_COMPILE),) ...@@ -21,6 +21,10 @@ ifeq ($(CROSS_COMPILE),)
CROSS_COMPILE := $(ARC_CROSS_COMPILE) CROSS_COMPILE := $(ARC_CROSS_COMPILE)
endif endif
ifdef CONFIG_ARC_MMU_VER
CONFIG_MMU = 1
endif
PLATFORM_CPPFLAGS += -ffixed-r25 -D__ARC__ -gdwarf-2 PLATFORM_CPPFLAGS += -ffixed-r25 -D__ARC__ -gdwarf-2
# Needed for relocation # Needed for relocation
......
...@@ -78,6 +78,16 @@ ...@@ -78,6 +78,16 @@
PUSHAX %erbta PUSHAX %erbta
.endm .endm
.macro SAVE_EXCEPTION_SOURCE
#ifdef CONFIG_MMU
/* If MMU exists exception faulting address is loaded in EFA reg */
lr %r0, [%efa]
#else
/* Otherwise in ERET (exception return) reg */
lr %r0, [%eret]
#endif
.endm
.align 4 .align 4
.globl _start .globl _start
_start: _start:
...@@ -102,13 +112,13 @@ _start: ...@@ -102,13 +112,13 @@ _start:
memory_error: memory_error:
SAVE_ALL_SYS SAVE_ALL_SYS
lr %r0, [%efa] SAVE_EXCEPTION_SOURCE
mov %r1, %sp mov %r1, %sp
j do_memory_error j do_memory_error
instruction_error: instruction_error:
SAVE_ALL_SYS SAVE_ALL_SYS
lr %r0, [%efa] SAVE_EXCEPTION_SOURCE
mov %r1, %sp mov %r1, %sp
j do_instruction_error j do_instruction_error
...@@ -119,7 +129,7 @@ interrupt_handler: ...@@ -119,7 +129,7 @@ interrupt_handler:
EV_MachineCheck: EV_MachineCheck:
SAVE_ALL_SYS SAVE_ALL_SYS
lr %r0, [%efa] SAVE_EXCEPTION_SOURCE
mov %r1, %sp mov %r1, %sp
j do_machine_check_fault j do_machine_check_fault
...@@ -135,7 +145,7 @@ EV_TLBMissD: ...@@ -135,7 +145,7 @@ EV_TLBMissD:
EV_TLBProtV: EV_TLBProtV:
SAVE_ALL_SYS SAVE_ALL_SYS
lr %r0, [%efa] SAVE_EXCEPTION_SOURCE
mov %r1, %sp mov %r1, %sp
j do_tlb_prot_violation j do_tlb_prot_violation
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment