Commit 67002151 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'xtensa-next-20130912' of git://github.com/czankel/xtensa-linux

Pull Xtensa updates from Chris Zankel.

* tag 'xtensa-next-20130912' of git://github.com/czankel/xtensa-linux:
  xtensa: Fix broken allmodconfig build
  xtensa: remove CCOUNT_PER_JIFFY
  xtensa: fix !CONFIG_XTENSA_CALIBRATE_CCOUNT build failure
  xtensa: don't use echo -e needlessly
  xtensa: new fast_alloca handler
  xtensa: keep a3 and excsave1 on entry to exception handlers
  xtensa: enable kernel preemption
  xtensa: check thread flags atomically on return from user exception
parents 9bf12df3 8872366d
...@@ -55,10 +55,10 @@ ifneq ($(CONFIG_LD_NO_RELAX),) ...@@ -55,10 +55,10 @@ ifneq ($(CONFIG_LD_NO_RELAX),)
LDFLAGS := --no-relax LDFLAGS := --no-relax
endif endif
ifeq ($(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1) ifeq ($(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#"),1)
CHECKFLAGS += -D__XTENSA_EB__ CHECKFLAGS += -D__XTENSA_EB__
endif endif
ifeq ($(shell echo -e __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1) ifeq ($(shell echo __XTENSA_EL__ | $(CC) -E - | grep -v "\#"),1)
CHECKFLAGS += -D__XTENSA_EL__ CHECKFLAGS += -D__XTENSA_EL__
endif endif
......
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include KBUILD_CFLAGS += -fno-builtin -Iarch/$(ARCH)/boot/include
HOSTFLAGS += -Iarch/$(ARCH)/boot/include HOSTFLAGS += -Iarch/$(ARCH)/boot/include
BIG_ENDIAN := $(shell echo -e __XTENSA_EB__ | $(CC) -E - | grep -v "\#") BIG_ENDIAN := $(shell echo __XTENSA_EB__ | $(CC) -E - | grep -v "\#")
export ccflags-y export ccflags-y
export BIG_ENDIAN export BIG_ENDIAN
......
...@@ -82,6 +82,7 @@ ...@@ -82,6 +82,7 @@
#define PS_CALLINC_SHIFT 16 #define PS_CALLINC_SHIFT 16
#define PS_CALLINC_MASK 0x00030000 #define PS_CALLINC_MASK 0x00030000
#define PS_OWB_SHIFT 8 #define PS_OWB_SHIFT 8
#define PS_OWB_WIDTH 4
#define PS_OWB_MASK 0x00000F00 #define PS_OWB_MASK 0x00000F00
#define PS_RING_SHIFT 6 #define PS_RING_SHIFT 6
#define PS_RING_MASK 0x000000C0 #define PS_RING_MASK 0x000000C0
......
...@@ -35,13 +35,7 @@ ...@@ -35,13 +35,7 @@
# error "Bad timer number for Linux configurations!" # error "Bad timer number for Linux configurations!"
#endif #endif
#ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT
extern unsigned long ccount_freq; extern unsigned long ccount_freq;
#define CCOUNT_PER_JIFFY (ccount_freq / HZ)
#else
#define CCOUNT_PER_JIFFY (CONFIG_XTENSA_CPU_CLOCK*(1000000UL/HZ))
#endif
typedef unsigned long long cycles_t; typedef unsigned long long cycles_t;
......
...@@ -146,9 +146,9 @@ ...@@ -146,9 +146,9 @@
* a0: trashed, original value saved on stack (PT_AREG0) * a0: trashed, original value saved on stack (PT_AREG0)
* a1: a1 * a1: a1
* a2: new stack pointer, original in DEPC * a2: new stack pointer, original in DEPC
* a3: dispatch table * a3: a3
* depc: a2, original value saved on stack (PT_DEPC) * depc: a2, original value saved on stack (PT_DEPC)
* excsave_1: a3 * excsave_1: dispatch table
* *
* PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC
* < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception
...@@ -171,7 +171,6 @@ ENTRY(fast_unaligned) ...@@ -171,7 +171,6 @@ ENTRY(fast_unaligned)
s32i a8, a2, PT_AREG8 s32i a8, a2, PT_AREG8
rsr a0, depc rsr a0, depc
xsr a3, excsave1
s32i a0, a2, PT_AREG2 s32i a0, a2, PT_AREG2
s32i a3, a2, PT_AREG3 s32i a3, a2, PT_AREG3
......
...@@ -32,9 +32,9 @@ ...@@ -32,9 +32,9 @@
* a0: trashed, original value saved on stack (PT_AREG0) * a0: trashed, original value saved on stack (PT_AREG0)
* a1: a1 * a1: a1
* a2: new stack pointer, original in DEPC * a2: new stack pointer, original in DEPC
* a3: dispatch table * a3: a3
* depc: a2, original value saved on stack (PT_DEPC) * depc: a2, original value saved on stack (PT_DEPC)
* excsave_1: a3 * excsave_1: dispatch table
* *
* PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC
* < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception
...@@ -225,9 +225,9 @@ ENDPROC(coprocessor_restore) ...@@ -225,9 +225,9 @@ ENDPROC(coprocessor_restore)
* a0: trashed, original value saved on stack (PT_AREG0) * a0: trashed, original value saved on stack (PT_AREG0)
* a1: a1 * a1: a1
* a2: new stack pointer, original in DEPC * a2: new stack pointer, original in DEPC
* a3: dispatch table * a3: a3
* depc: a2, original value saved on stack (PT_DEPC) * depc: a2, original value saved on stack (PT_DEPC)
* excsave_1: a3 * excsave_1: dispatch table
* *
* PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC * PT_DEPC >= VALID_DOUBLE_EXCEPTION_ADDRESS: double exception, DEPC
* < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception * < VALID_DOUBLE_EXCEPTION_ADDRESS: regular exception
...@@ -245,7 +245,6 @@ ENTRY(fast_coprocessor) ...@@ -245,7 +245,6 @@ ENTRY(fast_coprocessor)
/* Save remaining registers a1-a3 and SAR */ /* Save remaining registers a1-a3 and SAR */
xsr a3, excsave1
s32i a3, a2, PT_AREG3 s32i a3, a2, PT_AREG3
rsr a3, sar rsr a3, sar
s32i a1, a2, PT_AREG1 s32i a1, a2, PT_AREG1
......
This diff is collapsed.
...@@ -584,8 +584,8 @@ c_show(struct seq_file *f, void *slot) ...@@ -584,8 +584,8 @@ c_show(struct seq_file *f, void *slot)
"bogomips\t: %lu.%02lu\n", "bogomips\t: %lu.%02lu\n",
XCHAL_BUILD_UNIQUE_ID, XCHAL_BUILD_UNIQUE_ID,
XCHAL_HAVE_BE ? "big" : "little", XCHAL_HAVE_BE ? "big" : "little",
CCOUNT_PER_JIFFY/(1000000/HZ), ccount_freq/1000000,
(CCOUNT_PER_JIFFY/(10000/HZ)) % 100, (ccount_freq/10000) % 100,
loops_per_jiffy/(500000/HZ), loops_per_jiffy/(500000/HZ),
(loops_per_jiffy/(5000/HZ)) % 100); (loops_per_jiffy/(5000/HZ)) % 100);
......
...@@ -29,9 +29,7 @@ ...@@ -29,9 +29,7 @@
#include <asm/timex.h> #include <asm/timex.h>
#include <asm/platform.h> #include <asm/platform.h>
#ifdef CONFIG_XTENSA_CALIBRATE_CCOUNT
unsigned long ccount_freq; /* ccount Hz */ unsigned long ccount_freq; /* ccount Hz */
#endif
static cycle_t ccount_read(struct clocksource *cs) static cycle_t ccount_read(struct clocksource *cs)
{ {
...@@ -129,8 +127,10 @@ void __init time_init(void) ...@@ -129,8 +127,10 @@ void __init time_init(void)
platform_calibrate_ccount(); platform_calibrate_ccount();
printk("%d.%02d MHz\n", (int)ccount_freq/1000000, printk("%d.%02d MHz\n", (int)ccount_freq/1000000,
(int)(ccount_freq/10000)%100); (int)(ccount_freq/10000)%100);
#else
ccount_freq = CONFIG_XTENSA_CPU_CLOCK*1000000UL;
#endif #endif
clocksource_register_hz(&ccount_clocksource, CCOUNT_PER_JIFFY * HZ); clocksource_register_hz(&ccount_clocksource, ccount_freq);
ccount_timer.evt.cpumask = cpumask_of(0); ccount_timer.evt.cpumask = cpumask_of(0);
ccount_timer.evt.irq = irq_create_mapping(NULL, LINUX_TIMER_INT); ccount_timer.evt.irq = irq_create_mapping(NULL, LINUX_TIMER_INT);
...@@ -164,7 +164,7 @@ irqreturn_t timer_interrupt (int irq, void *dev_id) ...@@ -164,7 +164,7 @@ irqreturn_t timer_interrupt (int irq, void *dev_id)
#ifndef CONFIG_GENERIC_CALIBRATE_DELAY #ifndef CONFIG_GENERIC_CALIBRATE_DELAY
void calibrate_delay(void) void calibrate_delay(void)
{ {
loops_per_jiffy = CCOUNT_PER_JIFFY; loops_per_jiffy = ccount_freq / HZ;
printk("Calibrating delay loop (skipped)... " printk("Calibrating delay loop (skipped)... "
"%lu.%02lu BogoMIPS preset\n", "%lu.%02lu BogoMIPS preset\n",
loops_per_jiffy/(1000000/HZ), loops_per_jiffy/(1000000/HZ),
......
This diff is collapsed.
...@@ -25,6 +25,7 @@ ...@@ -25,6 +25,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/pgalloc.h> #include <asm/pgalloc.h>
#include <asm/ftrace.h>
#ifdef CONFIG_BLK_DEV_FD #ifdef CONFIG_BLK_DEV_FD
#include <asm/floppy.h> #include <asm/floppy.h>
#endif #endif
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment