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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? rtl-stub.c

?? fsmlabs的real time linux的內(nèi)核
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
	gdb_regs[EF_T4] = regs->r5;	gdb_regs[EF_T5] = regs->r6;	gdb_regs[EF_T6] = regs->r7;	gdb_regs[EF_T7] = regs->r8;	gdb_regs[EF_S0] = 0;	/* saved regs 9-15; we don't deal */	/* with these */	gdb_regs[EF_S1] = 0;	gdb_regs[EF_S2] = 0;	gdb_regs[EF_S3] = 0;	gdb_regs[EF_S4] = 0;	gdb_regs[EF_S5] = 0;	gdb_regs[EF_S6] = 0;	gdb_regs[16] = regs->r16;	/* argument regs 16-21 */	gdb_regs[17] = regs->r17;	gdb_regs[18] = regs->r18;	gdb_regs[19] = regs->r19;	gdb_regs[20] = regs->r20;	gdb_regs[21] = regs->r21;	gdb_regs[22] = regs->r22;	/* temporary regs 22-25 */	gdb_regs[23] = regs->r23;	gdb_regs[24] = regs->r24;	gdb_regs[25] = regs->r25;	gdb_regs[26] = regs->r26;	/* return address */	gdb_regs[27] = regs->r27;	/* procedure value */	gdb_regs[28] = regs->r28;	/* assembler temp */	gdb_regs[30] = rdusp();	/* stack pointer */	gdb_regs[65] = regs->ps;	/* processor status */	gdb_regs[64] = regs->pc;	/* processor counter */	gdb_regs[EF_GP] = regs->gp;	/* global pointer */}				/* static void regs_to_gdb_regs(int *gdb_regs, struct pt_regs *regs) */static void gdb_regs_to_regs(unsigned long *gdb_regs, struct pt_regs *regs){	regs->r0 = gdb_regs[EF_V0];	regs->r1 = gdb_regs[EF_T0];	regs->r2 = gdb_regs[EF_T1];	regs->r3 = gdb_regs[EF_T2];	regs->r4 = gdb_regs[EF_T3];	regs->r5 = gdb_regs[EF_T4];	regs->r6 = gdb_regs[EF_T5];	regs->r7 = gdb_regs[EF_T6];	regs->r8 = gdb_regs[EF_T7];	regs->r16 = gdb_regs[EF_A0];	regs->r17 = gdb_regs[EF_A1];	regs->r18 = gdb_regs[EF_A2];	regs->r19 = gdb_regs[EF_A3];	regs->r20 = gdb_regs[EF_A4];	regs->r21 = gdb_regs[EF_A5];	regs->r22 = gdb_regs[EF_T8];	regs->r23 = gdb_regs[EF_T9];	regs->r24 = gdb_regs[EF_T10];	regs->r25 = gdb_regs[EF_T11];	regs->r26 = gdb_regs[EF_RA];	regs->r27 = gdb_regs[EF_T12];	regs->r28 = gdb_regs[EF_AT];	regs->ps = gdb_regs[EF_PS];	regs->pc = gdb_regs[EF_PC];	regs->gp = gdb_regs[EF_GP];}				/* static void gdb_regs_to_regs(int *gdb_regs, struct pt_regs *regs) */static int handle_exception(int exceptionVector,			    int signo, struct pt_regs *regs){	long addr, length, newPC;	unsigned long flags;	char *ptr;	unsigned long gdb_regs[NUMREGS];#ifdef CONFIG_RTL_DEBUGGER_THREADS	pthread_t current_thread = pthread_self();#endif				/* CONFIG_RTL_DEBUGGER_THREADS */	rtl_hard_savef_and_cli(flags);	if (user_mode(regs) && !(rtl_is_psc_active())) {		rtl_printf("rtl_debug: got a user-mode exception\n");		return 0;	}	memset(gdb_regs, 0, NUMREGBYTES);	if (remote_debug)		show_regs(regs);	if ((exceptionVector == 6) && (mem_err_expected == 1)) {		mem_err = 1;	/* set mem error flag */		mem_err_expected = 0;		conpr("mem2hex() croaked\n");		if (remote_debug)			conpr("Return after memory error\n");		if (remote_debug)			show_regs(regs);		rtl_hard_restore_flags(flags);		return (1);	}	if (rtl_running_linux()) {		rtl_hard_restore_flags(flags);		rtl_printf("rtl_debug: not our fault; Linux's\n");		return 0;	/* let Linux handle it's own faults */	}	/* ok, here we know pthread_self() is an RT-thread */	pthread_cleanup_push(&rtl_exit_debugger, 0);	rtl_enter_debugger(exceptionVector, (void *) regs->pc);	/* reply to host that an exception has occurred */	set_bit(0, &send_exception_info);	while (1) {		error = 0;		remcomOutBuffer[0] = 0;		if (test_and_clear_bit(0, &send_exception_info)) {			strcpy(remcomInBuffer, "?");		} else {			getpacket(remcomInBuffer);/*conpr("getpacket: ");conpr(remcomInBuffer);conpr("\n");*/		}		switch (remcomInBuffer[0]) {		case 'q':			if (!strcmp(remcomInBuffer, "qOffsets") && text			    && data && bss) {				sprintf(remcomOutBuffer,					"Text=%x;Data=%x;Bss=%x",					(unsigned) text, (unsigned) data,					(unsigned) bss);			}#ifdef CONFIG_RTL_DEBUGGER_THREADS			if (!strcmp(remcomInBuffer, "qC")) {				sprintf(remcomOutBuffer, "QC%x",					(unsigned long) (pthread_self()));			} else if (!strncmp(remcomInBuffer, "qL", 2)) {				/* we assume we have a limit of 31 threads -- 				 * to fit in one packet */				char packethead[17];				pthread_t task;				int ntasks = 0;				int i;				strcpy(remcomOutBuffer, remcomInBuffer);				for (i = 0; i < rtl_num_cpus(); i++) {					int cpu_id = cpu_logical_map(i);					schedule_t *s = &rtl_sched[cpu_id];					spin_lock(&s->rtl_tasks_lock);					task = s->rtl_tasks;					while (task != &s->rtl_linux_task					       && ntasks < 31) {						sprintf((remcomOutBuffer) +							strlen							(remcomOutBuffer),							"00000000%08x",							(unsigned long)							task);						task = task->next;						ntasks++;					}					spin_unlock(&s->rtl_tasks_lock);				}				sprintf(packethead, "qM%02x%01x", ntasks,					1 /* done */ );				memcpy(remcomOutBuffer, packethead,				       strlen(packethead));			}#endif				/* CONFIG_RTL_DEBUGGER_THREADS */			break;#ifdef CONFIG_RTL_DEBUGGER_THREADS		case 'H':			if (	/* remcomInBuffer[1] == 'c' || */				   remcomInBuffer[1] == 'g') {				if (remcomInBuffer[2] == '-') {					current_thread =					    (pthread_t) -					    strtoul(remcomInBuffer + 3, 0,						    16);				} else {					current_thread = (pthread_t)					    strtoul(remcomInBuffer + 2, 0,						    16);				}				debugpr("Hc/g: %x",					(unsigned long) current_thread);				strcpy(remcomOutBuffer, "OK");			}			break;		case 'T':{				pthread_t thread;				if (remcomInBuffer[1] == '-') {					thread =					    (pthread_t) -					    strtoul(remcomInBuffer + 2, 0,						    16);				} else {					thread = (pthread_t)					    strtoul(remcomInBuffer + 1, 0,						    16);				}				if (!pthread_kill(thread, 0)) {					strcpy(remcomOutBuffer, "OK");				} else {					strcpy(remcomOutBuffer, "ERROR");				}			}			break;#endif				/* CONFIG_RTL_DEBUGGER_THREADS */#ifdef CONFIG_RTL_DEBUGGER_Z_PROTOCOL		case 'Z':		case 'z':			{				int type = remcomInBuffer[1] - '0';				long address =				    strtoul(remcomInBuffer + 3, 0, 16);				int res;				if (type != 0) {					strcpy(remcomOutBuffer, "ERROR");					break;				}				spin_lock(&bp_lock);				if (remcomInBuffer[0] == 'Z') {					res = insert_bp((char *) address);				} else {					remove_bp((char *) address);					res = 0;				}				spin_unlock(&bp_lock);				if (res) {					strcpy(remcomOutBuffer, "ERROR");				} else {					strcpy(remcomOutBuffer, "OK");				}			}			break;#endif				/* CONFIG_RTL_DEBUGGER_Z_PROTOCOL */		case '?':#ifdef CONFIG_RTL_DEBUGGER_THREADS			sprintf(remcomOutBuffer, "T%02xthread:%x;", signo,				(unsigned long) pthread_self());#else			remcomOutBuffer[0] = 'S';			remcomOutBuffer[1] = hexchars[signo >> 4];			remcomOutBuffer[2] = hexchars[signo % 16];			remcomOutBuffer[3] = 0;#endif				/* CONFIG_RTL_DEBUGGER_THREADS */			break;		case 'd':			remote_debug = !(remote_debug);	/* toggle debug flag */			printk("Remote debug %s\n",			       remote_debug ? "on" : "off");			break;		case 'g':	/* return the value of the CPU registers */			regs_to_gdb_regs(gdb_regs, regs);#ifdef CONFIG_RTL_DEBUGGER_THREADS			if (current_thread != pthread_self()) {				gdb_regs[EF_SP] =				    (long) current_thread->stack;				gdb_regs[EF_PC] = *(current_thread->stack);				rtl_printf("*(current_thread->stack: %x\n",					   (current_thread->stack));				debugpr("reg read for %x",					(unsigned long) current_thread);			}#endif				/* CONFIG_RTL_DEBUGGER_THREADS */			mem2hex((char *) gdb_regs, remcomOutBuffer,				NUMREGBYTES);			break;		case 'G':	/* set the value of the CPU registers - return OK */			hex2mem(&remcomInBuffer[1], (char *) gdb_regs,				NUMREGBYTES);			gdb_regs_to_regs(gdb_regs, regs);			strcpy(remcomOutBuffer, "OK");			break;			/* mAA..AA,LLLL  Read LLLL bytes at address AA..AA */		case 'm':			/* TRY TO READ %x,%x.  IF SUCCEED, SET PTR = 0 */			ptr = &remcomInBuffer[1];			if (hexToInt(&ptr, &addr))				if (*(ptr++) == ',')					if (hexToInt(&ptr, &length)) {						ptr = 0;						if (!mem2hex						    ((char *) addr,						     remcomOutBuffer,						     length)) {							strcpy							    (remcomOutBuffer,							     "E03");							debug_error							    ("memory fault\n",							     NULL);						}					}			if (ptr) {				strcpy(remcomOutBuffer, "E01");				debug_error				    ("malformed read memory command: %s\n",				     remcomInBuffer);			}			break;			/* MAA..AA,LLLL: Write LLLL bytes at address AA.AA return OK */		case 'M':			/* TRY TO READ '%x,%x:'.  IF SUCCEED, SET PTR = 0 */			ptr = &remcomInBuffer[1];			if (hexToInt(&ptr, &addr))				if (*(ptr++) == ',')					if (hexToInt(&ptr, &length))						if (*(ptr++) == ':') {							if (!hex2mem							    (ptr,							     (char *) addr,							     length)) {								strcpy								    (remcomOutBuffer,								     "E03");								debug_error								    ("memory fault\n",								     NULL);							} else {								strcpy								    (remcomOutBuffer,								     "OK");							}							ptr = 0;						}			if (ptr) {				strcpy(remcomOutBuffer, "E02");				debug_error				    ("malformed write memory command: %s\n",				     remcomInBuffer);			}			break;			/* cAA..AA    Continue at address AA..AA(optional) */			/* sAA..AA   Step one instruction from AA..AA(optional) */		case 'c':		case 's':			/* try to read optional parameter, pc unchanged if no 			 * parm */			ptr = &remcomInBuffer[1];			if (hexToInt(&ptr, &addr)) {				if (remote_debug)					printk("Changing EF_PC to 0x%x\n",					       addr);				regs->pc = addr;			}			newPC = regs->pc;			/* clear the trace bit */#if 0			/* XXX don't know how to do these yet. -Nathan			   regs->ps &= 0xfffffeff; */			/* set the trace bit if we're stepping */			if (remcomInBuffer[0] == 's')				regs.eflags |= 0x100;#endif				/* 0 */			if (remote_debug) {				printk("Resuming execution\n");				show_regs(regs);			}			debugpr("cont\n");			goto cleanup;			/* kill the program */		case 'k':			goto cleanup;		}		/* switch *//*conpr("putpacket: ");conpr(remcomOutBuffer);conpr("\n");*/		/* reply to the request */		putpacket(remcomOutBuffer);	}			/* while (1) */      cleanup:pthread_cleanup_pop(1);	rtl_hard_restore_flags(flags);	return (1);#undef regs}/* we don't have a hard_trap_info struct and we have to use this gigantic * switch statement because of the special case of generic traps.  This also * means that we have to pass across the registers so that we can get the * value from r16 to determine which generic trap it is. */static int computeSignal(unsigned int tt, struct pt_regs *regs){	switch (tt) {	case 0:		/* breakpoint */	case 1:		/* bugcheck */		return SIGTRAP;	case 2:		/* gentrap */		switch ((long) regs->r16) {		case GEN_INTOVF:		case GEN_INTDIV:		case GEN_FLTOVF:		case GEN_FLTDIV:		case GEN_FLTUND:		case GEN_FLTINV:		case GEN_FLTINE:		case GEN_ROPRAND:			return SIGFPE;		case GEN_DECOVF:		case GEN_DECDIV:		case GEN_DECINV:		case GEN_ASSERTERR:		case GEN_NULPTRERR:		case GEN_STKOVF:		case GEN_STRLENERR:		case GEN_SUBSTRERR:		case GEN_RANGERR:		case GEN_SUBRNG:		case GEN_SUBRNG1:		case GEN_SUBRNG2:		case GEN_SUBRNG3:		case GEN_SUBRNG4:		case GEN_SUBRNG5:		case GEN_SUBRNG6:		case GEN_SUBRNG7:			return SIGTRAP;		}		/* switch ((long) regs->r16) */	case 3:		/* FEN fault */		return SIGILL;	case 4:		/* opDEC */		return SIGILL;	}			/* switch (tt) */	/* don't know what signal to return?  SIGHUP to the rescue! */	return SIGHUP;}int rtl_debug_exception(int vector, struct pt_regs *regs){	int signo = computeSignal(vector, regs);	return handle_exception(vector, signo, regs);}int set_debug_traps(void){	if (rtl_debug_initialized) {		printk("rtl_debug: already loaded\n");		return -1;	}	rtl_request_traps(&rtl_debug_exception);	rtl_debug_initialized = 1;	return 0;}void unset_debug_traps(void){	/*	   int i;	   for (i = 0; i < nbreak; i++) {	   debugpr ("unpatching leftover breakpoints\n");	   set_char(bp_cache[i].mem, bp_cache[i].val);	   }	 */	rtl_request_traps(0);	rtl_debug_initialized = 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕人成不卡一区| 亚洲一卡二卡三卡四卡无卡久久| 欧美三区在线观看| 91久久精品一区二区二区| 91亚洲精品一区二区乱码| 99re66热这里只有精品3直播 | 一本大道av伊人久久综合| 91亚洲精品久久久蜜桃| 日本乱人伦aⅴ精品| 91福利在线导航| 欧美精品一级二级三级| 91精品国产丝袜白色高跟鞋| 欧美xxxxx牲另类人与| 精品成人私密视频| 国产三级精品视频| 国产精品传媒入口麻豆| 一区二区三区中文免费| 三级欧美韩日大片在线看| 久久se这里有精品| 岛国一区二区三区| 色偷偷88欧美精品久久久| 欧美区视频在线观看| 精品国产乱码久久久久久1区2区| 国产午夜精品久久久久久久| 国产精品久久99| 亚洲成av人片在线| 狠狠色狠狠色综合系列| 成人av片在线观看| 色久优优欧美色久优优| 91精品国产一区二区三区蜜臀 | 亚洲人亚洲人成电影网站色| 夜夜嗨av一区二区三区网页| 日韩高清在线一区| 懂色av一区二区夜夜嗨| 欧美在线看片a免费观看| 日韩精品一区二区三区swag | 蜜臀久久99精品久久久画质超高清 | 欧美视频精品在线| 精品裸体舞一区二区三区| 亚洲国产精品国自产拍av| 亚洲一区二区av在线| 另类人妖一区二区av| 成人午夜电影网站| 欧美精品丝袜中出| 国产欧美日韩综合精品一区二区 | 日本韩国一区二区| 日韩三级精品电影久久久| 国产精品久久久久久久久快鸭| 亚洲午夜免费福利视频| 国产乱码精品一区二区三区忘忧草| 一本久久精品一区二区| 26uuu精品一区二区三区四区在线| 亚洲色图一区二区三区| 国产综合成人久久大片91| 色综合视频在线观看| 欧美成人福利视频| 一区二区三区在线免费播放| 黄色日韩三级电影| 欧美视频在线一区| 国产精品伦理在线| 麻豆高清免费国产一区| 欧美体内she精高潮| 国产精品欧美久久久久一区二区| 日韩精品福利网| 一本色道久久综合亚洲aⅴ蜜桃| 精品欧美久久久| 亚洲成人av电影在线| av男人天堂一区| 久久综合五月天婷婷伊人| 视频一区二区不卡| 在线免费av一区| 国产精品乱人伦| 国产揄拍国内精品对白| 欧美一区二区日韩一区二区| 亚洲精品写真福利| 国产麻豆精品一区二区| 欧美一区二区福利视频| 亚洲精品免费看| 成人午夜电影久久影院| 久久人人爽人人爽| 美女任你摸久久| 欧美三级在线视频| 亚洲欧美日韩国产综合在线| 成人自拍视频在线| 久久久亚洲综合| 国产一区二区在线视频| 欧美成人免费网站| 老司机精品视频线观看86 | 性感美女极品91精品| 色婷婷久久99综合精品jk白丝| 欧美国产禁国产网站cc| 国产乱码字幕精品高清av| 久久综合丝袜日本网| 老司机精品视频一区二区三区| 欧美一区二区三区色| 青青草精品视频| 91精品综合久久久久久| 日韩电影免费在线观看网站| 欧美丰满一区二区免费视频| 日韩激情在线观看| 91精品国产综合久久久久久久 | 亚洲视频在线观看三级| 成人国产精品免费| 国产精品久99| 99精品视频一区二区三区| 亚洲欧洲av一区二区三区久久| 粉嫩嫩av羞羞动漫久久久| 国产精品麻豆久久久| 99久久综合狠狠综合久久| 亚洲色图都市小说| 在线观看一区二区视频| 亚洲一卡二卡三卡四卡| 91精品国产综合久久蜜臀| 久久99精品国产麻豆不卡| 久久精品视频免费观看| 成人黄动漫网站免费app| 亚洲人妖av一区二区| 欧美影视一区在线| 免费欧美在线视频| 久久久午夜精品理论片中文字幕| 成人深夜视频在线观看| 亚洲免费视频成人| 51久久夜色精品国产麻豆| 久久国产成人午夜av影院| 久久久一区二区三区捆绑**| 99久久久国产精品免费蜜臀| 天天综合天天做天天综合| 日韩欧美的一区二区| 成人一区二区三区| 伊人开心综合网| 日韩免费一区二区| 国产成人在线色| 一区二区三区视频在线看| 欧美一区中文字幕| 国产91对白在线观看九色| 亚洲一区中文在线| 精品国产乱子伦一区| 不卡av在线网| 天堂影院一区二区| 国产视频一区在线观看| 97精品电影院| 美女视频一区二区三区| 国产精品麻豆一区二区| 欧美日韩精品一区二区在线播放| 国产一区二区不卡在线| 亚洲六月丁香色婷婷综合久久| 欧美一区二区三区播放老司机| 成人精品视频一区| 日韩精品久久久久久| 国产精品久久久久国产精品日日| 777xxx欧美| 99国产精品久| 国产在线观看一区二区| 一个色综合网站| 久久久久久久久久看片| 欧美日韩一级黄| 不卡的av电影| 国产在线不卡视频| 婷婷亚洲久悠悠色悠在线播放| 国产精品三级电影| 日韩女优av电影在线观看| 一本一本久久a久久精品综合麻豆| 久久99精品视频| 午夜精品在线视频一区| 中文字幕免费观看一区| 4hu四虎永久在线影院成人| 91丨九色丨国产丨porny| 久久成人免费日本黄色| 亚洲国产成人精品视频| 国产精品久久久久毛片软件| 日韩精品专区在线影院观看| 91国偷自产一区二区三区成为亚洲经典| 国产剧情一区二区三区| 五月天精品一区二区三区| 亚洲美女偷拍久久| 国产色一区二区| 日韩手机在线导航| 91福利在线导航| 色综合久久88色综合天天6 | 欧美日韩免费在线视频| 不卡av在线网| 国产成a人无v码亚洲福利| 久久99最新地址| 蜜桃av噜噜一区| 午夜亚洲福利老司机| 亚洲色图一区二区| 国产精品久久久久影院亚瑟| 久久久久久一二三区| 日韩精品自拍偷拍| 日韩美一区二区三区| 欧美精品第1页| 欧美日韩一区视频| 欧美午夜电影网| 欧美影院精品一区| 91福利精品视频| 91成人国产精品| 在线一区二区三区做爰视频网站| 91免费版在线| 色婷婷精品久久二区二区蜜臂av | 久久久av毛片精品|