[5580] in Athena Bugs

home help back first fref pref prev next nref lref last post

changes to RT SYS.h

daemon@ATHENA.MIT.EDU (John Carr)
Thu Jul 19 16:36:18 1990

To: bugs@ATHENA.MIT.EDU
Date: Thu, 19 Jul 90 16:36:06 EDT
From: John Carr <jfc@ATHENA.MIT.EDU>


This patch
	. puts all the syscall code into the text segment

	. comments an apparently noop instruction (r0 is loaded,
	  but the syscall calling convention doesn't use it)

	. makes the error return branch from the syscall faster/smaller

*** /source/bsd-4.3/rt/lib/libc/ca/sys/SYS.h	Tue Sep 19 14:21:07 1989
--- SYS.h	Thu Jul 19 16:21:45 1990
***************
*** 21,33 ****
  .text; .globl _./**/x; _./**/x: stm r14,ARG3_OFFSET(r1); ai r1,-REG_SAVE_SZ;\
  get r14,$_/**/x; mr r0,r15 ; bali r15,mcount; ai r1,REG_SAVE_SZ; lm r14,ARG3_OFFSET(r1);
  #else
! #define ENTRY(x) .data; .align 2; .globl _/**/x;_/**/x: .long _./**/x;\
! .text; .globl _./**/x; _./**/x:; 
  #endif
  
! #define SYSCALL(x) ENTRY(x); SVC(x) ; bntbr r15;	/* no-error return */\
! .globl _errno; get r5,$_errno; sts r2,0(r5); get r2,$-1; br r15; TTNOFRM
  #define SYSCODE(x) ENTRY(x)
! #define SVC(x) get r0,0(sp); svc SYS_/**/x(r0)
  #define TTNOFRM .align 2; .byte 0xdf, D_NOFRAME, 0xdf, 0;
  .globl .oVncs; .set .oVncs,0 
--- 21,35 ----
  .text; .globl _./**/x; _./**/x: stm r14,ARG3_OFFSET(r1); ai r1,-REG_SAVE_SZ;\
  get r14,$_/**/x; mr r0,r15 ; bali r15,mcount; ai r1,REG_SAVE_SZ; lm r14,ARG3_OFFSET(r1);
  #else
! #define ENTRY(x) .text; .align 2; .globl _/**/x;_/**/x: .long _./**/x;\
! .globl _./**/x; _./**/x:; 
  #endif
  
! /* The ls r0,0(r1) forces a page fault and a stack grow if the allocated
!    stack does not extend to the bottom of the current stack frame.  */
! #define SYSCALL(x) ENTRY(x); ls r0,0(r1); SVC(x) ; bntbr r15;	/* no-error return */\
! .globl _errno; store r2,_errno,r5; brx r15; cal r2,-1(r0) TTNOFRM
  #define SYSCODE(x) ENTRY(x)
! #define SVC(x) svc SYS_/**/x(r0)
  #define TTNOFRM .align 2; .byte 0xdf, D_NOFRAME, 0xdf, 0;
  .globl .oVncs; .set .oVncs,0 

home help back first fref pref prev next nref lref last post