您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ GSEL函数代码示例

51自学网 2021-06-01 20:55:36
  C++
这篇教程C++ GSEL函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中GSEL函数的典型用法代码示例。如果您正苦于以下问题:C++ GSEL函数的具体用法?C++ GSEL怎么用?C++ GSEL使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了GSEL函数的27个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: linux_setregs

voidlinux_setregs(struct lwp *l, struct exec_package *epp, vaddr_t stack){	struct trapframe *tf;#ifdef USER_LDT	pmap_ldt_cleanup(l);#endif	fpu_save_area_clear(l, __Linux_NPXCW__);	tf = l->l_md.md_regs;	tf->tf_gs = 0;	tf->tf_fs = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_es = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_ds = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_edi = 0;	tf->tf_esi = 0;	tf->tf_ebp = 0;	tf->tf_ebx = l->l_proc->p_psstrp;	tf->tf_edx = 0;	tf->tf_ecx = 0;	tf->tf_eax = 0;	tf->tf_eip = epp->ep_entry;	tf->tf_cs = GSEL(GUCODEBIG_SEL, SEL_UPL);	tf->tf_eflags = PSL_USERSET;	tf->tf_esp = stack;	tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);}
开发者ID:goroutines,项目名称:rumprun,代码行数:29,


示例2: cpu_fork

/* * Finish a fork operation, with process p2 nearly set up. * Copy and update the kernel stack and pcb, making the child * ready to run, and marking it so that it can return differently * than the parent.  Returns 1 in the child process, 0 in the parent. * We currently double-map the user area so that the stack is at the same * address in each process; in the future we will probably relocate * the frame pointers on the stack after copying. */voidcpu_fork(struct proc *p1, struct proc *p2,         void *stack, size_t stacksize, void (*func)(void *), void *arg){    struct pcb *pcb = &p2->p_addr->u_pcb;    struct trapframe *tf;    struct switchframe *sf;#if NNPX > 0    npxsave_proc(p1, 1);#endif    p2->p_md.md_flags = p1->p_md.md_flags;    /* Copy pcb from proc p1 to p2. */    if (p1 == curproc) {        /* Sync the PCB before we copy it. */        savectx(curpcb);    }#ifdef DIAGNOSTIC    else if (p1 != &proc0)        panic("cpu_fork: curproc");#endif    *pcb = p1->p_addr->u_pcb;    /*     * Preset these so that gdt_compact() doesn't get confused if called     * during the allocations below.     *     * Note: pcb_ldt_sel is handled in the pmap_activate() call when     * we run the new process.     */    p2->p_md.md_tss_sel = GSEL(GNULL_SEL, SEL_KPL);    /* Fix up the TSS. */    pcb->pcb_tss.tss_ss0 = GSEL(GDATA_SEL, SEL_KPL);    pcb->pcb_tss.tss_esp0 = (int)p2->p_addr + USPACE - 16;    p2->p_md.md_tss_sel = tss_alloc(pcb);    /*     * Copy the trapframe, and arrange for the child to return directly     * through rei().     */    p2->p_md.md_regs = tf = (struct trapframe *)pcb->pcb_tss.tss_esp0 - 1;    *tf = *p1->p_md.md_regs;    /*     * If specified, give the child a different stack.     */    if (stack != NULL)        tf->tf_esp = (u_int)stack + stacksize;    sf = (struct switchframe *)tf - 1;    sf->sf_ppl = 0;    sf->sf_esi = (int)func;    sf->sf_ebx = (int)arg;    sf->sf_eip = (int)proc_trampoline;    pcb->pcb_esp = (int)sf;}
开发者ID:avsm,项目名称:openbsd-xen-sys,代码行数:69,


示例3: init_secondary

/* * AP cpu's call this to sync up protected mode. * * WARNING!  We must ensure that the cpu is sufficiently initialized to * be able to use to the FP for our optimized bzero/bcopy code before * we enter more mainstream C code. * * WARNING! %fs is not set up on entry.  This routine sets up %fs. */voidinit_secondary(void){	int	gsel_tss;	int	x, myid = bootAP;	u_int	cr0;	struct mdglobaldata *md;	struct privatespace *ps;	ps = &CPU_prvspace[myid];	gdt_segs[GPRIV_SEL].ssd_base = (int)ps;	gdt_segs[GPROC0_SEL].ssd_base =		(int) &ps->mdglobaldata.gd_common_tss;	ps->mdglobaldata.mi.gd_prvspace = ps;	for (x = 0; x < NGDT; x++) {		ssdtosd(&gdt_segs[x], &gdt[myid * NGDT + x].sd);	}	r_gdt.rd_limit = NGDT * sizeof(gdt[0]) - 1;	r_gdt.rd_base = (int) &gdt[myid * NGDT];	lgdt(&r_gdt);			/* does magic intra-segment return */	lidt(&r_idt);	lldt(_default_ldt);	mdcpu->gd_currentldt = _default_ldt;	gsel_tss = GSEL(GPROC0_SEL, SEL_KPL);	gdt[myid * NGDT + GPROC0_SEL].sd.sd_type = SDT_SYS386TSS;	md = mdcpu;	/* loaded through %fs:0 (mdglobaldata.mi.gd_prvspace)*/	md->gd_common_tss.tss_esp0 = 0;	/* not used until after switch */	md->gd_common_tss.tss_ss0 = GSEL(GDATA_SEL, SEL_KPL);	md->gd_common_tss.tss_ioopt = (sizeof md->gd_common_tss) << 16;	md->gd_tss_gdt = &gdt[myid * NGDT + GPROC0_SEL].sd;	md->gd_common_tssd = *md->gd_tss_gdt;	ltr(gsel_tss);	/*	 * Set to a known state:	 * Set by mpboot.s: CR0_PG, CR0_PE	 * Set by cpu_setregs: CR0_NE, CR0_MP, CR0_TS, CR0_WP, CR0_AM	 */	cr0 = rcr0();	cr0 &= ~(CR0_CD | CR0_NW | CR0_EM);	load_cr0(cr0);	pmap_set_opt();		/* PSE/4MB pages, etc */	/* set up CPU registers and state */	cpu_setregs();	/* set up FPU state on the AP */	npxinit(__INITIAL_NPXCW__);	/* set up SSE registers */	enable_sse();}
开发者ID:AhmadTux,项目名称:DragonFlyBSD,代码行数:69,


示例4: cpu_set_tss_gates

voidcpu_set_tss_gates(struct cpu_info *ci){	struct segment_descriptor sd;	ci->ci_doubleflt_stack = (char *)uvm_km_alloc(kernel_map, USPACE);	cpu_init_tss(&ci->ci_doubleflt_tss, ci->ci_doubleflt_stack,	    IDTVEC(tss_trap08));	setsegment(&sd, &ci->ci_doubleflt_tss, sizeof(struct i386tss) - 1,	    SDT_SYS386TSS, SEL_KPL, 0, 0);	ci->ci_gdt[GTRAPTSS_SEL].sd = sd;	setgate(&idt[8], NULL, 0, SDT_SYSTASKGT, SEL_KPL,	    GSEL(GTRAPTSS_SEL, SEL_KPL));#if defined(DDB) && defined(MULTIPROCESSOR)	/*	 * Set up separate handler for the DDB IPI, so that it doesn't	 * stomp on a possibly corrupted stack.	 *	 * XXX overwriting the gate set in db_machine_init.	 * Should rearrange the code so that it's set only once.	 */	ci->ci_ddbipi_stack = (char *)uvm_km_alloc(kernel_map, USPACE);	cpu_init_tss(&ci->ci_ddbipi_tss, ci->ci_ddbipi_stack,	    Xintrddbipi);	setsegment(&sd, &ci->ci_ddbipi_tss, sizeof(struct i386tss) - 1,	    SDT_SYS386TSS, SEL_KPL, 0, 0);	ci->ci_gdt[GIPITSS_SEL].sd = sd;	setgate(&idt[ddb_vec], NULL, 0, SDT_SYSTASKGT, SEL_KPL,	    GSEL(GIPITSS_SEL, SEL_KPL));#endif}
开发者ID:mosconi,项目名称:openbsd,代码行数:34,


示例5: init_reg_state

static voidinit_reg_state(void){  vmm_write_register(HV_X86_RAX, 0);  vmm_write_register(HV_X86_RBX, 0);  vmm_write_register(HV_X86_RCX, 0);  vmm_write_register(HV_X86_RDX, 0);  vmm_write_register(HV_X86_RSI, 0);  vmm_write_register(HV_X86_RDI, 0);  vmm_write_register(HV_X86_R8, 0);  vmm_write_register(HV_X86_R9, 0);  vmm_write_register(HV_X86_R10, 0);  vmm_write_register(HV_X86_R11, 0);  vmm_write_register(HV_X86_R12, 0);  vmm_write_register(HV_X86_R13, 0);  vmm_write_register(HV_X86_R14, 0);  vmm_write_register(HV_X86_R15, 0);  vmm_write_vmcs(VMCS_GUEST_FS, 0);  vmm_write_vmcs(VMCS_GUEST_ES, 0);  vmm_write_vmcs(VMCS_GUEST_GS, 0);  vmm_write_vmcs(VMCS_GUEST_DS, 0);  vmm_write_vmcs(VMCS_GUEST_CS, GSEL(SEG_CODE, 0));  vmm_write_vmcs(VMCS_GUEST_DS, GSEL(SEG_DATA, 0));  vmm_write_vmcs(VMCS_GUEST_FS_BASE, 0);  vmm_write_vmcs(VMCS_GUEST_GS_BASE, 0);  vmm_write_vmcs(VMCS_GUEST_LDTR, 0);  init_fpu();}
开发者ID:jmgc,项目名称:noah,代码行数:32,


示例6: linux_buildcontext

static voidlinux_buildcontext(struct lwp *l, void *catcher, void *f){	struct trapframe *tf = l->l_md.md_regs;	tf->tf_ds = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_rip = (u_int64_t)catcher;	tf->tf_cs = GSEL(GUCODE_SEL, SEL_UPL);	tf->tf_rflags &= ~PSL_CLEARSIG;	tf->tf_rsp = (u_int64_t)f;	tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);}
开发者ID:Tommmster,项目名称:netbsd-avr32,代码行数:12,


示例7: linux_setregs

voidlinux_setregs(struct lwp *l, struct exec_package *epp, u_long stack){	struct pcb *pcb = &l->l_addr->u_pcb;	struct trapframe *tf;	/* If we were using the FPU, forget about it. */	if (l->l_addr->u_pcb.pcb_fpcpu != NULL)		fpusave_lwp(l, 0);	l->l_md.md_flags &= ~MDP_USEDFPU;	pcb->pcb_flags = 0;	pcb->pcb_savefpu.fp_fxsave.fx_fcw = __NetBSD_NPXCW__;	pcb->pcb_savefpu.fp_fxsave.fx_mxcsr = __INITIAL_MXCSR__;	pcb->pcb_savefpu.fp_fxsave.fx_mxcsr_mask = __INITIAL_MXCSR_MASK__;	pcb->pcb_fs = 0;	pcb->pcb_gs = 0;	l->l_proc->p_flag &= ~PK_32;	tf = l->l_md.md_regs;	tf->tf_rax = 0;	tf->tf_rbx = 0;	tf->tf_rcx = epp->ep_entry;	tf->tf_rdx = 0;	tf->tf_rsi = 0;	tf->tf_rdi = 0;	tf->tf_rbp = 0;	tf->tf_rsp = stack;	tf->tf_r8 = 0;	tf->tf_r9 = 0;	tf->tf_r10 = 0;	tf->tf_r11 = 0;	tf->tf_r12 = 0;	tf->tf_r13 = 0;	tf->tf_r14 = 0;	tf->tf_r15 = 0;	tf->tf_rip = epp->ep_entry;	tf->tf_rflags = PSL_USERSET;	tf->tf_cs = GSEL(GUCODE_SEL, SEL_UPL);	tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_ds = 0;	tf->tf_es = 0;	tf->tf_fs = 0;	tf->tf_gs = 0;	return;}
开发者ID:Tommmster,项目名称:netbsd-avr32,代码行数:48,


示例8: vmm_get_host_datasel

uint64_tvmm_get_host_datasel(void){	return (GSEL(GDATA_SEL, SEL_KPL));}
开发者ID:2asoft,项目名称:freebsd,代码行数:7,


示例9: vmbus_vector_alloc

/** * @brief Find a free IDT slot and setup the interrupt handler. */static intvmbus_vector_alloc(void){	int vector;	uintptr_t func;	struct gate_descriptor *ip;	/*	 * Search backwards form the highest IDT vector available for use	 * as vmbus channel callback vector. We install 'hv_vmbus_callback'	 * handler at that vector and use it to interrupt vcpus.	 */	vector = APIC_SPURIOUS_INT;	while (--vector >= APIC_IPI_INTS) {		ip = &idt[vector];		func = ((long)ip->gd_hioffset << 16 | ip->gd_looffset);		if (func == (uintptr_t)&IDTVEC(rsvd)) {#ifdef __i386__			setidt(vector , IDTVEC(hv_vmbus_callback), SDT_SYS386IGT,			    SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));#else			setidt(vector , IDTVEC(hv_vmbus_callback), SDT_SYSIGT,			    SEL_KPL, 0);#endif			return (vector);		}	}	return (0);}
开发者ID:moscaliucpaulandrei,项目名称:freebsd,代码行数:33,


示例10: cpu_init_tss

voidcpu_init_tss(struct i386tss *tss, void *stack, void *func){	memset(tss, 0, sizeof *tss);	tss->tss_esp0 = tss->tss_esp = (int)((char *)stack + USPACE - 16);	tss->tss_ss0 = GSEL(GDATA_SEL, SEL_KPL);	tss->__tss_cs = GSEL(GCODE_SEL, SEL_KPL);	tss->tss_fs = GSEL(GCPU_SEL, SEL_KPL);	tss->tss_gs = tss->__tss_es = tss->__tss_ds =	    tss->__tss_ss = GSEL(GDATA_SEL, SEL_KPL);	tss->tss_cr3 = pmap_kernel()->pm_pdirpa;	tss->tss_esp = (int)((char *)stack + USPACE - 16);	tss->tss_ldt = 0;	tss->__tss_eflags = PSL_MBO | PSL_NT;	/* XXX not needed? */	tss->__tss_eip = (int)func;}
开发者ID:mosconi,项目名称:openbsd,代码行数:16,


示例11: cpu_ptrace

intcpu_ptrace(struct thread *td, int req, void *addr, int data){	struct segment_descriptor *sdp, sd;	register_t r;	int error;	switch (req) {	case PT_GETXMMREGS:	case PT_SETXMMREGS:	case PT_GETXSTATE_OLD:	case PT_SETXSTATE_OLD:	case PT_GETXSTATE_INFO:	case PT_GETXSTATE:	case PT_SETXSTATE:		error = cpu_ptrace_xmm(td, req, addr, data);		break;	case PT_GETFSBASE:	case PT_GETGSBASE:		sdp = req == PT_GETFSBASE ? &td->td_pcb->pcb_fsd :		    &td->td_pcb->pcb_gsd;		r = sdp->sd_hibase << 24 | sdp->sd_lobase;		error = copyout(&r, addr, sizeof(r));		break;	case PT_SETFSBASE:	case PT_SETGSBASE:		error = copyin(addr, &r, sizeof(r));		if (error != 0)			break;		fill_based_sd(&sd, r);		if (req == PT_SETFSBASE) {			td->td_pcb->pcb_fsd = sd;			td->td_frame->tf_fs = GSEL(GUFS_SEL, SEL_UPL);		} else {			td->td_pcb->pcb_gsd = sd;			td->td_pcb->pcb_gs = GSEL(GUGS_SEL, SEL_UPL);		}		break;	default:		return (EINVAL);	}	return (error);}
开发者ID:FreeBSDFoundation,项目名称:freebsd,代码行数:47,


示例12: ldt_alloc

/* * Caller must have pmap locked for both of these functions. */voidldt_alloc(struct pmap *pmap, union descriptor *ldt, size_t len){	int slot;	slot = gdt_get_slot();	setgdt(slot, ldt, len - 1, SDT_SYSLDT, SEL_KPL, 0, 0);	pmap->pm_ldt_sel = GSEL(slot, SEL_KPL);}
开发者ID:avsm,项目名称:openbsd-xen-sys,代码行数:12,


示例13: idt_vec_set

voididt_vec_set(int vec, void (*function)(void)){	KASSERT(mutex_owned(&cpu_lock) || !mp_online);	KASSERT(idt_allocmap[vec] == 1);	setgate(&idt[vec], function, 0, SDT_SYS386IGT, SEL_KPL,	    GSEL(GCODE_SEL, SEL_KPL));}
开发者ID:eyberg,项目名称:rumpkernel-netbsd-src,代码行数:9,


示例14: idt_vec_set

voididt_vec_set(int vec, void (*function)(void)){	/*	 * Vector should be allocated, so no locking needed.	 */	KASSERT(idt_allocmap[vec] == 1);	setgate(&idt[vec], function, 0, SDT_SYS386IGT, SEL_KPL,	    GSEL(GCODE_SEL, SEL_KPL));}
开发者ID:avsm,项目名称:openbsd-xen-sys,代码行数:10,


示例15: tss_alloc

inttss_alloc(const struct i386tss *tss){    int slot;    slot = gdt_get_slot();    setgdt(slot, tss, sizeof(struct i386tss) + IOMAPSIZE - 1,           SDT_SYS386TSS, SEL_KPL, 0, 0);    return GSEL(slot, SEL_KPL);}
开发者ID:lacombar,项目名称:netbsd-alc,代码行数:10,


示例16: tss_alloc

inttss_alloc(struct pcb *pcb){	int slot;	slot = gdt_get_slot();	setgdt(slot, &pcb->pcb_tss, sizeof(struct pcb) - 1,	    SDT_SYS386TSS, SEL_KPL, 0, 0);	return GSEL(slot, SEL_KPL);}
开发者ID:ajinkya93,项目名称:OpenBSD,代码行数:10,


示例17: ldt_alloc

/* * Caller must have pmap locked for both of these functions. */voidldt_alloc(struct pmap *pmap, union descriptor *ldt, size_t len){	int slot;	slot = gdt_get_slot1(1);	cpu_info_primary.ci_gdt[slot].ld.ld_base = (u_int32_t)ldt;	cpu_info_primary.ci_gdt[slot].ld.ld_entries =	    len / sizeof(union descriptor);	pmap->pm_ldt_sel = GSEL(slot, SEL_KPL);}
开发者ID:avsm,项目名称:openbsd-xen-sys,代码行数:14,


示例18: ldt_alloc

voidldt_alloc(struct pmap *pmap, char *ldt, size_t len){	int slot;	struct sys_segment_descriptor *gdt;	gdt = (struct sys_segment_descriptor *)&gdtstore[DYNSEL_START];	slot = gdt_get_slot();	set_sys_gdt(&gdt[slot], ldt, len - 1, SDT_SYSLDT, SEL_KPL, 0);	pmap->pm_ldt_sel = GSEL(slot, SEL_KPL);}
开发者ID:repos-holder,项目名称:openbsd-patches,代码行数:12,


示例19: gdb_cpu_getreg

void *gdb_cpu_getreg(int regnum, size_t *regsz){	static uint32_t _kcodesel = GSEL(GCODE_SEL, SEL_KPL);	static uint32_t _kdatasel = GSEL(GDATA_SEL, SEL_KPL);	*regsz = gdb_cpu_regsz(regnum);	if (kdb_thread  == curthread) {		switch (regnum) {		case 0:	return (&kdb_frame->tf_rax);		case 2:	return (&kdb_frame->tf_rcx);		case 3:	return (&kdb_frame->tf_rdx);		case 4:	return (&kdb_frame->tf_rsi);		case 5:	return (&kdb_frame->tf_rdi);		case 8: return (&kdb_frame->tf_r8);		case 9: return (&kdb_frame->tf_r9);		case 10: return (&kdb_frame->tf_r10);		case 11: return (&kdb_frame->tf_r11);		case 17: return (&kdb_frame->tf_rflags);		case 18: return (&kdb_frame->tf_cs);		case 19: return (&kdb_frame->tf_ss);		}	}	switch (regnum) {	case 1:  return (&kdb_thrctx->pcb_rbx);	case 6:  return (&kdb_thrctx->pcb_rbp);	case 7:  return (&kdb_thrctx->pcb_rsp);	case 12: return (&kdb_thrctx->pcb_r12);	case 13: return (&kdb_thrctx->pcb_r13);	case 14: return (&kdb_thrctx->pcb_r14);	case 15: return (&kdb_thrctx->pcb_r15);	case 16: return (&kdb_thrctx->pcb_rip);	case 18: return (&_kcodesel);	case 19: return (&_kdatasel);	}	return (NULL);}
开发者ID:2asoft,项目名称:freebsd,代码行数:38,


示例20: gdb_cpu_getreg

void *gdb_cpu_getreg(int regnum, size_t *regsz){	static uint32_t _kcodesel = GSEL(GCODE_SEL, SEL_KPL);	static uint32_t _kdatasel = GSEL(GDATA_SEL, SEL_KPL);	static uint32_t _kprivsel = GSEL(GPRIV_SEL, SEL_KPL);	*regsz = gdb_cpu_regsz(regnum);	if (kdb_thread == curthread) {		switch (regnum) {		case 0:	return (&kdb_frame->tf_eax);		case 1:	return (&kdb_frame->tf_ecx);		case 2:	return (&kdb_frame->tf_edx);		case 9: return (&kdb_frame->tf_eflags);		case 10: return (&kdb_frame->tf_cs);		case 12: return (&kdb_frame->tf_ds);		case 13: return (&kdb_frame->tf_es);		case 14: return (&kdb_frame->tf_fs);		}	}	switch (regnum) {	case 3:  return (&kdb_thrctx->pcb_ebx);	case 4:  return (&kdb_thrctx->pcb_esp);	case 5:  return (&kdb_thrctx->pcb_ebp);	case 6:  return (&kdb_thrctx->pcb_esi);	case 7:  return (&kdb_thrctx->pcb_edi);	case 8:  return (&kdb_thrctx->pcb_eip);	case 10: return (&_kcodesel);	case 11: return (&_kdatasel);	case 12: return (&_kdatasel);	case 13: return (&_kdatasel);	case 14: return (&_kprivsel);	case 15: return (&kdb_thrctx->pcb_gs);	}	return (NULL);}
开发者ID:2asoft,项目名称:freebsd,代码行数:37,


示例21: ldt_alloc

/* * Caller must have pmap locked for both of these functions. */intldt_alloc(union descriptor *ldtp, size_t len){    int slot;#ifndef XEN    slot = gdt_get_slot();    setgdt(slot, ldtp, len - 1, SDT_SYSLDT, SEL_KPL, 0, 0);#else    slot = gdt_get_slot1(1);    cpu_info_primary.ci_gdt[slot].ld.ld_base = (uint32_t)ldtp;    cpu_info_primary.ci_gdt[slot].ld.ld_entries =        len / sizeof(union descriptor);#endif    return GSEL(slot, SEL_KPL);}
开发者ID:lacombar,项目名称:netbsd-alc,代码行数:18,


示例22: intr_default_setup

/* * Fill in default interrupt table (in case of spurious interrupt * during configuration of kernel), setup interrupt control unit */voidintr_default_setup(void){	int i;	/* icu vectors */	for (i = 0; i < NUM_LEGACY_IRQS; i++) {		idt_allocmap[ICU_OFFSET + i] = 1;		setgate(&idt[ICU_OFFSET + i],		    i8259_stubs[i].ist_entry, 0, SDT_SYS386IGT,		    SEL_KPL, GSEL(GCODE_SEL, SEL_KPL));	}	/*	 * Eventually might want to check if it's actually there.	 */	i8259_default_setup();}
开发者ID:orumin,项目名称:openbsd-efivars,代码行数:22,


示例23: pcibios_get_version

static u_int16_tpcibios_get_version(void){	struct bios_regs args;	if (PCIbios.ventry == 0) {		PRVERB(("pcibios: No call entry point/n"));		return (0);	}	args.eax = PCIBIOS_BIOS_PRESENT;	if (bios32(&args, PCIbios.ventry, GSEL(GCODE_SEL, SEL_KPL))) {		PRVERB(("pcibios: BIOS_PRESENT call failed/n"));		return (0);	}	if (args.edx != 0x20494350) {		PRVERB(("pcibios: BIOS_PRESENT didn't return 'PCI ' in edx/n"));		return (0);	}	return (args.ebx & 0xffff);}
开发者ID:MarginC,项目名称:kame,代码行数:20,


示例24: amd64fbsd_read_description

static const struct target_desc *amd64fbsd_read_description (struct target_ops *ops){#ifdef PT_GETXSTATE_INFO  static int xsave_probed;  static uint64_t xcr0;#endif  struct reg regs;  int is64;  if (ptrace (PT_GETREGS, ptid_get_pid (inferior_ptid),	      (PTRACE_TYPE_ARG3) &regs, 0) == -1)    perror_with_name (_("Couldn't get registers"));  is64 = (regs.r_cs == GSEL (GUCODE_SEL, SEL_UPL));#ifdef PT_GETXSTATE_INFO  if (!xsave_probed)    {      struct ptrace_xstate_info info;      if (ptrace (PT_GETXSTATE_INFO, ptid_get_pid (inferior_ptid),		  (PTRACE_TYPE_ARG3) &info, sizeof (info)) == 0)	{	  amd64bsd_xsave_len = info.xsave_len;	  xcr0 = info.xsave_mask;	}      xsave_probed = 1;    }  if (amd64bsd_xsave_len != 0)    {      if (is64)	return amd64_target_description (xcr0);      else	return i386_target_description (xcr0);    }#endif  if (is64)    return tdesc_amd64;  else    return tdesc_i386;}
开发者ID:seanwh1te,项目名称:DeltaPorts,代码行数:41,


示例25: linux32_setregs

voidlinux32_setregs(struct lwp *l, struct exec_package *pack, u_long stack){	struct pcb *pcb = lwp_getpcb(l);	struct trapframe *tf;	struct proc *p = l->l_proc;#if defined(USER_LDT) && 0	pmap_ldt_cleanup(l);#endif	netbsd32_adjust_limits(p);	fpu_save_area_clear(l, __Linux_NPXCW__);	l->l_md.md_flags |= MDL_COMPAT32;	/* Forces iret not sysret */	pcb->pcb_flags = PCB_COMPAT32;	p->p_flag |= PK_32;	tf = l->l_md.md_regs;	tf->tf_rax = 0;	tf->tf_rbx = (u_int32_t)p->p_psstrp;	tf->tf_rcx = pack->ep_entry & 0xffffffff;	tf->tf_rdx = 0;	tf->tf_rsi = 0;	tf->tf_rdi = 0;	tf->tf_rbp = 0;	tf->tf_rsp = stack & 0xffffffff;	tf->tf_r8 = 0;	tf->tf_r9 = 0;	tf->tf_r10 = 0;	tf->tf_r11 = 0;	tf->tf_r12 = 0;	tf->tf_r13 = 0;	tf->tf_r14 = 0;	tf->tf_r15 = 0;	tf->tf_rip = pack->ep_entry & 0xffffffff;	tf->tf_rflags = PSL_USERSET;	tf->tf_cs = GSEL(GUCODE32_SEL, SEL_UPL);	tf->tf_ss = GSEL(GUDATA32_SEL, SEL_UPL);	tf->tf_ds = GSEL(GUDATA32_SEL, SEL_UPL);	tf->tf_es = GSEL(GUDATA32_SEL, SEL_UPL);	cpu_fsgs_zero(l);	cpu_fsgs_reload(l, GSEL(GUDATA32_SEL, SEL_UPL), GSEL(GUDATA32_SEL, SEL_UPL));}
开发者ID:ryo,项目名称:netbsd-src,代码行数:46,


示例26: db_segsize

intdb_segsize(struct trapframe *tfp){	struct proc_ldt *plp;	struct segment_descriptor *sdp;	int sel;	if (tfp == NULL)	    return (32);	if (tfp->tf_eflags & PSL_VM)	    return (16);	sel = tfp->tf_cs & 0xffff;	if (sel == GSEL(GCODE_SEL, SEL_KPL))	    return (32);	/* Rare cases follow.  User mode cases are currently unreachable. */	if (ISLDT(sel)) {	    plp = curthread->td_proc->p_md.md_ldt;	    sdp = (plp != NULL) ? &plp->ldt_sd : &ldt[0].sd;	} else {	    sdp = &gdt[PCPU_GET(cpuid) * NGDT].sd;	}	return (sdp[IDXSEL(sel)].sd_def32 == 0 ? 16 : 32);}
开发者ID:2trill2spill,项目名称:freebsd,代码行数:23,


示例27: linux_setregs

voidlinux_setregs(struct lwp *l, struct exec_package *epp, u_long stack){	struct pcb *pcb = &l->l_addr->u_pcb;	struct trapframe *tf;#if NNPX > 0	/* If we were using the FPU, forget about it. */	if (npxproc == l)		npxdrop();#endif#ifdef USER_LDT	pmap_ldt_cleanup(l);#endif	l->l_md.md_flags &= ~MDL_USEDFPU;	if (i386_use_fxsave) {		pcb->pcb_savefpu.sv_xmm.sv_env.en_cw = __Linux_NPXCW__;		pcb->pcb_savefpu.sv_xmm.sv_env.en_mxcsr = __INITIAL_MXCSR__;	} else		pcb->pcb_savefpu.sv_87.sv_env.en_cw = __Linux_NPXCW__;	tf = l->l_md.md_regs;	tf->tf_gs = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_fs = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_es = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_ds = GSEL(GUDATA_SEL, SEL_UPL);	tf->tf_edi = 0;	tf->tf_esi = 0;	tf->tf_ebp = 0;	tf->tf_ebx = (int)l->l_proc->p_psstr;	tf->tf_edx = 0;	tf->tf_ecx = 0;	tf->tf_eax = 0;	tf->tf_eip = epp->ep_entry;	tf->tf_cs = GSEL(GUCODEBIG_SEL, SEL_UPL);	tf->tf_eflags = PSL_USERSET;	tf->tf_esp = stack;	tf->tf_ss = GSEL(GUDATA_SEL, SEL_UPL);}
开发者ID:lacombar,项目名称:netbsd-alc,代码行数:42,



注:本文中的GSEL函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ GSIZE_TO_POINTER函数代码示例
C++ GS函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。