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

📄 entry.s

📁 上传linux-jx2410的源代码
💻 S
📖 第 1 页 / 共 3 页
字号:
	/*	 * Setup stack and call ia64_do_signal.  Note that pSys and pNonSys need to	 * be set up by the caller.  We declare 8 input registers so the system call	 * args get preserved, in case we need to restart a system call.	 */ENTRY(handle_signal_delivery)	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8)	alloc loc1=ar.pfs,8,2,3,0 // preserve all eight input regs in case of syscall restart!	mov r9=ar.unat	mov loc0=rp				// save return address	mov out0=0				// there is no "oldset"	adds out1=0,sp				// out1=&sigscratch(pSys)	mov out2=1				// out2==1 => we're in a syscall	;;(pNonSys) mov out2=0				// out2==0 => not a syscall	.fframe 16	.spillpsp ar.unat, 16			// (note that offset is relative to psp+0x10!)	st8 [sp]=r9,-16				// allocate space for ar.unat and save it	.body	br.call.sptk.many rp=ia64_do_signal.ret15:	.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(handle_signal_delivery)GLOBAL_ENTRY(sys_rt_sigsuspend)	.prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(8)	alloc loc1=ar.pfs,8,2,3,0 // preserve all eight input regs in case of syscall restart!	mov r9=ar.unat	mov loc0=rp				// save return address	mov out0=in0				// mask	mov out1=in1				// sigsetsize	adds out2=0,sp				// out2=&sigscratch	;;	.fframe 16	.spillpsp ar.unat, 16			// (note that offset is relative to psp+0x10!)	st8 [sp]=r9,-16				// allocate space for ar.unat and save it	.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)	alloc r2=ar.pfs,0,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...	;;	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)GLOBAL_ENTRY(ia64_prepare_handle_unaligned)	//	// r16 = fake ar.pfs, we simply need to make sure	// privilege is still 0	//	mov r16=r0	.prologue	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)	.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 ia64_shmat	data8 sys_shmdt				// 1115	data8 sys_shmctl	data8 sys_syslog	data8 sys_setitimer	data8 sys_getitimer	data8 ia64_oldstat			// 1120	data8 ia64_oldlstat	data8 ia64_oldfstat	data8 sys_vhangup	data8 sys_lchown	data8 sys_vm86				// 1125	data8 sys_wait4	data8 sys_sysinfo	data8 sys_clone	data8 sys_setdomainname	data8 sys_newuname			// 1130	data8 sys_adjtimex	data8 ia64_create_module	data8 sys_init_module	data8 sys_delete_module	data8 sys_get_kernel_syms		// 1135	data8 sys_query_module	data8 sys_quotactl	data8 sys_bdflush	data8 sys_sysfs	data8 sys_personality			// 1140	data8 ia64_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_pread	data8 sys_pwrite	data8 sys_sysctl			// 1150	data8 sys_mmap	data8 sys_munmap	data8 sys_mlock	data8 sys_mlockall	data8 sys_mprotect			// 1155	data8 sys_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_sendfile	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 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1220	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1225	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1230	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1235	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1240	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1245	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1250	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1255	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1260	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1265	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1270	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall			// 1275	data8 ia64_ni_syscall	data8 ia64_ni_syscall	data8 ia64_ni_syscall

⌨️ 快捷键说明

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