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

📄 gate.s

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 S
字号:
/* ------------------------------------------------------------------------------ * * Linux/PARISC Project (http://www.thepuffingroup.com/parisc) * * System call entry code Copyright (c) Matthew Wilcox 1999 <willy@bofh.ai> * Licensed under the GNU GPL. * thanks to Philipp Rumpf, Mike Shaver and various others * sorry about the wall, puffin.. */#define __ASSEMBLY__#include <asm/assembly.h>#include <asm/offset.h>#include <asm/unistd.h>#include <asm/errno.h>	.text	.import hpux_call_table	.import hpux_syscall_exit,code	.export hpux_gateway_page	.align 4096hpux_gateway_page:	nop	mfsp	%sr7,%r1			;! we must set sr3 to the space	mtsp	%r1,%sr3			;! of the user before the gate#ifdef __LP64__#warning NEEDS WORK for 64-bit#endif	ldw	-64(%r30), %r28			;! 8th argument	ldw	-60(%r30), %r19			;! 7th argument	ldw	-56(%r30), %r20			;! 6th argument	ldw	-52(%r30), %r21			;! 5th argument	gate	.+8, %r0			;! become privileged	mtsp	%r0,%sr4			;! get kernel space into sr4	mtsp	%r0,%sr5			;! get kernel space into sr5	mtsp	%r0,%sr6			;! get kernel space into sr6	mtsp	%r0,%sr7			;! get kernel space into sr7	mfctl	%cr30,%r1			;! get the kernel task ptr	mtctl	%r0,%cr30			;! zero it (flag)	STREG	%r30,TASK_PT_GR30(%r1)		;! preserve userspace sp	STREG	%r2,TASK_PT_GR2(%r1)		;! preserve rp	STREG	%r27,TASK_PT_GR27(%r1)		;! user dp	STREG	%r31,TASK_PT_GR31(%r1)		;! preserve syscall return ptr	loadgp					;! setup kernel dp	ldo	TASK_SZ_ALGN+64(%r1),%r30	;! set up kernel stack	stw	%r21, -52(%r30)			;! 5th argument	stw	%r20, -56(%r30)			;! 6th argument	stw	%r19, -60(%r30)			;! 7th argument	stw	%r28, -64(%r30)			;! 8th argument	ldil	L%hpux_call_table, %r21	ldo	R%hpux_call_table(%r21), %r21	comiclr,>>=	__NR_HPUX_syscalls, %r22, %r0	b,n	syscall_nosys	ldwx,s	%r22(%r21), %r21	ldil	L%hpux_syscall_exit,%r2	be	0(%sr7,%r21)	ldo	R%hpux_syscall_exit(%r2),%r2syscall_nosys:	ldil	L%hpux_syscall_exit,%r1	be	R%hpux_syscall_exit(%sr7,%r1)	ldo	-ENOSYS(%r0),%r28	.align 4096	.export end_hpux_gateway_pageend_hpux_gateway_page:

⌨️ 快捷键说明

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