diff options
| -rw-r--r-- | arch/xtensa/Makefile | 4 | ||||
| -rw-r--r-- | arch/xtensa/boot/Makefile | 2 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/regs.h | 1 | ||||
| -rw-r--r-- | arch/xtensa/include/asm/timex.h | 6 | ||||
| -rw-r--r-- | arch/xtensa/kernel/align.S | 5 | ||||
| -rw-r--r-- | arch/xtensa/kernel/coprocessor.S | 9 | ||||
| -rw-r--r-- | arch/xtensa/kernel/entry.S | 387 | ||||
| -rw-r--r-- | arch/xtensa/kernel/setup.c | 4 | ||||
| -rw-r--r-- | arch/xtensa/kernel/time.c | 8 | ||||
| -rw-r--r-- | arch/xtensa/kernel/vectors.S | 250 | ||||
| -rw-r--r-- | arch/xtensa/kernel/xtensa_ksyms.c | 1 |
11 files changed, 324 insertions, 353 deletions
diff --git a/arch/xtensa/Makefile b/arch/xtensa/Makefile index 136224b74d4f..81250ece3062 100644 --- a/arch/xtensa/Makefile +++ b/arch/xtensa/Makefile | |||
| @@ -55,10 +55,10 @@ ifneq ($(CONFIG_LD_NO_RELAX),) | |||
| 55 | LDFLAGS := --no-relax | 55 | LDFLAGS := --no-relax |
| 56 | endif | 56 | endif |
| 57 | 57 | ||
| 58 | ifeq ($(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1) | 58 | ifeq ($(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1) |
| 59 | CHECKFLAGS += -D__XTENSA_EB__ | 59 | CHECKFLAGS += -D__XTENSA_EB__ |
| 60 | endif | 60 | endif |
| 61 | ifeq ($(shell echo -e __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1) | 61 | ifeq ($(shell echo __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1) |
| 62 | CHECKFLAGS += -D__XTENSA_EL__ | 62 | CHECKFLAGS += -D__XTENSA_EL__ |
| 63 | endif | 63 | endif |
| 64 | 64 | ||
diff --git a/arch/xtensa/boot/Makefile b/arch/xtensa/boot/Makefile index 64ffc4b53df6..ca20a892021b 100644 --- a/arch/xtensa/boot/Makefile +++ b/arch/xtensa/boot/Makefile | |||
| @@ -12,7 +12,7 @@ | |||
| 12 | KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include | 12 | KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include |
| 13 | HOSTFLAGS += -Iarch/$(ARCH)/boot/include | 13 | HOSTFLAGS += -Iarch/$(ARCH)/boot/include |
| 14 | 14 | ||
| 15 | BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") | 15 | BIG_ENDIAN := $(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#") |
| 16 | 16 | ||
| 17 | export ccflags-y | 17 | export ccflags-y |
| 18 | export BIG_ENDIAN | 18 | export BIG_ENDIAN |
diff --git a/arch/xtensa/include/asm/regs.h b/arch/xtensa/include/asm/regs.h index b24de6717020..4ba9f516b0e2 100644 --- a/arch/xtensa/include/asm/regs.h +++ b/arch/xtensa/include/asm/regs.h | |||
| @@ -82,6 +82,7 @@ | |||
| 82 | #define PS_CALLINC_SHIFT 16 | 82 | #define PS_CALLINC_SHIFT 16 |
| 83 | #define PS_CALLINC_MASK 0x00030000 | 83 | #define PS_CALLINC_MASK 0x00030000 |
| 84 | #define PS_OWB_SHIFT 8 | 84 | #define PS_OWB_SHIFT 8 |
| 85 | #define PS_OWB_WIDTH 4 | ||
| 85 | #define PS_OWB_MASK 0x00000F00 | 86 | #define PS_OWB_MASK 0x00000F00 |
| 86 | #define PS_RING_SHIFT 6 | 87 | #define PS_RING_SHIFT 6 |
| 87 | #define PS_RING_MASK 0x000000C0 | 88 | #define PS_RING_MASK 0x000000C0 |
diff --git a/arch/xtensa/include/asm/timex.h b/arch/xtensa/include/asm/timex.h index 69f901713fb6..27fa3c170662 100644 --- a/arch/xtensa/include/asm/timex.h +++ b/arch/xtensa/include/asm/timex.h | |||
| @@ -35,13 +35,7 @@ | |||
| 35 | # error "Bad timer number for Linux configurations!" | 35 | # error "Bad timer number for Linux configurations!" |
| 36 | #endif | 36 | #endif |
| 37 | 37 | ||
| 38 | #ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT | ||
| 39 | extern unsigned long ccount_freq; | 38 | extern unsigned long ccount_freq; |
| 40 | #define CCOUNT_PER_JIFFY (ccount_freq / HZ) | ||
| 41 | #else | ||
| 42 | #define CCOUNT_PER_JIFFY (CONFIG_XTENSA_CPU_CLOCK*(1000000UL/HZ)) | ||
| 43 | #endif | ||
| 44 | |||
| 45 | 39 | ||
| 46 | typedef unsigned long long cycles_t; | 40 | typedef unsigned long long cycles_t; |
| 47 | 41 | ||
diff --git a/arch/xtensa/kernel/align.S b/arch/xtensa/kernel/align.S index aa2e87b8566a..d4cef6039a5c 100644 --- a/arch/xtensa/kernel/align.S +++ b/arch/xtensa/kernel/align.S | |||
| @@ -146,9 +146,9 @@ | |||
| 146 | * a0: trashed, original value saved on stack (PT_AREG0) | 146 | * a0: trashed, original value saved on stack (PT_AREG0) |
| 147 | * a1: a1 | 147 | * a1: a1 |
| 148 | * a2: new stack pointer, original in DEPC | 148 | * a2: new stack pointer, original in DEPC |
| 149 | * a3: dispatch table | 149 | * a3: a3 |
| 150 | * depc: a2, original value saved on stack (PT_DEPC) | 150 | * depc: a2, original value saved on stack (PT_DEPC) |
| 151 | * excsave_1: a3 | 151 | * excsave_1: dispatch table |
| 152 | * | 152 | * |
| 153 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC | 153 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC |
| 154 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception | 154 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception |
| @@ -171,7 +171,6 @@ ENTRY(fast_unaligned) | |||
| 171 | s32i a8, a2, PT_AREG8 | 171 | s32i a8, a2, PT_AREG8 |
| 172 | 172 | ||
| 173 | rsr a0, depc | 173 | rsr a0, depc |
| 174 | xsr a3, excsave1 | ||
| 175 | s32i a0, a2, PT_AREG2 | 174 | s32i a0, a2, PT_AREG2 |
| 176 | s32i a3, a2, PT_AREG3 | 175 | s32i a3, a2, PT_AREG3 |
| 177 | 176 | ||
diff --git a/arch/xtensa/kernel/coprocessor.S b/arch/xtensa/kernel/coprocessor.S index 647657484866..a482df5df2b2 100644 --- a/arch/xtensa/kernel/coprocessor.S +++ b/arch/xtensa/kernel/coprocessor.S | |||
| @@ -32,9 +32,9 @@ | |||
| 32 | * a0: trashed, original value saved on stack (PT_AREG0) | 32 | * a0: trashed, original value saved on stack (PT_AREG0) |
| 33 | * a1: a1 | 33 | * a1: a1 |
| 34 | * a2: new stack pointer, original in DEPC | 34 | * a2: new stack pointer, original in DEPC |
| 35 | * a3: dispatch table | 35 | * a3: a3 |
| 36 | * depc: a2, original value saved on stack (PT_DEPC) | 36 | * depc: a2, original value saved on stack (PT_DEPC) |
| 37 | * excsave_1: a3 | 37 | * excsave_1: dispatch table |
| 38 | * | 38 | * |
| 39 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC | 39 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC |
| 40 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception | 40 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception |
| @@ -225,9 +225,9 @@ ENDPROC(coprocessor_restore) | |||
| 225 | * a0: trashed, original value saved on stack (PT_AREG0) | 225 | * a0: trashed, original value saved on stack (PT_AREG0) |
| 226 | * a1: a1 | 226 | * a1: a1 |
| 227 | * a2: new stack pointer, original in DEPC | 227 | * a2: new stack pointer, original in DEPC |
| 228 | * a3: dispatch table | 228 | * a3: a3 |
| 229 | * depc: a2, original value saved on stack (PT_DEPC) | 229 | * depc: a2, original value saved on stack (PT_DEPC) |
| 230 | * excsave_1: a3 | 230 | * excsave_1: dispatch table |
| 231 | * | 231 | * |
| 232 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC | 232 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC |
| 233 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception | 233 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception |
| @@ -245,7 +245,6 @@ ENTRY(fast_coprocessor) | |||
| 245 | 245 | ||
| 246 | /* Save remaining registers a1-a3 and SAR */ | 246 | /* Save remaining registers a1-a3 and SAR */ |
| 247 | 247 | ||
| 248 | xsr a3, excsave1 | ||
| 249 | s32i a3, a2, PT_AREG3 | 248 | s32i a3, a2, PT_AREG3 |
| 250 | rsr a3, sar | 249 | rsr a3, sar |
| 251 | s32i a1, a2, PT_AREG1 | 250 | s32i a1, a2, PT_AREG1 |
diff --git a/arch/xtensa/kernel/entry.S b/arch/xtensa/kernel/entry.S index 9298742f0fd0..de1dfa18d0a1 100644 --- a/arch/xtensa/kernel/entry.S +++ b/arch/xtensa/kernel/entry.S | |||
| @@ -31,8 +31,6 @@ | |||
| 31 | /* Unimplemented features. */ | 31 | /* Unimplemented features. */ |
| 32 | 32 | ||
| 33 | #undef KERNEL_STACK_OVERFLOW_CHECK | 33 | #undef KERNEL_STACK_OVERFLOW_CHECK |
| 34 | #undef PREEMPTIBLE_KERNEL | ||
| 35 | #undef ALLOCA_EXCEPTION_IN_IRAM | ||
| 36 | 34 | ||
| 37 | /* Not well tested. | 35 | /* Not well tested. |
| 38 | * | 36 | * |
| @@ -92,9 +90,9 @@ | |||
| 92 | * a0: trashed, original value saved on stack (PT_AREG0) | 90 | * a0: trashed, original value saved on stack (PT_AREG0) |
| 93 | * a1: a1 | 91 | * a1: a1 |
| 94 | * a2: new stack pointer, original value in depc | 92 | * a2: new stack pointer, original value in depc |
| 95 | * a3: dispatch table | 93 | * a3: a3 |
| 96 | * depc: a2, original value saved on stack (PT_DEPC) | 94 | * depc: a2, original value saved on stack (PT_DEPC) |
| 97 | * excsave1: a3 | 95 | * excsave1: dispatch table |
| 98 | * | 96 | * |
| 99 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC | 97 | * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC |
| 100 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception | 98 | * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception |
| @@ -110,9 +108,8 @@ | |||
| 110 | 108 | ||
| 111 | ENTRY(user_exception) | 109 | ENTRY(user_exception) |
| 112 | 110 | ||
| 113 | /* Save a2, a3, and depc, restore excsave_1 and set SP. */ | 111 | /* Save a1, a2, a3, and set SP. */ |
| 114 | 112 | ||
| 115 | xsr a3, excsave1 | ||
| 116 | rsr a0, depc | 113 | rsr a0, depc |
| 117 | s32i a1, a2, PT_AREG1 | 114 | s32i a1, a2, PT_AREG1 |
| 118 | s32i a0, a2, PT_AREG2 | 115 | s32i a0, a2, PT_AREG2 |
| @@ -238,9 +235,9 @@ ENDPROC(user_exception) | |||
| 238 | * a0: trashed, original value saved on stack (PT_AREG0) | 235 | * a0: trashed, original value saved on stack (PT_AREG0) |
| 239 | * a1: a1 | 236 | * a1: a1 |
| 240 | * a2: new stack pointer, original in DEPC | 237 | * a2: new stack pointer, original in DEPC |
| 241 | * a3: dispatch table | 238 | * a3: a3 |
| 242 | * depc: a2, original value saved on stack (PT_DEPC) | 239 | * depc: a2, original value saved on stack (PT_DEPC) |
| 243 | * excsave_1: a3 | ||
