亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? traps.c

?? ARM 嵌入式 系統(tǒng) 設(shè)計與實例開發(fā) 實驗教材 二源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* * Architecture-specific trap handling. * * Copyright (C) 1998-2001 Hewlett-Packard Co *	David Mosberger-Tang <davidm@hpl.hp.com> * * 05/12/00 grao <goutham.rao@intel.com> : added isr in siginfo for SIGFPE *//* * fp_emulate() needs to be able to access and update all floating point registers.  Those * saved in pt_regs can be accessed through that structure, but those not saved, will be * accessed directly.  To make this work, we need to ensure that the compiler does not end * up using a preserved floating point register on its own.  The following achieves this * by declaring preserved registers that are not marked as "fixed" as global register * variables. */register double f2 asm ("f2"); register double f3 asm ("f3");register double f4 asm ("f4"); register double f5 asm ("f5");register long f16 asm ("f16"); register long f17 asm ("f17");register long f18 asm ("f18"); register long f19 asm ("f19");register long f20 asm ("f20"); register long f21 asm ("f21");register long f22 asm ("f22"); register long f23 asm ("f23");register double f24 asm ("f24"); register double f25 asm ("f25");register double f26 asm ("f26"); register double f27 asm ("f27");register double f28 asm ("f28"); register double f29 asm ("f29");register double f30 asm ("f30"); register double f31 asm ("f31");#include <linux/config.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/sched.h>#include <linux/vt_kern.h>		/* For unblank_screen() */#include <asm/hardirq.h>#include <asm/ia32.h>#include <asm/processor.h>#include <asm/uaccess.h>#include <asm/fpswa.h>extern spinlock_t timerlist_lock;static fpswa_interface_t *fpswa_interface;void __inittrap_init (void){	printk("fpswa interface at %lx\n", ia64_boot_param->fpswa);	if (ia64_boot_param->fpswa)		/* FPSWA fixup: make the interface pointer a kernel virtual address: */		fpswa_interface = __va(ia64_boot_param->fpswa);}/* * Unlock any spinlocks which will prevent us from getting the message out (timerlist_lock * is acquired through the console unblank code) */voidbust_spinlocks (int yes){	spin_lock_init(&timerlist_lock);	if (yes) {		oops_in_progress = 1;#ifdef CONFIG_SMP		global_irq_lock = 0;	/* Many serial drivers do __global_cli() */#endif	} else {		int loglevel_save = console_loglevel;#ifdef CONFIG_VT		unblank_screen();#endif		oops_in_progress = 0;		/*		 * OK, the message is on the console.  Now we call printk() without		 * oops_in_progress set so that printk will give klogd a poke.  Hold onto		 * your hats...		 */		console_loglevel = 15;		/* NMI oopser may have shut the console up */		printk(" ");		console_loglevel = loglevel_save;	}}voiddie (const char *str, struct pt_regs *regs, long err){	static struct {		spinlock_t lock;		int lock_owner;		int lock_owner_depth;	} die = {		lock:			SPIN_LOCK_UNLOCKED,		lock_owner:		-1,		lock_owner_depth:	0	};	if (die.lock_owner != smp_processor_id()) {		console_verbose();		spin_lock_irq(&die.lock);		die.lock_owner = smp_processor_id();		die.lock_owner_depth = 0;		bust_spinlocks(1);	}	if (++die.lock_owner_depth < 3) {		printk("%s[%d]: %s %ld\n", current->comm, current->pid, str, err);		show_regs(regs);  	} else		printk(KERN_ERR "Recursive die() failure, output suppressed\n");	bust_spinlocks(0);	die.lock_owner = -1;	spin_unlock_irq(&die.lock);  	do_exit(SIGSEGV);}voiddie_if_kernel (char *str, struct pt_regs *regs, long err){	if (!user_mode(regs))		die(str, regs, err);}voidia64_bad_break (unsigned long break_num, struct pt_regs *regs){	siginfo_t siginfo;	int sig, code;	/* SIGILL, SIGFPE, SIGSEGV, and SIGBUS want these field initialized: */	siginfo.si_addr = (void *) (regs->cr_iip + ia64_psr(regs)->ri);	siginfo.si_imm = break_num;	switch (break_num) {	      case 0: /* unknown error */		sig = SIGILL; code = ILL_ILLOPC;		break;	      case 1: /* integer divide by zero */		sig = SIGFPE; code = FPE_INTDIV;		break;	      case 2: /* integer overflow */		sig = SIGFPE; code = FPE_INTOVF;		break;	      case 3: /* range check/bounds check */		sig = SIGFPE; code = FPE_FLTSUB;		break;	      case 4: /* null pointer dereference */		sig = SIGSEGV; code = SEGV_MAPERR;		break;	      case 5: /* misaligned data */		sig = SIGSEGV; code = BUS_ADRALN;		break;	      case 6: /* decimal overflow */		sig = SIGFPE; code = __FPE_DECOVF;		break;	      case 7: /* decimal divide by zero */		sig = SIGFPE; code = __FPE_DECDIV;		break;	      case 8: /* packed decimal error */		sig = SIGFPE; code = __FPE_DECERR;		break;	      case 9: /* invalid ASCII digit */		sig = SIGFPE; code = __FPE_INVASC;		break;	      case 10: /* invalid decimal digit */		sig = SIGFPE; code = __FPE_INVDEC;		break;	      case 11: /* paragraph stack overflow */		sig = SIGSEGV; code = __SEGV_PSTKOVF;		break;	      default:		if (break_num < 0x40000 || break_num > 0x100000)			die_if_kernel("Bad break", regs, break_num);		if (break_num < 0x80000) {			sig = SIGILL; code = __ILL_BREAK;		} else {			sig = SIGTRAP; code = TRAP_BRKPT;		}	}	siginfo.si_signo = sig;	siginfo.si_errno = 0;	siginfo.si_code = code;	force_sig_info(sig, &siginfo, current);}/* * Unimplemented system calls.  This is called only for stuff that * we're supposed to implement but haven't done so yet.  Everything * else goes to sys_ni_syscall. */asmlinkage longia64_ni_syscall (unsigned long arg0, unsigned long arg1, unsigned long arg2, unsigned long arg3,		 unsigned long arg4, unsigned long arg5, unsigned long arg6, unsigned long arg7,		 unsigned long stack){	struct pt_regs *regs = (struct pt_regs *) &stack;	printk("<sc%ld(%lx,%lx,%lx,%lx)>\n", regs->r15, arg0, arg1, arg2, arg3);	return -ENOSYS;}/* * disabled_fph_fault() is called when a user-level process attempts to access f32..f127 * and it doesn't own the fp-high register partition.  When this happens, we save the * current fph partition in the task_struct of the fpu-owner (if necessary) and then load * the fp-high partition of the current task (if necessary).  Note that the kernel has * access to fph by the time we get here, as the IVT's "Disabled FP-Register" handler takes * care of clearing psr.dfh. */static inline voiddisabled_fph_fault (struct pt_regs *regs){	struct ia64_psr *psr = ia64_psr(regs);	/* first, grant user-level access to fph partition: */	psr->dfh = 0;#ifndef CONFIG_SMP	{		struct task_struct *fpu_owner = ia64_get_fpu_owner();		if (fpu_owner == current)			return;		if (fpu_owner)			ia64_flush_fph(fpu_owner);		ia64_set_fpu_owner(current);	}#endif /* !CONFIG_SMP */	if ((current->thread.flags & IA64_THREAD_FPH_VALID) != 0) {		__ia64_load_fpu(current->thread.fph);		psr->mfh = 0;	} else {		__ia64_init_fpu();		/*		 * Set mfh because the state in thread.fph does not match the state in		 * the fph partition.		 */		psr->mfh = 1;	}}static inline intfp_emulate (int fp_fault, void *bundle, long *ipsr, long *fpsr, long *isr, long *pr, long *ifs,	    struct pt_regs *regs){	struct ia64_fpreg f6_11[6];	fp_state_t fp_state;	fpswa_ret_t ret;	if (!fpswa_interface)		return -1;	memset(&fp_state, 0, sizeof(fp_state_t));	/*	 * compute fp_state.  only FP registers f6 - f11 are used by the	 * kernel, so set those bits in the mask and set the low volatile	 * pointer to point to these registers.	 */	fp_state.bitmask_low64 = 0xfc0;  /* bit6..bit11 */	f6_11[0] = regs->f6; f6_11[1] = regs->f7;	f6_11[2] = regs->f8; f6_11[3] = regs->f9;	__asm__ ("stf.spill %0=f10%P0" : "=m"(f6_11[4]));	__asm__ ("stf.spill %0=f11%P0" : "=m"(f6_11[5]));	fp_state.fp_state_low_volatile = (fp_state_low_volatile_t *) f6_11;	/*	 * unsigned long (*EFI_FPSWA) (	 *      unsigned long    trap_type,	 *	void             *Bundle,	 *	unsigned long    *pipsr,	 *	unsigned long    *pfsr,	 *	unsigned long    *pisr,	 *	unsigned long    *ppreds,

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费高清在线视频一区·| 欧美成人一区二区三区片免费| 国产精品成人免费在线| 欧美精品123区| 国产一区二区调教| 亚洲成va人在线观看| 视频一区二区欧美| 日韩精品专区在线影院重磅| 蜜桃视频在线观看一区二区| 麻豆精品在线视频| 三级欧美韩日大片在线看| 天堂av在线一区| 美日韩一区二区三区| 日韩欧美激情四射| 91精品国产综合久久蜜臀| 精品国产乱码久久久久久影片| 自拍偷拍欧美精品| 亚洲一二三四在线观看| 偷偷要91色婷婷| 日本欧美在线观看| 麻豆91在线观看| 国产九色精品成人porny| 成人一区二区三区中文字幕| 一本到三区不卡视频| 欧美精彩视频一区二区三区| 91福利社在线观看| 欧美日韩国产在线观看| 日韩欧美国产wwwww| 日本一区二区免费在线观看视频 | 一区二区三区在线视频观看58| 国产综合久久久久影院| 在线观看av不卡| 亚洲乱码中文字幕| 国产电影精品久久禁18| 久久久99免费| 久久er精品视频| 欧美日韩日日摸| 偷窥国产亚洲免费视频| 欧美一级二级三级蜜桃| 亚洲欧洲日韩女同| 日韩一区二区三免费高清| 国产亚洲美州欧州综合国| 亚洲精选免费视频| 国产精品一区二区三区乱码| 色综合色狠狠天天综合色| 亚洲综合成人在线| 欧美日韩亚洲不卡| 久久99久久99| 综合欧美亚洲日本| 日本道精品一区二区三区| 欧美精品 国产精品| 99久久精品久久久久久清纯| 一区二区三区在线视频免费观看| 色婷婷av一区二区三区大白胸| 亚洲综合免费观看高清在线观看| 欧美日韩国产高清一区二区| 韩日av一区二区| 亚洲视频中文字幕| 精品嫩草影院久久| 成人av综合一区| 亚洲国产日韩综合久久精品| 久久久久久免费网| 蜜臀av亚洲一区中文字幕| 亚洲欧美日韩在线| 亚洲国产精品视频| 91在线免费看| 亚洲一本大道在线| 精品国内二区三区| 欧美色爱综合网| 欧美日本国产视频| 亚洲国产精品欧美一二99| 欧美mv和日韩mv的网站| 日韩一区二区在线免费观看| 亚洲一区二区三区爽爽爽爽爽| 成+人+亚洲+综合天堂| 久久久精品tv| 国产精品一区在线观看乱码| 精品免费日韩av| 国产综合成人久久大片91| 精品日韩在线观看| 激情文学综合插| 精品国产1区二区| 国产精品美女久久久久aⅴ国产馆| 在线电影欧美成精品| 91高清视频免费看| 欧美一区二区三区在| 日韩精品一区二区三区在线 | 99热在这里有精品免费| 国产98色在线|日韩| 国产精品女同一区二区三区| 在线精品视频小说1| 91亚洲精品久久久蜜桃网站| 亚洲日本在线看| 一本大道综合伊人精品热热| 日韩理论片中文av| 91精品国产综合久久久久久久 | 秋霞电影网一区二区| 日韩视频免费观看高清完整版在线观看 | 欧亚一区二区三区| 丝袜亚洲另类丝袜在线| xfplay精品久久| 成人免费不卡视频| 日韩av午夜在线观看| 久久久蜜桃精品| 欧美唯美清纯偷拍| 久久成人久久爱| 亚洲色图在线看| 日韩午夜激情电影| 成人一级片网址| 亚洲小说春色综合另类电影| 精品少妇一区二区三区免费观看 | 一二三区精品福利视频| 日韩视频一区二区| 99国产精品久久久久久久久久| 亚洲午夜在线电影| 久久精品人人做| 欧美日韩一区小说| 成人综合在线网站| 青青草原综合久久大伊人精品优势 | 久久久国产精品午夜一区ai换脸| av在线播放成人| 免费不卡在线视频| 亚洲午夜av在线| 国产午夜精品理论片a级大结局| 欧美性淫爽ww久久久久无| 国内不卡的二区三区中文字幕| 亚洲综合一二三区| 欧美国产亚洲另类动漫| 欧美一级欧美一级在线播放| 99精品在线免费| 国产成都精品91一区二区三| 日日摸夜夜添夜夜添亚洲女人| 国产精品污网站| 日韩国产在线观看| 欧美草草影院在线视频| 丝袜亚洲另类欧美| 久久成人免费电影| 国产精品成人在线观看| 色噜噜久久综合| 国产一区激情在线| 欧美国产1区2区| 在线精品视频小说1| 经典三级一区二区| 一区在线观看免费| 欧美无砖专区一中文字| 美国欧美日韩国产在线播放| 中文字幕中文字幕一区| 国产精品乱人伦中文| 国产精品久久免费看| 91精品欧美综合在线观看最新| 日本美女视频一区二区| 中文字幕日韩精品一区| 日韩一区二区三区观看| 成人av网站在线| 毛片不卡一区二区| 免费观看在线综合| 精品一区二区三区免费| 经典一区二区三区| 亚洲成人1区2区| 一本色道久久综合亚洲91 | 亚洲精品中文在线影院| 亚洲一区二区在线免费看| 91视视频在线观看入口直接观看www | 欧美老女人在线| 欧洲亚洲国产日韩| 欧美在线制服丝袜| 欧美一区二区免费| 亚洲国产经典视频| 亚洲老司机在线| 午夜av区久久| 麻豆成人久久精品二区三区红| 国产精品一区久久久久| av成人动漫在线观看| 91久久精品一区二区| 精品日韩在线观看| 日韩午夜av一区| 欧美大胆一级视频| 日韩精品一区二区三区在线| 日韩写真欧美这视频| 欧美大片一区二区三区| 久久九九全国免费| 久久免费视频色| 国产精品情趣视频| 日韩毛片精品高清免费| 一区二区三区四区精品在线视频 | 亚洲精品欧美二区三区中文字幕| 91网站黄www| 91福利小视频| 欧美一区二区观看视频| 欧美激情一区二区三区四区| 一区二区三区成人| 国产裸体歌舞团一区二区| 91美女在线看| 26uuuu精品一区二区| 亚洲一级二级在线| 国产成人午夜视频| 欧美精品v国产精品v日韩精品| 国产性色一区二区| 日日摸夜夜添夜夜添国产精品| 9色porny自拍视频一区二区|