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

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

?? signal.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 5 頁
字號:
                goto badframe;        }        target_to_host_sigset_internal(&host_set, &set);        sigprocmask(SIG_SETMASK, &host_set, NULL);	if (restore_sigcontext(env, &frame->sc))		goto badframe;#if 0	/* Send SIGTRAP if we're single-stepping */	if (ptrace_cancel_bpt(current))		send_sig(SIGTRAP, current, 1);#endif	unlock_user_struct(frame, frame_addr, 0);        return env->regs[0];badframe:	unlock_user_struct(frame, frame_addr, 0);        force_sig(SIGSEGV /* , current */);	return 0;}long do_rt_sigreturn(CPUState *env){        abi_ulong frame_addr;	struct rt_sigframe *frame;        sigset_t host_set;	/*	 * Since we stacked the signal on a 64-bit boundary,	 * then 'sp' should be word aligned here.  If it's	 * not, then the user is trying to mess with us.	 */	if (env->regs[13] & 7)		goto badframe;        frame_addr = env->regs[13];	if (!lock_user_struct(VERIFY_READ, frame, frame_addr, 1))                goto badframe;        target_to_host_sigset(&host_set, &frame->uc.tuc_sigmask);        sigprocmask(SIG_SETMASK, &host_set, NULL);	if (restore_sigcontext(env, &frame->uc.tuc_mcontext))		goto badframe;	if (do_sigaltstack(frame_addr + offsetof(struct rt_sigframe, uc.tuc_stack), 0, get_sp_from_cpustate(env)) == -EFAULT)		goto badframe;#if 0	/* Send SIGTRAP if we're single-stepping */	if (ptrace_cancel_bpt(current))		send_sig(SIGTRAP, current, 1);#endif	unlock_user_struct(frame, frame_addr, 0);	return env->regs[0];badframe:	unlock_user_struct(frame, frame_addr, 0);        force_sig(SIGSEGV /* , current */);	return 0;}#elif defined(TARGET_SPARC)#define __SUNOS_MAXWIN   31/* This is what SunOS does, so shall I. */struct target_sigcontext {        abi_ulong sigc_onstack;      /* state to restore */        abi_ulong sigc_mask;         /* sigmask to restore */        abi_ulong sigc_sp;           /* stack pointer */        abi_ulong sigc_pc;           /* program counter */        abi_ulong sigc_npc;          /* next program counter */        abi_ulong sigc_psr;          /* for condition codes etc */        abi_ulong sigc_g1;           /* User uses these two registers */        abi_ulong sigc_o0;           /* within the trampoline code. */        /* Now comes information regarding the users window set         * at the time of the signal.         */        abi_ulong sigc_oswins;       /* outstanding windows */        /* stack ptrs for each regwin buf */        char *sigc_spbuf[__SUNOS_MAXWIN];        /* Windows to restore after signal */        struct {                abi_ulong locals[8];                abi_ulong ins[8];        } sigc_wbuf[__SUNOS_MAXWIN];};/* A Sparc stack frame */struct sparc_stackf {        abi_ulong locals[8];        abi_ulong ins[6];        struct sparc_stackf *fp;        abi_ulong callers_pc;        char *structptr;        abi_ulong xargs[6];        abi_ulong xxargs[1];};typedef struct {        struct {                abi_ulong psr;                abi_ulong pc;                abi_ulong npc;                abi_ulong y;                abi_ulong u_regs[16]; /* globals and ins */        }               si_regs;        int             si_mask;} __siginfo_t;typedef struct {        unsigned   long si_float_regs [32];        unsigned   long si_fsr;        unsigned   long si_fpqdepth;        struct {                unsigned long *insn_addr;                unsigned long insn;        } si_fpqueue [16];} qemu_siginfo_fpu_t;struct target_signal_frame {	struct sparc_stackf	ss;	__siginfo_t		info;	abi_ulong               fpu_save;	abi_ulong		insns[2] __attribute__ ((aligned (8)));	abi_ulong		extramask[TARGET_NSIG_WORDS - 1];	abi_ulong		extra_size; /* Should be 0 */	qemu_siginfo_fpu_t	fpu_state;};struct target_rt_signal_frame {	struct sparc_stackf	ss;	siginfo_t		info;	abi_ulong		regs[20];	sigset_t		mask;	abi_ulong               fpu_save;	unsigned int		insns[2];	stack_t			stack;	unsigned int		extra_size; /* Should be 0 */	qemu_siginfo_fpu_t	fpu_state;};#define UREG_O0        16#define UREG_O6        22#define UREG_I0        0#define UREG_I1        1#define UREG_I2        2#define UREG_I3        3#define UREG_I4        4#define UREG_I5        5#define UREG_I6        6#define UREG_I7        7#define UREG_L0	       8#define UREG_FP        UREG_I6#define UREG_SP        UREG_O6static inline abi_ulong get_sigframe(struct emulated_sigaction *sa,                                      CPUState *env, unsigned long framesize){	abi_ulong sp;	sp = env->regwptr[UREG_FP];	/* This is the X/Open sanctioned signal stack switching.  */	if (sa->sa.sa_flags & TARGET_SA_ONSTACK) {            if (!on_sig_stack(sp)                && !((target_sigaltstack_used.ss_sp + target_sigaltstack_used.ss_size) & 7))                sp = target_sigaltstack_used.ss_sp + target_sigaltstack_used.ss_size;	}	return sp - framesize;}static intsetup___siginfo(__siginfo_t *si, CPUState *env, abi_ulong mask){	int err = 0, i;	err |= __put_user(env->psr, &si->si_regs.psr);	err |= __put_user(env->pc, &si->si_regs.pc);	err |= __put_user(env->npc, &si->si_regs.npc);	err |= __put_user(env->y, &si->si_regs.y);	for (i=0; i < 8; i++) {		err |= __put_user(env->gregs[i], &si->si_regs.u_regs[i]);	}	for (i=0; i < 8; i++) {		err |= __put_user(env->regwptr[UREG_I0 + i], &si->si_regs.u_regs[i+8]);	}	err |= __put_user(mask, &si->si_mask);	return err;}#if 0static intsetup_sigcontext(struct target_sigcontext *sc, /*struct _fpstate *fpstate,*/		 CPUState *env, unsigned long mask){	int err = 0;	err |= __put_user(mask, &sc->sigc_mask);	err |= __put_user(env->regwptr[UREG_SP], &sc->sigc_sp);	err |= __put_user(env->pc, &sc->sigc_pc);	err |= __put_user(env->npc, &sc->sigc_npc);	err |= __put_user(env->psr, &sc->sigc_psr);	err |= __put_user(env->gregs[1], &sc->sigc_g1);	err |= __put_user(env->regwptr[UREG_O0], &sc->sigc_o0);	return err;}#endif#define NF_ALIGNEDSZ  (((sizeof(struct target_signal_frame) + 7) & (~7)))static void setup_frame(int sig, struct emulated_sigaction *ka,			target_sigset_t *set, CPUState *env){        abi_ulong sf_addr;	struct target_signal_frame *sf;	int sigframe_size, err, i;	/* 1. Make sure everything is clean */	//synchronize_user_stack();        sigframe_size = NF_ALIGNEDSZ;	sf_addr = get_sigframe(ka, env, sigframe_size);        sf = lock_user(VERIFY_WRITE, sf_addr,                        sizeof(struct target_signal_frame), 0);        if (!sf)		goto sigsegv;                	//fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);#if 0	if (invalid_frame_pointer(sf, sigframe_size))		goto sigill_and_return;#endif	/* 2. Save the current process state */	err = setup___siginfo(&sf->info, env, set->sig[0]);	err |= __put_user(0, &sf->extra_size);	//err |= save_fpu_state(regs, &sf->fpu_state);	//err |= __put_user(&sf->fpu_state, &sf->fpu_save);	err |= __put_user(set->sig[0], &sf->info.si_mask);	for (i = 0; i < TARGET_NSIG_WORDS - 1; i++) {		err |= __put_user(set->sig[i + 1], &sf->extramask[i]);	}	for (i = 0; i < 8; i++) {	  	err |= __put_user(env->regwptr[i + UREG_L0], &sf->ss.locals[i]);	}	for (i = 0; i < 8; i++) {	  	err |= __put_user(env->regwptr[i + UREG_I0], &sf->ss.ins[i]);	}	if (err)		goto sigsegv;	/* 3. signal handler back-trampoline and parameters */	env->regwptr[UREG_FP] = sf_addr;	env->regwptr[UREG_I0] = sig;	env->regwptr[UREG_I1] = sf_addr +                 offsetof(struct target_signal_frame, info);	env->regwptr[UREG_I2] = sf_addr +                 offsetof(struct target_signal_frame, info);	/* 4. signal handler */	env->pc = ka->sa._sa_handler;	env->npc = (env->pc + 4);	/* 5. return to kernel instructions */	if (ka->sa.sa_restorer)		env->regwptr[UREG_I7] = ka->sa.sa_restorer;	else {                uint32_t val32;		env->regwptr[UREG_I7] = sf_addr +                         offsetof(struct target_signal_frame, insns) - 2 * 4;		/* mov __NR_sigreturn, %g1 */                val32 = 0x821020d8;		err |= __put_user(val32, &sf->insns[0]);		/* t 0x10 */                val32 = 0x91d02010;		err |= __put_user(val32, &sf->insns[1]);		if (err)			goto sigsegv;		/* Flush instruction space. */		//flush_sig_insns(current->mm, (unsigned long) &(sf->insns[0]));                //		tb_flush(env);	}        unlock_user(sf, sf_addr, sizeof(struct target_signal_frame));	return;#if 0sigill_and_return:	force_sig(TARGET_SIGILL);#endifsigsegv:	//fprintf(stderr, "force_sig\n");        unlock_user(sf, sf_addr, sizeof(struct target_signal_frame));	force_sig(TARGET_SIGSEGV);}static inline intrestore_fpu_state(CPUState *env, qemu_siginfo_fpu_t *fpu){        int err;#if 0#ifdef CONFIG_SMP        if (current->flags & PF_USEDFPU)                regs->psr &= ~PSR_EF;#else        if (current == last_task_used_math) {                last_task_used_math = 0;                regs->psr &= ~PSR_EF;        }#endif        current->used_math = 1;        current->flags &= ~PF_USEDFPU;#endif#if 0        if (verify_area (VERIFY_READ, fpu, sizeof(*fpu)))                return -EFAULT;#endif#if 0        /* XXX: incorrect */        err = __copy_from_user(&env->fpr[0], &fpu->si_float_regs[0],	                             (sizeof(unsigned long) * 32));#endif        err |= __get_user(env->fsr, &fpu->si_fsr);#if 0        err |= __get_user(current->thread.fpqdepth, &fpu->si_fpqdepth);        if (current->thread.fpqdepth != 0)                err |= __copy_from_user(&current->thread.fpqueue[0],                                        &fpu->si_fpqueue[0],                                        ((sizeof(unsigned long) +                                        (sizeof(unsigned long *)))*16));#endif        return err;}static void setup_rt_frame(int sig, struct emulated_sigaction *ka,                           target_siginfo_t *info,			   target_sigset_t *set, CPUState *env){    fprintf(stderr, "setup_rt_frame: not implemented\n");}long do_sigreturn(CPUState *env){        abi_ulong sf_addr;        struct target_signal_frame *sf;        uint32_t up_psr, pc, npc;        target_sigset_t set;        sigset_t host_set;        abi_ulong fpu_save_addr;        int err, i;        sf_addr = env->regwptr[UREG_FP];        if (!lock_user_struct(VERIFY_READ, sf, sf_addr, 1))                goto segv_and_exit;#if 0	fprintf(stderr, "sigreturn\n");	fprintf(stderr, "sf: %x pc %x fp %x sp %x\n", sf, env->pc, env->regwptr[UREG_FP], env->regwptr[UREG_SP]);#endif	//cpu_dump_state(env, stderr, fprintf, 0);        /* 1. Make sure we are not getting garbage from the user */        if (sf_addr & 3)                goto segv_and_exit;        err = __get_user(pc,  &sf->info.si_regs.pc);        err |= __get_user(npc, &sf->info.si_regs.npc);        if ((pc | npc) & 3)                goto segv_and_exit;        /* 2. Restore the state */        err |= __get_user(up_psr, &sf->info.si_regs.psr);        /* User can only change condition codes and FPU enabling in %psr. */        env->psr = (up_psr & (PSR_ICC /* | PSR_EF */))                  | (env->psr & ~(PSR_ICC /* | PSR_EF */));	env->pc = pc;	env->npc = npc;        err |= __get_user(env->y, &sf->info.si_regs.y);	for (i=0; i < 8; i++) {		err |= __get_user(env->gregs[i], &sf->info.si_regs.u_regs[i]);	}	for (i=0; i < 8; i++) {		err |= __get_user(env->regwptr[i + UREG_I0], &sf->info.si_regs.u_regs[i+8]);	}        err |= __get_user(fpu_save_addr, &sf->fpu_save);        //if (fpu_save)        //        err |= restore_fpu_state(env, fpu_save);        /* This is pretty much atomic, no amount locking would prevent         * the races which exist anyways.         */        err |= __get_user(set.sig[0], &sf->info.si_mask);        for(i = 1; i < TARGET_NSIG_WORDS; i++) {            err |= (__get_user(set.sig[i], &sf->extramask[i - 1]));        }        target_to_host_sigset_internal(&host_set, &set);        sigprocmask(SIG_SETMASK, &host_set, NULL);        if (err)                goto segv_and_exit;        unlock_user_struct(sf, sf_addr, 0);        return env->regwptr[0];segv_and_exit:        unlock_user_struct(sf, sf_addr, 0);	force_sig(TARGET_SIGSEGV);}long do_rt_sigreturn(CPUState *env){    fprintf(stderr, "do_rt_sigreturn: not implemented\n");    return -TARGET_ENOSYS;}#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32)#define MC_TSTATE 0#define MC_PC 1#define MC_NPC 2#define MC_Y 3#define MC_G1 4#define MC_G2 5#define MC_G3 6#define MC_G4 7#define MC_G5 8#define MC_G6 9

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
看片的网站亚洲| 亚洲成a人片在线观看中文| 94-欧美-setu| 九一久久久久久| 成人激情动漫在线观看| 蜜臀91精品一区二区三区| 亚洲欧美视频一区| 久久久99久久| 日韩西西人体444www| 欧美无砖砖区免费| aaa亚洲精品| 国产一区二区在线观看免费| 亚洲国产精品精华液网站| 一区二区中文视频| 久久精品综合网| 欧美成人综合网站| 日韩一区二区精品葵司在线 | 久久99国产精品免费| 亚洲精品久久久蜜桃| 国产精品网站在线播放| 精品国产91久久久久久久妲己| 欧美日韩综合色| 色综合久久综合网97色综合| 高清免费成人av| 国产不卡视频在线播放| 精品一区二区三区在线播放| 日韩不卡免费视频| 日日摸夜夜添夜夜添国产精品 | 在线精品视频小说1| 国产v综合v亚洲欧| 国产成人午夜精品5599 | 欧美午夜精品理论片a级按摩| 成人午夜私人影院| 国产91丝袜在线18| 成人性生交大片免费看在线播放 | 欧美剧情电影在线观看完整版免费励志电影| 成人一级视频在线观看| 成人免费三级在线| 大胆亚洲人体视频| 成人福利电影精品一区二区在线观看| 成人亚洲精品久久久久软件| 国产成人av电影| 国产成人综合视频| www.日韩大片| 91麻豆精品秘密| 日本电影欧美片| 欧美制服丝袜第一页| 欧美三级在线看| 制服丝袜中文字幕一区| 日韩一区和二区| 欧美va亚洲va| 国产嫩草影院久久久久| 一区在线中文字幕| 亚洲国产另类av| 免费精品视频最新在线| 国产综合成人久久大片91| 粉嫩在线一区二区三区视频| 99久久国产综合色|国产精品| 99精品久久只有精品| 欧美三片在线视频观看 | 中文一区在线播放 | 国产一区二区三区| jlzzjlzz亚洲女人18| 欧洲亚洲精品在线| 日韩视频一区二区三区在线播放 | 91激情五月电影| 欧美猛男男办公室激情| 欧美成人精品二区三区99精品| 国产亚洲人成网站| 亚洲欧美日韩一区二区| 免费成人美女在线观看| 成人午夜视频在线| 欧美老肥妇做.爰bbww视频| xvideos.蜜桃一区二区| 亚洲女厕所小便bbb| 日韩av在线发布| 成人一区二区三区视频| 欧美日韩不卡一区| 国产日韩欧美精品一区| 亚洲五码中文字幕| 国产成人精品亚洲777人妖| 在线观看亚洲a| 久久精品视频一区二区| 亚洲线精品一区二区三区八戒| 国产麻豆日韩欧美久久| 91成人免费网站| 国产喷白浆一区二区三区| 亚洲va韩国va欧美va精品| 国产·精品毛片| 欧美日本一区二区在线观看| 亚洲国产精品av| 美女久久久精品| 欧美图片一区二区三区| 国产欧美一区二区三区在线看蜜臀| 亚洲第四色夜色| va亚洲va日韩不卡在线观看| 日韩精品一区在线观看| 亚洲综合偷拍欧美一区色| 国产成人亚洲综合a∨猫咪| 这里是久久伊人| 亚洲一级二级在线| 成人sese在线| 久久免费视频一区| 日韩国产一区二| 91国偷自产一区二区三区成为亚洲经典 | 久久久精品国产免大香伊| 午夜成人免费电影| 91浏览器在线视频| 中文一区二区在线观看| 精品一二三四在线| 日韩色视频在线观看| 亚洲第一综合色| 日本道精品一区二区三区| 国产精品久久毛片a| 国产精品综合一区二区三区| 91精品国产综合久久久蜜臀图片| 亚洲码国产岛国毛片在线| 丁香啪啪综合成人亚洲小说 | 欧美精品久久久久久久多人混战| 亚洲欧美韩国综合色| 成人短视频下载| 国产欧美一区二区在线| 国产激情视频一区二区在线观看| 日韩欧美一级在线播放| 日本不卡不码高清免费观看| 欧美理论在线播放| 日韩经典一区二区| 91精品国产综合久久婷婷香蕉 | 亚洲欧美日韩在线| 91亚洲精品久久久蜜桃| 亚洲桃色在线一区| 91麻豆福利精品推荐| 亚洲精品成a人| 欧美优质美女网站| 亚洲国产精品麻豆| 欧美日韩成人一区| 免费在线观看一区| 精品国产一区二区三区不卡| 国产在线日韩欧美| 国产日韩欧美精品电影三级在线 | 欧美又粗又大又爽| 午夜精品爽啪视频| 日韩欧美一级二级三级久久久| 精品综合久久久久久8888| 精品久久久久久久久久久久久久久| 激情综合色综合久久综合| 久久婷婷综合激情| eeuss国产一区二区三区| 亚洲精品高清在线观看| 欧美午夜不卡视频| 久久成人免费网| 国产欧美综合色| 91成人国产精品| 蜜桃一区二区三区在线观看| 久久综合丝袜日本网| 成人黄色在线视频| 亚洲线精品一区二区三区| 日韩欧美二区三区| 成人免费视频视频在线观看免费| 一区二区三区日韩欧美| 欧美精品777| 国产高清在线观看免费不卡| 亚洲欧美色综合| 日韩视频免费观看高清完整版在线观看 | 成人国产精品免费网站| 亚洲曰韩产成在线| 精品国精品自拍自在线| www.一区二区| 午夜视频在线观看一区二区| 精品国产一区二区三区四区四| 97精品超碰一区二区三区| 日韩精品免费专区| 国产精品卡一卡二| 欧美日韩www| 成人高清av在线| 秋霞成人午夜伦在线观看| 国产精品视频线看| 欧美一级理论片| av中文字幕在线不卡| 免费视频一区二区| 亚洲欧美另类久久久精品2019| 欧美一卡二卡在线| 色综合天天做天天爱| 狠狠色狠狠色合久久伊人| 亚洲美女偷拍久久| 久久免费国产精品| 5566中文字幕一区二区电影| 成人激情免费视频| 激情欧美一区二区| 天堂蜜桃一区二区三区| 国产精品伦理一区二区| 日韩欧美一级片| 精品视频在线免费观看| 成人久久18免费网站麻豆 | 亚洲欧美日韩在线| 久久久精品中文字幕麻豆发布| 欧美午夜精品久久久久久孕妇| 国产高清不卡一区二区| 欧美aaaaa成人免费观看视频| 亚洲精品视频一区二区|