Date: Thu, 15 May 2003 00:22:56 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 31223 for review Message-ID: <200305150722.h4F7MuOq005076@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=31223 Change 31223 by marcel@marcel_nfs on 2003/05/15 00:22:34 Improve the "header" comment. While here, stop using a seperate section for the syscall code proper. There's not need for it. Affected files ... .. //depot/projects/ia64_epc/sys/ia64/ia64/syscall.s#19 edit Differences ... ==== //depot/projects/ia64_epc/sys/ia64/ia64/syscall.s#19 (text+ko) ==== @@ -32,13 +32,15 @@ /* * A process performs a syscall by performing an indirect call to the - * address stored in ar.k5. The contents ar.pfs and rp should be saved - * prior to the syscall in r9 and r10 respectively. The kernel will - * restore these values on return. The value of gp is preserved across - * the call. - * The address in ar.k5 is the start of the EPC gateway page. The code - * in the gateway page is primarily responsible for increasing the - * privilege level, but will also make sure we have a reliable psr. + * address stored in ar.k5. The contents of ar.pfs and rp should be + * saved prior to the syscall in r9 and r10 respectively. The kernel + * will restore these values on return. The value of gp is preserved + * across the call. This allows for small enough syscall stubs without + * getting too weird. + * The address in ar.k5 is the start of the EPC gateway page and also + * the syscall entry point. The syscall code in the gateway page is + * primarily responsible for increasing the privilege level, but will + * also make sure we have a reliable psr. * * A process defines: * r8 - syscall number @@ -53,10 +55,16 @@ * rp - restored from r10 * gp - preserved * - * The EPC defines: + * The EPC syscall code defines: * r11 - copy of psr.l * r14 - Kernel memory stack * r15 - Kernel register stack + * + * Also in the gateway page are the signal trampolines. As such, stacks + * don't have to be made executable per se. Since debuggers have a need + * to know about trampolines, we probably need to define a table of + * vectors or something along those lines so that debuggers can get the + * information they need and we have the freedom to move code around. */ .section .text.gateway, "ax" @@ -228,7 +236,7 @@ .align PAGE_SIZE - .section .text.syscall, "ax" + .text ENTRY(epc_syscall, 8) .prologue
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200305150722.h4F7MuOq005076>