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

📄 entry.s

📁 linux 内核源代码
💻 S
📖 第 1 页 / 共 3 页
字号:
	stdi		gr30,@(gr28,#REG_CCR)	movsg		lr  ,gr30	movsg		lcr ,gr31	stdi		gr30,@(gr28,#REG_LR)	sti		gr0 ,@(gr28,#REG_SYSCALLNO)	movsg		scr2,gr28#endif	rett		#0	# return via break.S__entry_return_singlestep:	movgs		gr2,ccr	lddi		@(gr28,#REG_GR(2)) ,gr2	ldi		@(gr28,#REG_SP)    ,sp	ldi		@(gr28,#REG_GR(28)),gr28	LEDS		0x67ff	break	.globl		__entry_return_singlestep_breaks_here__entry_return_singlestep_breaks_here:	nop################################################################################# return to a process interrupted in kernel space# - we need to consider preemption if that is enabled################################################################################	.balign		L1_CACHE_BYTES__entry_return_from_kernel_exception:	LEDS		0x6302	movsg		psr,gr23	ori		gr23,#PSR_PIL_14,gr23	movgs		gr23,psr	bra		__entry_return_direct	.balign		L1_CACHE_BYTES__entry_return_from_kernel_interrupt:	LEDS		0x6303	movsg		psr,gr23	ori		gr23,#PSR_PIL_14,gr23	movgs		gr23,psr#ifdef CONFIG_PREEMPT	ldi		@(gr15,#TI_PRE_COUNT),gr5	subicc		gr5,#0,gr0,icc0	beq		icc0,#0,__entry_return_direct__entry_preempt_need_resched:	ldi		@(gr15,#TI_FLAGS),gr4	andicc		gr4,#_TIF_NEED_RESCHED,gr0,icc0	beq		icc0,#1,__entry_return_direct	setlos		#PREEMPT_ACTIVE,gr5	sti		gr5,@(gr15,#TI_FLAGS)	andi		gr23,#~PSR_PIL,gr23	movgs		gr23,psr	call		schedule	sti		gr0,@(gr15,#TI_PRE_COUNT)	movsg		psr,gr23	ori		gr23,#PSR_PIL_14,gr23	movgs		gr23,psr	bra		__entry_preempt_need_resched#else	bra		__entry_return_direct#endif################################################################################# perform work that needs to be done immediately before resumption################################################################################	.globl		__entry_return_from_user_exception	.balign		L1_CACHE_BYTES__entry_return_from_user_exception:	LEDS		0x6501__entry_resume_userspace:	# make sure we don't miss an interrupt setting need_resched or sigpending between	# sampling and the RETT	movsg		psr,gr23	ori		gr23,#PSR_PIL_14,gr23	movgs		gr23,psr__entry_return_from_user_interrupt:	LEDS		0x6402	ldi		@(gr15,#TI_FLAGS),gr4	sethi.p		%hi(_TIF_WORK_MASK),gr5	setlo		%lo(_TIF_WORK_MASK),gr5	andcc		gr4,gr5,gr0,icc0	beq		icc0,#1,__entry_return_direct__entry_work_pending:	LEDS		0x6404	andicc		gr4,#_TIF_NEED_RESCHED,gr0,icc0	beq		icc0,#1,__entry_work_notifysig__entry_work_resched:	LEDS		0x6408	movsg		psr,gr23	andi		gr23,#~PSR_PIL,gr23	movgs		gr23,psr	call		schedule	movsg		psr,gr23	ori		gr23,#PSR_PIL_14,gr23	movgs		gr23,psr	LEDS		0x6401	ldi		@(gr15,#TI_FLAGS),gr4	sethi.p		%hi(_TIF_WORK_MASK),gr5	setlo		%lo(_TIF_WORK_MASK),gr5	andcc		gr4,gr5,gr0,icc0	beq		icc0,#1,__entry_return_direct	andicc		gr4,#_TIF_NEED_RESCHED,gr0,icc0	bne		icc0,#1,__entry_work_resched__entry_work_notifysig:	LEDS		0x6410	ori.p		gr4,#0,gr8	call		do_notify_resume	bra		__entry_resume_userspace	# perform syscall entry tracing__syscall_trace_entry:	LEDS		0x6320	setlos.p	#0,gr8	call		do_syscall_trace	ldi		@(gr28,#REG_SYSCALLNO),gr7	lddi		@(gr28,#REG_GR(8)) ,gr8	lddi		@(gr28,#REG_GR(10)),gr10	lddi.p		@(gr28,#REG_GR(12)),gr12	subicc		gr7,#nr_syscalls,gr0,icc0	bnc		icc0,#0,__syscall_badsys	bra		__syscall_call	# perform syscall exit tracing__syscall_exit_work:	LEDS		0x6340	andicc		gr4,#_TIF_SYSCALL_TRACE,gr0,icc0	beq		icc0,#1,__entry_work_pending	movsg		psr,gr23	andi		gr23,#~PSR_PIL,gr23	; could let do_syscall_trace() call schedule()	movgs		gr23,psr	setlos.p	#1,gr8	call		do_syscall_trace	bra		__entry_resume_userspace__syscall_badsys:	LEDS		0x6380	setlos		#-ENOSYS,gr8	sti		gr8,@(gr28,#REG_GR(8))	; save return value	bra		__entry_resume_userspace################################################################################# syscall vector table################################################################################	.section .rodataALIGN	.globl		sys_call_tablesys_call_table:	.long sys_restart_syscall	/* 0 - old "setup()" system call, used for restarting */	.long sys_exit	.long sys_fork	.long sys_read	.long sys_write	.long sys_open		/* 5 */	.long sys_close	.long sys_waitpid	.long sys_creat	.long sys_link	.long sys_unlink		/* 10 */	.long sys_execve	.long sys_chdir	.long sys_time	.long sys_mknod	.long sys_chmod		/* 15 */	.long sys_lchown16	.long sys_ni_syscall			/* old break syscall holder */	.long sys_stat	.long sys_lseek	.long sys_getpid		/* 20 */	.long sys_mount	.long sys_oldumount	.long sys_setuid16	.long sys_getuid16	.long sys_ni_syscall // sys_stime		/* 25 */	.long sys_ptrace	.long sys_alarm	.long sys_fstat	.long sys_pause	.long sys_utime		/* 30 */	.long sys_ni_syscall			/* old stty syscall holder */	.long sys_ni_syscall			/* old gtty syscall holder */	.long sys_access	.long sys_nice	.long sys_ni_syscall	/* 35 */	/* old ftime syscall holder */	.long sys_sync	.long sys_kill	.long sys_rename	.long sys_mkdir	.long sys_rmdir		/* 40 */	.long sys_dup	.long sys_pipe	.long sys_times	.long sys_ni_syscall			/* old prof syscall holder */	.long sys_brk		/* 45 */	.long sys_setgid16	.long sys_getgid16	.long sys_ni_syscall // sys_signal	.long sys_geteuid16	.long sys_getegid16	/* 50 */	.long sys_acct	.long sys_umount				/* recycled never used phys( */	.long sys_ni_syscall			/* old lock syscall holder */	.long sys_ioctl	.long sys_fcntl		/* 55 */	.long sys_ni_syscall			/* old mpx syscall holder */	.long sys_setpgid	.long sys_ni_syscall			/* old ulimit syscall holder */	.long sys_ni_syscall			/* old old uname syscall */	.long sys_umask		/* 60 */	.long sys_chroot	.long sys_ustat	.long sys_dup2	.long sys_getppid	.long sys_getpgrp	/* 65 */	.long sys_setsid	.long sys_sigaction	.long sys_ni_syscall // sys_sgetmask	.long sys_ni_syscall // sys_ssetmask	.long sys_setreuid16	/* 70 */	.long sys_setregid16	.long sys_sigsuspend	.long sys_ni_syscall // sys_sigpending	.long sys_sethostname	.long sys_setrlimit	/* 75 */	.long sys_ni_syscall // sys_old_getrlimit	.long sys_getrusage	.long sys_gettimeofday	.long sys_settimeofday	.long sys_getgroups16	/* 80 */	.long sys_setgroups16	.long sys_ni_syscall			/* old_select slot */	.long sys_symlink	.long sys_lstat	.long sys_readlink		/* 85 */	.long sys_uselib	.long sys_swapon	.long sys_reboot	.long sys_ni_syscall // old_readdir	.long sys_ni_syscall	/* 90 */	/* old_mmap slot */	.long sys_munmap	.long sys_truncate	.long sys_ftruncate	.long sys_fchmod	.long sys_fchown16		/* 95 */	.long sys_getpriority	.long sys_setpriority	.long sys_ni_syscall			/* old profil syscall holder */	.long sys_statfs	.long sys_fstatfs		/* 100 */	.long sys_ni_syscall			/* ioperm for i386 */	.long sys_socketcall	.long sys_syslog	.long sys_setitimer	.long sys_getitimer	/* 105 */	.long sys_newstat	.long sys_newlstat	.long sys_newfstat	.long sys_ni_syscall	/* obsolete olduname( syscall */	.long sys_ni_syscall	/* iopl for i386 */ /* 110 */	.long sys_vhangup	.long sys_ni_syscall	/* obsolete idle( syscall */	.long sys_ni_syscall	/* vm86old for i386 */	.long sys_wait4	.long sys_swapoff		/* 115 */	.long sys_sysinfo	.long sys_ipc	.long sys_fsync	.long sys_sigreturn	.long sys_clone		/* 120 */	.long sys_setdomainname	.long sys_newuname	.long sys_ni_syscall	/* old "cacheflush" */	.long sys_adjtimex	.long sys_mprotect	/* 125 */	.long sys_sigprocmask	.long sys_ni_syscall	/* old "create_module" */	.long sys_init_module	.long sys_delete_module	.long sys_ni_syscall	/* old "get_kernel_syms" */	.long sys_quotactl	.long sys_getpgid	.long sys_fchdir	.long sys_bdflush	.long sys_sysfs		/* 135 */	.long sys_personality	.long sys_ni_syscall	/* for afs_syscall */	.long sys_setfsuid16	.long sys_setfsgid16	.long sys_llseek		/* 140 */	.long sys_getdents	.long sys_select	.long sys_flock	.long sys_msync	.long sys_readv		/* 145 */	.long sys_writev	.long sys_getsid	.long sys_fdatasync	.long sys_sysctl	.long sys_mlock		/* 150 */	.long sys_munlock	.long sys_mlockall	.long sys_munlockall	.long sys_sched_setparam	.long sys_sched_getparam   /* 155 */	.long sys_sched_setscheduler	.long sys_sched_getscheduler	.long sys_sched_yield	.long sys_sched_get_priority_max	.long sys_sched_get_priority_min  /* 160 */	.long sys_sched_rr_get_interval	.long sys_nanosleep	.long sys_mremap	.long sys_setresuid16	.long sys_getresuid16	/* 165 */	.long sys_ni_syscall	/* for vm86 */	.long sys_ni_syscall	/* Old sys_query_module */	.long sys_poll	.long sys_nfsservctl	.long sys_setresgid16	/* 170 */	.long sys_getresgid16	.long sys_prctl	.long sys_rt_sigreturn	.long sys_rt_sigaction	.long sys_rt_sigprocmask	/* 175 */	.long sys_rt_sigpending	.long sys_rt_sigtimedwait	.long sys_rt_sigqueueinfo	.long sys_rt_sigsuspend	.long sys_pread64		/* 180 */	.long sys_pwrite64	.long sys_chown16	.long sys_getcwd	.long sys_capget	.long sys_capset           /* 185 */	.long sys_sigaltstack	.long sys_sendfile	.long sys_ni_syscall		/* streams1 */	.long sys_ni_syscall		/* streams2 */	.long sys_vfork            /* 190 */	.long sys_getrlimit	.long sys_mmap2	.long sys_truncate64	.long sys_ftruncate64	.long sys_stat64		/* 195 */	.long sys_lstat64	.long sys_fstat64	.long sys_lchown	.long sys_getuid	.long sys_getgid		/* 200 */	.long sys_geteuid	.long sys_getegid	.long sys_setreuid	.long sys_setregid	.long sys_getgroups	/* 205 */	.long sys_setgroups	.long sys_fchown	.long sys_setresuid	.long sys_getresuid	.long sys_setresgid	/* 210 */	.long sys_getresgid	.long sys_chown	.long sys_setuid	.long sys_setgid	.long sys_setfsuid		/* 215 */	.long sys_setfsgid	.long sys_pivot_root	.long sys_mincore	.long sys_madvise	.long sys_getdents64	/* 220 */	.long sys_fcntl64	.long sys_ni_syscall	/* reserved for TUX */	.long sys_ni_syscall	/* Reserved for Security */	.long sys_gettid	.long sys_readahead	/* 225 */	.long sys_setxattr	.long sys_lsetxattr	.long sys_fsetxattr	.long sys_getxattr	.long sys_lgetxattr	/* 230 */	.long sys_fgetxattr	.long sys_listxattr	.long sys_llistxattr	.long sys_flistxattr	.long sys_removexattr	/* 235 */	.long sys_lremovexattr	.long sys_fremovexattr 	.long sys_tkill	.long sys_sendfile64	.long sys_futex		/* 240 */	.long sys_sched_setaffinity	.long sys_sched_getaffinity	.long sys_ni_syscall	//sys_set_thread_area	.long sys_ni_syscall	//sys_get_thread_area	.long sys_io_setup	/* 245 */	.long sys_io_destroy	.long sys_io_getevents	.long sys_io_submit	.long sys_io_cancel	.long sys_fadvise64	/* 250 */	.long sys_ni_syscall	.long sys_exit_group	.long sys_lookup_dcookie	.long sys_epoll_create	.long sys_epoll_ctl	/* 255 */	.long sys_epoll_wait 	.long sys_remap_file_pages 	.long sys_set_tid_address 	.long sys_timer_create 	.long sys_timer_settime		/* 260 */ 	.long sys_timer_gettime 	.long sys_timer_getoverrun 	.long sys_timer_delete 	.long sys_clock_settime 	.long sys_clock_gettime		/* 265 */ 	.long sys_clock_getres 	.long sys_clock_nanosleep	.long sys_statfs64	.long sys_fstatfs64	.long sys_tgkill	/* 270 */	.long sys_utimes 	.long sys_fadvise64_64	.long sys_ni_syscall	/* sys_vserver */	.long sys_mbind	.long sys_get_mempolicy	.long sys_set_mempolicy	.long sys_mq_open	.long sys_mq_unlink	.long sys_mq_timedsend	.long sys_mq_timedreceive	/* 280 */	.long sys_mq_notify	.long sys_mq_getsetattr	.long sys_ni_syscall		/* reserved for kexec */	.long sys_waitid	.long sys_ni_syscall		/* 285 */ /* available */	.long sys_add_key	.long sys_request_key	.long sys_keyctl	.long sys_ioprio_set	.long sys_ioprio_get		/* 290 */	.long sys_inotify_init	.long sys_inotify_add_watch	.long sys_inotify_rm_watch	.long sys_migrate_pages	.long sys_openat		/* 295 */	.long sys_mkdirat	.long sys_mknodat	.long sys_fchownat	.long sys_futimesat	.long sys_fstatat64		/* 300 */	.long sys_unlinkat	.long sys_renameat	.long sys_linkat	.long sys_symlinkat	.long sys_readlinkat		/* 305 */	.long sys_fchmodat	.long sys_faccessat	.long sys_pselect6	.long sys_ppoll	.long sys_unshare		/* 310 */	.long sys_set_robust_list	.long sys_get_robust_list	.long sys_splice	.long sys_sync_file_range	.long sys_tee			/* 315 */	.long sys_vmsplice	.long sys_move_pages	.long sys_getcpu	.long sys_epoll_pwait	.long sys_utimensat		/* 320 */	.long sys_signalfd	.long sys_timerfd	.long sys_eventfd	.long sys_fallocatesyscall_table_size = (. - sys_call_table)

⌨️ 快捷键说明

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