From: SMTP%"system@lokidev.attmail.com" 28-AUG-1996 20:45:55.60 To: everhart@star.zko.dec.com CC: Subj: 3 ltr bounced from bort Hi, THis is my synopsis of my observation using the 2nd RAH/WBH technique in the previous msg. ------------ Hi, I've implemented the following RMS intercepts using my system service interception scheme: $CONNECT $FIND $GET $PUT $UPDATE Here's the template of the intercept for each of the above services. .IF NDF SS$_ARG_GTR_32_BITS .IF_TRUE SYSTEM_SERVICE NAME=RMS_CONNECT,- ; $CONNECT MODE=EXEC,- ; exec mode NARG=3,- ; max call args MARG=1,- ; min call args HOME_ARGS=TRUE,- ; home arguments MAX_ARGS=3 ; max homed args .IF_FALSE SYSTEM_SERVICE NAME=RMS_CONNECT,- ; $CONNECT MODE=EXEC,- ; exec mode NARG=3,- ; max call args MARG=1,- ; min call args QUAD_ARGS=TRUE ; 64 bit args ok $SETUP_CALLG_64 ARGCNT=3,ARGLST=R12 ; make 64 bit arglst .ENDC EVAX_LDQ R1,RAB(AP) ; get RAB adr (64 bit ready) PUSHL RAB$L_ROP(R1) ; save the current ROP bits BISL2 #,- ; set Read-Ahead/Write-behind RAB$L_ROP(R1) ; in the RAB's ROP field MOVAL SERVICE_ROUTINE,R0 ; use R0 since it's trashed ; by return status anyway .IF_32 .IF_64 EVAX_LDQ R1,RAB(AP) ; get RAB adr (64 bit ready) POPL RAB$L_ROP(R1) ; restore the saved ROP bits RET It seems that the overhead of the argument list stack creation and the overhead of the AMAC$EMUL_CALL_x for the EVAX_CALLG_64 is considerable. I think that the best thing if to go with the first scheme I outlined in a previous message -- that is, just intercept the $CONNECT and set the RAH/WBH bits and forget it. Now! I could write the intercept in MACRO64 and this overhead could be easily minimized. There'd be no need to stack the arguments at all. I would simply need to: SUBQ #32,SP ; make room for 4 QWs on stack ; also call std stack alignment LDAQ R1,RAB$L_ROP(R16) ; get address of RAB$L_ROP field STQ R1,(SP) ; save the address of ROP field LDL R22,(R1) ; get ROP field bits STL R22,8(SP) ; save original field bits LDQ R0,#(R31) ; put RAH/WBH mask in R0 BIS R22,R0,R22 ; set the bits STL R22,(R1) ; move new filed bits into place LDQ R27,ORIGINAL_SERVICE_RTN(R27) ; org rtn's linkage ptr STQ R26,16(SP) ; save this rtn's ret adr LDQ R26,PDSC$Q_ENTRY(R27) ; org rtn's entry address JSR R26,(R26) ; jump there and back LDQ R1,(SP) ; recover ROP field address LDL R22,8(SP) ; recover original ROP field bits STL R22,(R1) ; restore the ROP LDQ R26,16(SP) ; get my return address ADDQ #32,SP RET R26 I've never written a LEI in Macro64 but, since I just did all the effort above, maybe I should (at least) do one for academic purposes. :) VAXman- For without are dogs, and sorcerers, and whoremongers, and murderers, and idolaters, and whosoever loveth and maketh a lie. - Revelation - ================== RFC 822 Headers ================== Return-Path: system@lokidev.attmail.com Received: by galaxy.zko.dec.com (UCX V4.0-10B, OpenVMS V6.2 VAX); Wed, 28 Aug 1996 20:44:37 -0400 Received: from mdau.md.mt.np.els-gms.att.net by mail11.digital.com (8.7.5/UNX 1.2/1.0/WV) id UAA30662; Wed, 28 Aug 1996 20:18:22 -0400 (EDT) Date: Wed, 28 Aug 1996 20:15:18 -0500 From: system@lokidev.attmail.com ("Brian Schenkenberger, VAXman-") Received: from lokidev by attmail; Thu Aug 29 00:17 GMT 1996 Received: from alpha by oadec (OADEC V3.0); Wed Aug 28 20:15:18 EDT 1996 Subject: 3 ltr bounced from bort To: everhart@star.zko.dec.com X-VMS-Mail-To: OA%"attmail!internet!star.zko.dec.com!everhart" Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: