processor_32.h revision fa43972fab24a3c050e880a7831f9378c6cebc0b
1af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 2af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * include/asm-sh/processor.h 3af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * 4af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Copyright (C) 1999, 2000 Niibe Yutaka 5af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Copyright (C) 2002, 2003 Paul Mundt 6af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 7af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 8af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#ifndef __ASM_SH_PROCESSOR_32_H 9af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define __ASM_SH_PROCESSOR_32_H 10af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#ifdef __KERNEL__ 11af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 12af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#include <linux/compiler.h> 13fa43972fab24a3c050e880a7831f9378c6cebc0bPaul Mundt#include <linux/linkage.h> 14af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#include <asm/page.h> 15af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#include <asm/types.h> 16af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#include <asm/cache.h> 17af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#include <asm/ptrace.h> 18af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 19af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 20af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Default implementation of macro that returns current 21af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * instruction pointer ("program counter"). 22af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 23103340cc36384c1afee4453b65a784d8b20d9d8dPaul Mundt#define current_text_addr() ({ void *pc; __asm__("mova 1f, %0\n.align 2\n1:":"=z" (pc)); pc; }) 24af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 25af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Core Processor Version Register */ 26af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define CCN_PVR 0xff000030 27af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define CCN_CVR 0xff000040 28af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define CCN_PRR 0xff000044 29af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 30af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstruct sh_cpuinfo { 31af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned int type; 323611ee7acc113e5e482b7d20d5133935226f3129Stuart Menefy int cut_major, cut_minor; 33af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long loops_per_jiffy; 34af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long asid_cache; 35af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 36af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt struct cache_info icache; /* Primary I-cache */ 37af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt struct cache_info dcache; /* Primary D-cache */ 38af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt struct cache_info scache; /* Secondary cache */ 39af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 40af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long flags; 41af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt} __attribute__ ((aligned(L1_CACHE_BYTES))); 42af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 43af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtextern struct sh_cpuinfo cpu_data[]; 44af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define boot_cpu_data cpu_data[0] 45af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define current_cpu_data cpu_data[smp_processor_id()] 46af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define raw_current_cpu_data cpu_data[raw_smp_processor_id()] 47af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 48fa43972fab24a3c050e880a7831f9378c6cebc0bPaul Mundtasmlinkage void __init sh_cpu_init(void); 49fa43972fab24a3c050e880a7831f9378c6cebc0bPaul Mundt 50af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 51af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * User space process size: 2GB. 52af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * 53af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Since SH7709 and SH7750 have "area 7", we can't use 0x7c000000--0x7fffffff 54af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 55af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define TASK_SIZE 0x7c000000UL 56af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 57922a70d327bd4b11342c2afd08e20d35f52064c3David Howells#define STACK_TOP TASK_SIZE 58922a70d327bd4b11342c2afd08e20d35f52064c3David Howells#define STACK_TOP_MAX STACK_TOP 59922a70d327bd4b11342c2afd08e20d35f52064c3David Howells 60af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* This decides where the kernel will search for a free chunk of vm 61af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * space during mmap's. 62af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 63af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define TASK_UNMAPPED_BASE (TASK_SIZE / 3) 64af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 65af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 66af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Bit of SR register 67af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * 68af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * FD-bit: 69af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * When it's set, it means the processor doesn't have right to use FPU, 70af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * and it results exception when the floating operation is executed. 71af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * 72af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * IMASK-bit: 73af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Interrupt level mask 74af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 75af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define SR_DSP 0x00001000 76af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define SR_IMASK 0x000000f0 779bbafce2eec190ef7e44b0eb1095ba17ce6ad3afPaul Mundt#define SR_FD 0x00008000 78af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 79af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 80af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * FPU structure and data 81af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 82af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 83af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstruct sh_fpu_hard_struct { 84af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long fp_regs[16]; 85af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long xfp_regs[16]; 86af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long fpscr; 87af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long fpul; 88af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 89af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt long status; /* software status information */ 90af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt}; 91af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 92af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Dummy fpu emulator */ 93af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstruct sh_fpu_soft_struct { 94af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long fp_regs[16]; 95af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long xfp_regs[16]; 96af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long fpscr; 97af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long fpul; 98af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 99af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned char lookahead; 100af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long entry_pc; 101af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt}; 102af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 103af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtunion sh_fpu_union { 104af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt struct sh_fpu_hard_struct hard; 105af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt struct sh_fpu_soft_struct soft; 106af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt}; 107af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 108af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstruct thread_struct { 109af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt /* Saved registers when thread is descheduled */ 110af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long sp; 111af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long pc; 112af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 113af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt /* Hardware debugging registers */ 114af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long ubc_pc; 115af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 116af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt /* floating point info */ 117af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt union sh_fpu_union fpu; 118af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt}; 119af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 120af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Count of active tasks with UBC settings */ 121af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtextern int ubc_usercnt; 122af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 123af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define INIT_THREAD { \ 124af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt .sp = sizeof(init_stack) + (long) &init_stack, \ 125af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt} 126af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 127af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 128af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Do necessary setup to start up a newly executed thread. 129af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 130af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define start_thread(regs, new_pc, new_sp) \ 131af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt set_fs(USER_DS); \ 132af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt regs->pr = 0; \ 133af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt regs->sr = SR_FD; /* User mode. */ \ 134af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt regs->pc = new_pc; \ 135af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt regs->regs[15] = new_sp 136af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 137af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Forward declaration, a strange C thing */ 138af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstruct task_struct; 139af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstruct mm_struct; 140af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 141af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Free all resources held by a thread. */ 142af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtextern void release_thread(struct task_struct *); 143af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 144af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Prepare to copy thread state - unlazy all lazy status */ 145af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define prepare_to_copy(tsk) do { } while (0) 146af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 147af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 148af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * create a kernel thread without removing it from tasklists 149af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 150af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtextern int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); 151af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 152af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Copy and release all segment info associated with a VM */ 153af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define copy_segments(p, mm) do { } while(0) 154af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define release_segments(mm) do { } while(0) 155af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 156af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 157af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * FPU lazy state save handling. 158af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 159af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 160af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstatic __inline__ void disable_fpu(void) 161af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt{ 162af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long __dummy; 163af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 164af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt /* Set FD flag in SR */ 165af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt __asm__ __volatile__("stc sr, %0\n\t" 166af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt "or %1, %0\n\t" 167af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt "ldc %0, sr" 168af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt : "=&r" (__dummy) 169af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt : "r" (SR_FD)); 170af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt} 171af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 172af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstatic __inline__ void enable_fpu(void) 173af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt{ 174af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt unsigned long __dummy; 175af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 176af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt /* Clear out FD flag in SR */ 177af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt __asm__ __volatile__("stc sr, %0\n\t" 178af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt "and %1, %0\n\t" 179af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt "ldc %0, sr" 180af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt : "=&r" (__dummy) 181af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt : "r" (~SR_FD)); 182af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt} 183af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 184af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* Double presision, NANS as NANS, rounding to nearest, no exceptions */ 185af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define FPSCR_INIT 0x00080000 186af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 187af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define FPSCR_CAUSE_MASK 0x0001f000 /* Cause bits */ 188af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define FPSCR_FLAG_MASK 0x0000007c /* Flag bits */ 189af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 190af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt/* 191af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt * Return saved PC of a blocked thread. 192af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt */ 193af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define thread_saved_pc(tsk) (tsk->thread.pc) 194af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 195af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtvoid show_trace(struct task_struct *tsk, unsigned long *sp, 196af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt struct pt_regs *regs); 197af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtextern unsigned long get_wchan(struct task_struct *p); 198af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 199af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define KSTK_EIP(tsk) (task_pt_regs(tsk)->pc) 200af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define KSTK_ESP(tsk) (task_pt_regs(tsk)->regs[15]) 201af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 202af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") 203af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define cpu_relax() barrier() 204af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 205af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#if defined(CONFIG_CPU_SH2A) || defined(CONFIG_CPU_SH3) || \ 206af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt defined(CONFIG_CPU_SH4) 207af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define PREFETCH_STRIDE L1_CACHE_BYTES 208af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define ARCH_HAS_PREFETCH 209af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define ARCH_HAS_PREFETCHW 210af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundtstatic inline void prefetch(void *x) 211af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt{ 212af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt __asm__ __volatile__ ("pref @%0\n\t" : : "r" (x) : "memory"); 213af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt} 214af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 215af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#define prefetchw(x) prefetch(x) 216af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#endif 217af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt 218af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#endif /* __KERNEL__ */ 219af3c7dfe822b598a2f977098101ed8b63cf0fdd1Paul Mundt#endif /* __ASM_SH_PROCESSOR_32_H */ 220