fiq.c (d585a021c0b10b0477d6b608c53e1feb8cde0507) | fiq.c (247055aa21ffef1c49dd64710d5e94c2aee19b58) |
---|---|
1/* 2 * linux/arch/arm/kernel/fiq.c 3 * 4 * Copyright (C) 1998 Russell King 5 * Copyright (C) 1998, 1999 Phil Blundell 6 * 7 * FIQ support written by Philip Blundell <philb@gnu.org>, 1998. 8 * --- 31 unchanged lines hidden (view full) --- 40#include <linux/init.h> 41#include <linux/interrupt.h> 42#include <linux/seq_file.h> 43 44#include <asm/cacheflush.h> 45#include <asm/fiq.h> 46#include <asm/irq.h> 47#include <asm/system.h> | 1/* 2 * linux/arch/arm/kernel/fiq.c 3 * 4 * Copyright (C) 1998 Russell King 5 * Copyright (C) 1998, 1999 Phil Blundell 6 * 7 * FIQ support written by Philip Blundell <philb@gnu.org>, 1998. 8 * --- 31 unchanged lines hidden (view full) --- 40#include <linux/init.h> 41#include <linux/interrupt.h> 42#include <linux/seq_file.h> 43 44#include <asm/cacheflush.h> 45#include <asm/fiq.h> 46#include <asm/irq.h> 47#include <asm/system.h> |
48#include <asm/traps.h> |
|
48 49static unsigned long no_fiq_insn; 50 51/* Default reacquire function 52 * - we always relinquish FIQ control 53 * - we always reacquire FIQ control 54 */ 55static int fiq_def_op(void *ref, int relinquish) --- 16 unchanged lines hidden (view full) --- 72 if (current_fiq != &default_owner) 73 seq_printf(p, "FIQ: %s\n", current_fiq->name); 74 75 return 0; 76} 77 78void set_fiq_handler(void *start, unsigned int length) 79{ | 49 50static unsigned long no_fiq_insn; 51 52/* Default reacquire function 53 * - we always relinquish FIQ control 54 * - we always reacquire FIQ control 55 */ 56static int fiq_def_op(void *ref, int relinquish) --- 16 unchanged lines hidden (view full) --- 73 if (current_fiq != &default_owner) 74 seq_printf(p, "FIQ: %s\n", current_fiq->name); 75 76 return 0; 77} 78 79void set_fiq_handler(void *start, unsigned int length) 80{ |
81#if defined(CONFIG_CPU_USE_DOMAINS) |
|
80 memcpy((void *)0xffff001c, start, length); | 82 memcpy((void *)0xffff001c, start, length); |
83#else 84 memcpy(vectors_page + 0x1c, start, length); 85#endif |
|
81 flush_icache_range(0xffff001c, 0xffff001c + length); 82 if (!vectors_high()) 83 flush_icache_range(0x1c, 0x1c + length); 84} 85 86/* 87 * Taking an interrupt in FIQ mode is death, so both these functions 88 * disable irqs for the duration. Note - these functions are almost --- 93 unchanged lines hidden --- | 86 flush_icache_range(0xffff001c, 0xffff001c + length); 87 if (!vectors_high()) 88 flush_icache_range(0x1c, 0x1c + length); 89} 90 91/* 92 * Taking an interrupt in FIQ mode is death, so both these functions 93 * disable irqs for the duration. Note - these functions are almost --- 93 unchanged lines hidden --- |