diff options
| author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 11:18:34 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-04 11:18:34 -0400 |
| commit | 5a96c5d0c58ead9a0ece03ffe1c116dea6dafe9c (patch) | |
| tree | 17199c2c536f25a2b34e37045e9f7619a2dcbb3d /include/asm-parisc/processor.h | |
| parent | 13bbd8d90647132fc295d73b122567eb8987d298 (diff) | |
| parent | 5f024a251f0b3b179bbc8fc62f3a650e49359db5 (diff) | |
Merge master.kernel.org:/pub/scm/linux/kernel/git/willy/parisc-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/willy/parisc-2.6: (41 commits)
[PARISC] Kill wall_jiffies use
[PARISC] Honour "panic_on_oops" sysctl
[PARISC] Fix fs/binfmt_som.c
[PARISC] Export clear_user_page to modules
[PARISC] Make DMA routines more stubby
[PARISC] Define pci_get_legacy_ide_irq
[PARISC] Fix CONFIG_DEBUG_SPINLOCK
[PARISC] Fix HPUX compat compile with current GCC
[PARISC] Fix iounmap compile warning
[PARISC] Add support for Quicksilver AGPGART
[PARISC] Move LBA and SBA register defines to the common ropes.h
[PARISC] Create shared <asm/ropes.h> header
[PARISC] Stash the lba_device in its struct device drvdata
[PARISC] Generalize IS_ASTRO et al to take a parisc_device like
[PARISC] Pretty print the name of the lba type on kernel boot
[PARISC] Remove some obsolete comments and I checked that Reo is similar to Ike
[PARISC] Add hardware found in the rp8400
[PARISC] Allow nested interrupts
[PARISC] Further updates to timer_interrupt()
[PARISC] remove halftick and copy clocktick to local var (gcc can optimize usage)
...
Diffstat (limited to 'include/asm-parisc/processor.h')
| -rw-r--r-- | include/asm-parisc/processor.h | 39 |
1 files changed, 14 insertions, 25 deletions
diff --git a/include/asm-parisc/processor.h b/include/asm-parisc/processor.h index b73626f040da..fd7866dc8c83 100644 --- a/include/asm-parisc/processor.h +++ b/include/asm-parisc/processor.h | |||
| @@ -9,6 +9,8 @@ | |||
| 9 | #define __ASM_PARISC_PROCESSOR_H | 9 | #define __ASM_PARISC_PROCESSOR_H |
| 10 | 10 | ||
| 11 | #ifndef __ASSEMBLY__ | 11 | #ifndef __ASSEMBLY__ |
| 12 | #include <asm/prefetch.h> /* lockdep.h needs <linux/prefetch.h> */ | ||
| 13 | |||
| 12 | #include <linux/threads.h> | 14 | #include <linux/threads.h> |
| 13 | #include <linux/spinlock_types.h> | 15 | #include <linux/spinlock_types.h> |
| 14 | 16 | ||
| @@ -276,7 +278,7 @@ on downward growing arches, it looks like this: | |||
| 276 | */ | 278 | */ |
| 277 | 279 | ||
| 278 | #ifdef __LP64__ | 280 | #ifdef __LP64__ |
| 279 | #define USER_WIDE_MODE (personality(current->personality) == PER_LINUX) | 281 | #define USER_WIDE_MODE (!test_thread_flag(TIF_32BIT)) |
| 280 | #else | 282 | #else |
| 281 | #define USER_WIDE_MODE 0 | 283 | #define USER_WIDE_MODE 0 |
| 282 | #endif | 284 | #endif |
| @@ -328,33 +330,20 @@ extern unsigned long get_wchan(struct task_struct *p); | |||
| 328 | #define KSTK_EIP(tsk) ((tsk)->thread.regs.iaoq[0]) | 330 | #define KSTK_EIP(tsk) ((tsk)->thread.regs.iaoq[0]) |
| 329 | #define KSTK_ESP(tsk) ((tsk)->thread.regs.gr[30]) | 331 | #define KSTK_ESP(tsk) ((tsk)->thread.regs.gr[30]) |
| 330 | 332 | ||
| 333 | #define cpu_relax() barrier() | ||
| 331 | 334 | ||
| 332 | /* | 335 | /* Used as a macro to identify the combined VIPT/PIPT cached |
| 333 | * PA 2.0 defines data prefetch instructions on page 6-11 of the Kane book. | 336 | * CPUs which require a guarantee of coherency (no inequivalent |
| 334 | * In addition, many implementations do hardware prefetching of both | 337 | * aliases with different data, whether clean or not) to operate */ |
| 335 | * instructions and data. | 338 | static inline int parisc_requires_coherency(void) |
| 336 | * | ||
| 337 | * PA7300LC (page 14-4 of the ERS) also implements prefetching by a load | ||
| 338 | * to gr0 but not in a way that Linux can use. If the load would cause an | ||
| 339 | * interruption (eg due to prefetching 0), it is suppressed on PA2.0 | ||
| 340 | * processors, but not on 7300LC. | ||
| 341 | */ | ||
| 342 | #ifdef CONFIG_PREFETCH | ||
| 343 | #define ARCH_HAS_PREFETCH | ||
| 344 | #define ARCH_HAS_PREFETCHW | ||
| 345 | |||
| 346 | extern inline void prefetch(const void *addr) | ||
| 347 | { | ||
| 348 | __asm__("ldw 0(%0), %%r0" : : "r" (addr)); | ||
| 349 | } | ||
| 350 | |||
| 351 | extern inline void prefetchw(const void *addr) | ||
| 352 | { | 339 | { |
| 353 | __asm__("ldd 0(%0), %%r0" : : "r" (addr)); | 340 | #ifdef CONFIG_PA8X00 |
| 354 | } | 341 | /* FIXME: also pa8900 - when we see one */ |
| 342 | return boot_cpu_data.cpu_type == mako; | ||
| 343 | #else | ||
| 344 | return 0; | ||
| 355 | #endif | 345 | #endif |
| 356 | 346 | } | |
| 357 | #define cpu_relax() barrier() | ||
| 358 | 347 | ||
| 359 | #endif /* __ASSEMBLY__ */ | 348 | #endif /* __ASSEMBLY__ */ |
| 360 | 349 | ||
