⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 entry.s

📁 xen虚拟机源代码安装包
💻 S
📖 第 1 页 / 共 4 页
字号:
	.spillsp ar.unat, 16	st8 [sp]=r9,-16				// allocate space for ar.unat and save it	st8 [out2]=loc1,-8			// save ar.pfs, out2=&sigscratch	.body	br.call.sptk.many rp=ia64_rt_sigsuspend.ret17:	.restore sp	adds sp=16,sp				// pop scratch stack space	;;	ld8 r9=[sp]				// load new unat from sw->caller_unat	mov rp=loc0	;;	mov ar.unat=r9	mov ar.pfs=loc1	br.ret.sptk.many rpEND(sys_rt_sigsuspend)ENTRY(sys_rt_sigreturn)	PT_REGS_UNWIND_INFO(0)	/*	 * Allocate 8 input registers since ptrace() may clobber them	 */	alloc r2=ar.pfs,8,0,1,0	.prologue	PT_REGS_SAVES(16)	adds sp=-16,sp	.body	cmp.eq pNonSys,pSys=r0,r0		// sigreturn isn't a normal syscall...	;;	/*	 * leave_kernel() restores f6-f11 from pt_regs, but since the streamlined	 * syscall-entry path does not save them we save them here instead.  Note: we	 * don't need to save any other registers that are not saved by the stream-lined	 * syscall path, because restore_sigcontext() restores them.	 */	adds r16=PT(F6)+32,sp	adds r17=PT(F7)+32,sp	;; 	stf.spill [r16]=f6,32 	stf.spill [r17]=f7,32	;; 	stf.spill [r16]=f8,32 	stf.spill [r17]=f9,32	;; 	stf.spill [r16]=f10 	stf.spill [r17]=f11	adds out0=16,sp				// out0 = &sigscratch	br.call.sptk.many rp=ia64_rt_sigreturn.ret19:	.restore sp,0	adds sp=16,sp	;;	ld8 r9=[sp]				// load new ar.unat	mov.sptk b7=r8,ia64_leave_kernel	;;	mov ar.unat=r9	br.many b7END(sys_rt_sigreturn)#endifGLOBAL_ENTRY(ia64_prepare_handle_unaligned)	.prologue	/*	 * r16 = fake ar.pfs, we simply need to make sure privilege is still 0	 */	mov r16=r0	DO_SAVE_SWITCH_STACK	br.call.sptk.many rp=ia64_handle_unaligned	// stack frame setup in ivt.ret21:	.body	DO_LOAD_SWITCH_STACK	br.cond.sptk.many rp				// goes to ia64_leave_kernelEND(ia64_prepare_handle_unaligned)	//	// unw_init_running(void (*callback)(info, arg), void *arg)	//#	define EXTRA_FRAME_SIZE	((UNW_FRAME_INFO_SIZE+15)&~15)GLOBAL_ENTRY(unw_init_running)	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)	alloc loc1=ar.pfs,2,3,3,0	;;	ld8 loc2=[in0],8	mov loc0=rp	mov r16=loc1	DO_SAVE_SWITCH_STACK	.body	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(2)	.fframe IA64_SWITCH_STACK_SIZE+EXTRA_FRAME_SIZE	SWITCH_STACK_SAVES(EXTRA_FRAME_SIZE)	adds sp=-EXTRA_FRAME_SIZE,sp	.body	;;	adds out0=16,sp				// &info	mov out1=r13				// current	adds out2=16+EXTRA_FRAME_SIZE,sp	// &switch_stack	br.call.sptk.many rp=unw_init_frame_info1:	adds out0=16,sp				// &info	mov b6=loc2	mov loc2=gp				// save gp across indirect function call	;;	ld8 gp=[in0]	mov out1=in1				// arg	br.call.sptk.many rp=b6			// invoke the callback function1:	mov gp=loc2				// restore gp	// For now, we don't allow changing registers from within	// unw_init_running; if we ever want to allow that, we'd	// have to do a load_switch_stack here:	.restore sp	adds sp=IA64_SWITCH_STACK_SIZE+EXTRA_FRAME_SIZE,sp	mov ar.pfs=loc1	mov rp=loc0	br.ret.sptk.many rpEND(unw_init_running)#ifdef XENGLOBAL_ENTRY(ia64_do_multicall_call)	movl r2=ia64_hypercall_table;;	shladd r2=r38,3,r2;;	ld8 r2=[r2];;	mov b6=r2	br.sptk.many b6;;END(ia64_do_multicall_call)    	.rodata	.align 8	.globl ia64_hypercall_tableia64_hypercall_table:	data8 do_ni_hypercall		/* do_set_trap_table *//*  0 */	data8 do_ni_hypercall		/* do_mmu_update */	data8 do_ni_hypercall		/* do_set_gdt */	data8 do_ni_hypercall		/* do_stack_switch */	data8 do_ni_hypercall		/* do_set_callbacks */	data8 do_ni_hypercall		/* do_fpu_taskswitch *//*  5 */	data8 do_sched_op_compat	data8 do_ni_hypercall	data8 do_ni_hypercall		/* do_set_debugreg */	data8 do_ni_hypercall		/* do_get_debugreg */	data8 do_ni_hypercall		/* do_update_descriptor * 10 */	data8 do_ni_hypercall		/* do_ni_hypercall */	data8 do_memory_op	data8 do_multicall	data8 do_ni_hypercall		/* do_update_va_mapping */	data8 do_ni_hypercall		/* do_set_timer_op */  /* 15 */	data8 do_ni_hypercall	data8 do_xen_version	data8 do_console_io	data8 do_ni_hypercall	data8 do_grant_table_op				       /* 20 */	data8 do_ni_hypercall		/* do_vm_assist */	data8 do_ni_hypercall		/* do_update_va_mapping_othe */	data8 do_ni_hypercall		/* (x86 only) */	data8 do_vcpu_op		/* do_vcpu_op */	data8 do_ni_hypercall		/* (x86_64 only) */    /* 25 */	data8 do_ni_hypercall		/* do_mmuext_op */	data8 do_ni_hypercall		/* do_acm_op */	data8 do_ni_hypercall		/* do_nmi_op */	data8 do_sched_op	data8 do_callback_op		/*  */                 /* 30 */	data8 do_xenoprof_op		/*  */	data8 do_event_channel_op	data8 do_physdev_op	data8 do_hvm_op			/*  */	data8 do_sysctl			/*  */                  /* 35 */	data8 do_domctl			/*  */	data8 do_kexec_op		/*  */	data8 do_ni_hypercall		/*  */	data8 do_ni_hypercall		/*  */	data8 do_ni_hypercall		/*  */                 /* 40 */	data8 do_ni_hypercall		/*  */	data8 do_ni_hypercall		/*  */	data8 do_ni_hypercall		/*  */	data8 do_ni_hypercall		/*  */	data8 do_ni_hypercall		/*  */                 /* 45 */	data8 do_ni_hypercall		/*  */	data8 do_ni_hypercall		/*  */	data8 do_dom0vp_op              /* dom0vp_op */	data8 do_pirq_guest_eoi		/* arch_1 */	data8 do_ia64_debug_op		/* arch_2 */           /* 50 */	data8 do_ni_hypercall		/* arch_3 */	data8 do_ni_hypercall		/* arch_4 */	data8 do_ni_hypercall		/* arch_5 */	data8 do_ni_hypercall		/* arch_6 */	data8 do_ni_hypercall		/* arch_7 */           /* 55 */	data8 do_ni_hypercall	data8 do_ni_hypercall	data8 do_ni_hypercall	data8 do_ni_hypercall	data8 do_ni_hypercall                                  /* 60 */	data8 do_ni_hypercall	data8 do_ni_hypercall	data8 do_ni_hypercall	// guard against failures to increase NR_hypercalls	.org ia64_hypercall_table + 8*NR_hypercalls#else	.rodata	.align 8	.globl sys_call_tablesys_call_table:	data8 sys_ni_syscall		//  This must be sys_ni_syscall!  See ivt.S.	data8 sys_exit				// 1025	data8 sys_read	data8 sys_write	data8 sys_open	data8 sys_close	data8 sys_creat				// 1030	data8 sys_link	data8 sys_unlink	data8 ia64_execve	data8 sys_chdir	data8 sys_fchdir			// 1035	data8 sys_utimes	data8 sys_mknod	data8 sys_chmod	data8 sys_chown	data8 sys_lseek				// 1040	data8 sys_getpid	data8 sys_getppid	data8 sys_mount	data8 sys_umount	data8 sys_setuid			// 1045	data8 sys_getuid	data8 sys_geteuid	data8 sys_ptrace	data8 sys_access	data8 sys_sync				// 1050	data8 sys_fsync	data8 sys_fdatasync	data8 sys_kill	data8 sys_rename	data8 sys_mkdir				// 1055	data8 sys_rmdir	data8 sys_dup	data8 sys_pipe	data8 sys_times	data8 ia64_brk				// 1060	data8 sys_setgid	data8 sys_getgid	data8 sys_getegid	data8 sys_acct	data8 sys_ioctl				// 1065	data8 sys_fcntl	data8 sys_umask	data8 sys_chroot	data8 sys_ustat	data8 sys_dup2				// 1070	data8 sys_setreuid	data8 sys_setregid	data8 sys_getresuid	data8 sys_setresuid	data8 sys_getresgid			// 1075	data8 sys_setresgid	data8 sys_getgroups	data8 sys_setgroups	data8 sys_getpgid	data8 sys_setpgid			// 1080	data8 sys_setsid	data8 sys_getsid	data8 sys_sethostname	data8 sys_setrlimit	data8 sys_getrlimit			// 1085	data8 sys_getrusage	data8 sys_gettimeofday	data8 sys_settimeofday	data8 sys_select	data8 sys_poll				// 1090	data8 sys_symlink	data8 sys_readlink	data8 sys_uselib	data8 sys_swapon	data8 sys_swapoff			// 1095	data8 sys_reboot	data8 sys_truncate	data8 sys_ftruncate	data8 sys_fchmod	data8 sys_fchown			// 1100	data8 ia64_getpriority	data8 sys_setpriority	data8 sys_statfs	data8 sys_fstatfs	data8 sys_gettid			// 1105	data8 sys_semget	data8 sys_semop	data8 sys_semctl	data8 sys_msgget	data8 sys_msgsnd			// 1110	data8 sys_msgrcv	data8 sys_msgctl	data8 sys_shmget	data8 sys_shmat	data8 sys_shmdt				// 1115	data8 sys_shmctl	data8 sys_syslog	data8 sys_setitimer	data8 sys_getitimer	data8 sys_ni_syscall			// 1120		/* was: ia64_oldstat */	data8 sys_ni_syscall					/* was: ia64_oldlstat */	data8 sys_ni_syscall					/* was: ia64_oldfstat */	data8 sys_vhangup	data8 sys_lchown	data8 sys_remap_file_pages		// 1125	data8 sys_wait4	data8 sys_sysinfo	data8 sys_clone	data8 sys_setdomainname	data8 sys_newuname			// 1130	data8 sys_adjtimex	data8 sys_ni_syscall					/* was: ia64_create_module */	data8 sys_init_module	data8 sys_delete_module	data8 sys_ni_syscall			// 1135		/* was: sys_get_kernel_syms */	data8 sys_ni_syscall					/* was: sys_query_module */	data8 sys_quotactl	data8 sys_bdflush	data8 sys_sysfs	data8 sys_personality			// 1140	data8 sys_ni_syscall		// sys_afs_syscall	data8 sys_setfsuid	data8 sys_setfsgid	data8 sys_getdents	data8 sys_flock				// 1145	data8 sys_readv	data8 sys_writev	data8 sys_pread64	data8 sys_pwrite64	data8 sys_sysctl			// 1150	data8 sys_mmap	data8 sys_munmap	data8 sys_mlock	data8 sys_mlockall	data8 sys_mprotect			// 1155	data8 ia64_mremap	data8 sys_msync	data8 sys_munlock	data8 sys_munlockall	data8 sys_sched_getparam		// 1160	data8 sys_sched_setparam	data8 sys_sched_getscheduler	data8 sys_sched_setscheduler	data8 sys_sched_yield	data8 sys_sched_get_priority_max	// 1165	data8 sys_sched_get_priority_min	data8 sys_sched_rr_get_interval	data8 sys_nanosleep	data8 sys_nfsservctl	data8 sys_prctl				// 1170	data8 sys_getpagesize	data8 sys_mmap2	data8 sys_pciconfig_read	data8 sys_pciconfig_write	data8 sys_perfmonctl			// 1175	data8 sys_sigaltstack	data8 sys_rt_sigaction	data8 sys_rt_sigpending	data8 sys_rt_sigprocmask	data8 sys_rt_sigqueueinfo		// 1180	data8 sys_rt_sigreturn	data8 sys_rt_sigsuspend	data8 sys_rt_sigtimedwait	data8 sys_getcwd	data8 sys_capget			// 1185	data8 sys_capset	data8 sys_sendfile64	data8 sys_ni_syscall		// sys_getpmsg (STREAMS)	data8 sys_ni_syscall		// sys_putpmsg (STREAMS)	data8 sys_socket			// 1190	data8 sys_bind	data8 sys_connect	data8 sys_listen	data8 sys_accept	data8 sys_getsockname			// 1195	data8 sys_getpeername	data8 sys_socketpair	data8 sys_send	data8 sys_sendto	data8 sys_recv				// 1200	data8 sys_recvfrom	data8 sys_shutdown	data8 sys_setsockopt	data8 sys_getsockopt	data8 sys_sendmsg			// 1205	data8 sys_recvmsg	data8 sys_pivot_root	data8 sys_mincore	data8 sys_madvise	data8 sys_newstat			// 1210	data8 sys_newlstat	data8 sys_newfstat	data8 sys_clone2	data8 sys_getdents64	data8 sys_getunwind			// 1215	data8 sys_readahead	data8 sys_setxattr	data8 sys_lsetxattr	data8 sys_fsetxattr	data8 sys_getxattr			// 1220	data8 sys_lgetxattr	data8 sys_fgetxattr	data8 sys_listxattr	data8 sys_llistxattr	data8 sys_flistxattr			// 1225	data8 sys_removexattr	data8 sys_lremovexattr	data8 sys_fremovexattr	data8 sys_tkill	data8 sys_futex				// 1230	data8 sys_sched_setaffinity	data8 sys_sched_getaffinity	data8 sys_set_tid_address	data8 sys_fadvise64_64	data8 sys_tgkill 			// 1235	data8 sys_exit_group	data8 sys_lookup_dcookie	data8 sys_io_setup	data8 sys_io_destroy	data8 sys_io_getevents			// 1240	data8 sys_io_submit	data8 sys_io_cancel	data8 sys_epoll_create	data8 sys_epoll_ctl	data8 sys_epoll_wait			// 1245	data8 sys_restart_syscall	data8 sys_semtimedop	data8 sys_timer_create	data8 sys_timer_settime	data8 sys_timer_gettime			// 1250	data8 sys_timer_getoverrun	data8 sys_timer_delete	data8 sys_clock_settime	data8 sys_clock_gettime	data8 sys_clock_getres			// 1255	data8 sys_clock_nanosleep	data8 sys_fstatfs64	data8 sys_statfs64	data8 sys_mbind	data8 sys_get_mempolicy			// 1260	data8 sys_set_mempolicy	data8 sys_mq_open	data8 sys_mq_unlink	data8 sys_mq_timedsend	data8 sys_mq_timedreceive		// 1265	data8 sys_mq_notify	data8 sys_mq_getsetattr	data8 sys_ni_syscall			// reserved for kexec_load	data8 sys_ni_syscall			// reserved for vserver	data8 sys_waitid			// 1270	data8 sys_add_key	data8 sys_request_key	data8 sys_keyctl	data8 sys_ioprio_set	data8 sys_ioprio_get			// 1275	data8 sys_ni_syscall	data8 sys_inotify_init	data8 sys_inotify_add_watch	data8 sys_inotify_rm_watch	.org sys_call_table + 8*NR_syscalls	// guard against failures to increase NR_syscalls#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -