Skip to content
Snippets Groups Projects
Commit 552d2f84 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus

* 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus:
  [MIPS] vpe: Add missing "space"
  [MIPS] Compliment va_start() with va_end().
  [MIPS] IP22: Fix broken eeprom access by using __raw_readl/__raw_writel
  [MIPS] IP22: Fix broken EISA interrupt setup by switching to generic i8259
  [MIPS] 64-bit Sibyte kernels need DMA32.
  [MIPS] Only build r4k clocksource for systems that work ok with it.
  [MIPS] Handle R4000/R4400 mfc0 from count register.
  [MIPS] Fix possible hang in LL/SC futex loops.
  [MIPS] Fix context DSP context / TLS pointer switching bug for new threads.
  [MIPS] IP32: More interrupt renumbering fixes.
  [MIPS] time: MIPSsim's plat_time_init doesn't need to be irq safe.
  [MIPS] time: Fix negated condition in cevt-r4k driver.
  [MIPS] Fix pcspeaker build.
parents 09cfd929 b1e3afa0
No related branches found
No related tags found
No related merge requests found
/*
* 8253/8254 Programmable Interval Timer
*/
#ifndef _8253PIT_H
#define _8253PIT_H
#define PIT_TICK_RATE 1193182UL
#endif
...@@ -92,6 +92,7 @@ ...@@ -92,6 +92,7 @@
#define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x01000000) #define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x01000000)
#endif #endif
#define MAX_DMA_PFN PFN_DOWN(virt_to_phys((void *)MAX_DMA_ADDRESS)) #define MAX_DMA_PFN PFN_DOWN(virt_to_phys((void *)MAX_DMA_ADDRESS))
#define MAX_DMA32_PFN (1UL << (32 - PAGE_SHIFT))
/* 8237 DMA controllers */ /* 8237 DMA controllers */
#define IO_DMA1_BASE 0x00 /* 8 bit slave DMA, channels 0..3 */ #define IO_DMA1_BASE 0x00 /* 8 bit slave DMA, channels 0..3 */
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
" .set mips0 \n" \ " .set mips0 \n" \
" .section .fixup,\"ax\" \n" \ " .section .fixup,\"ax\" \n" \
"4: li %0, %6 \n" \ "4: li %0, %6 \n" \
" j 2b \n" \ " j 3b \n" \
" .previous \n" \ " .previous \n" \
" .section __ex_table,\"a\" \n" \ " .section __ex_table,\"a\" \n" \
" "__UA_ADDR "\t1b, 4b \n" \ " "__UA_ADDR "\t1b, 4b \n" \
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
" .set mips0 \n" \ " .set mips0 \n" \
" .section .fixup,\"ax\" \n" \ " .section .fixup,\"ax\" \n" \
"4: li %0, %6 \n" \ "4: li %0, %6 \n" \
" j 2b \n" \ " j 3b \n" \
" .previous \n" \ " .previous \n" \
" .section __ex_table,\"a\" \n" \ " .section __ex_table,\"a\" \n" \
" "__UA_ADDR "\t1b, 4b \n" \ " "__UA_ADDR "\t1b, 4b \n" \
...@@ -200,4 +200,4 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval) ...@@ -200,4 +200,4 @@ futex_atomic_cmpxchg_inatomic(int __user *uaddr, int oldval, int newval)
} }
#endif #endif
#endif #endif /* _ASM_FUTEX_H */
...@@ -12,6 +12,8 @@ ...@@ -12,6 +12,8 @@
#define PIT_CH0 0x40 #define PIT_CH0 0x40
#define PIT_CH2 0x42 #define PIT_CH2 0x42
#define PIT_TICK_RATE 1193182UL
extern spinlock_t i8253_lock; extern spinlock_t i8253_lock;
extern void setup_pit_timer(void); extern void setup_pit_timer(void);
......
...@@ -22,7 +22,7 @@ enum ip32_irq_no { ...@@ -22,7 +22,7 @@ enum ip32_irq_no {
* CPU interrupts are 0 ... 7 * CPU interrupts are 0 ... 7
*/ */
CRIME_IRQ_BASE = MIPS_CPU_IRQ_BASE, CRIME_IRQ_BASE = MIPS_CPU_IRQ_BASE + 8,
/* /*
* MACE * MACE
......
...@@ -68,11 +68,15 @@ do { \ ...@@ -68,11 +68,15 @@ do { \
if (cpu_has_dsp) \ if (cpu_has_dsp) \
__save_dsp(prev); \ __save_dsp(prev); \
(last) = resume(prev, next, task_thread_info(next)); \ (last) = resume(prev, next, task_thread_info(next)); \
} while (0)
#define finish_arch_switch(prev) \
do { \
if (cpu_has_dsp) \ if (cpu_has_dsp) \
__restore_dsp(current); \ __restore_dsp(current); \
if (cpu_has_userlocal) \ if (cpu_has_userlocal) \
write_c0_userlocal(task_thread_info(current)->tp_value);\ write_c0_userlocal(current_thread_info()->tp_value); \
} while(0) } while (0)
static inline unsigned long __xchg_u32(volatile int * m, unsigned int val) static inline unsigned long __xchg_u32(volatile int * m, unsigned int val)
{ {
......
...@@ -58,10 +58,22 @@ extern int (*perf_irq)(void); ...@@ -58,10 +58,22 @@ extern int (*perf_irq)(void);
* Initialize the calling CPU's compare interrupt as clockevent device * Initialize the calling CPU's compare interrupt as clockevent device
*/ */
#ifdef CONFIG_CEVT_R4K #ifdef CONFIG_CEVT_R4K
extern void mips_clockevent_init(void); extern int mips_clockevent_init(void);
extern unsigned int __weak get_c0_compare_int(void); extern unsigned int __weak get_c0_compare_int(void);
#else #else
static inline void mips_clockevent_init(void) static inline int mips_clockevent_init(void)
{
return -ENXIO;
}
#endif
/*
* Initialize the count register as a clocksource
*/
#ifdef CONFIG_CEVT_R4K
extern void init_mips_clocksource(void);
#else
static inline void init_mips_clocksource(void)
{ {
} }
#endif #endif
......
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