EVXR64 29-NOV-1994 09:53:02 MACRO-64 V1.1-087 Page 1 28-NOV-1994 21:51:55 SYS$SYSDEVICE:[EVERHART.JT]EVXR64.M64;9 1 .title evxr64 2 ; do REI. One parameter given, namely the PSL desired. 3 ; Expected to be called from kernel 4 ; 5 ; Uses a nonstandard call internally to get the address on the 6 ; stack right. Assumes the Alpha Architecture manual desc. of 7 ; what PAL REI code does is accurate. 0000000000000001 0000 8 evax=1 0000000000000001 0000 9 alpha=1 0000000000000001 0000 10 bigpage=1 0000000000000020 0000 11 addressbits=32 0000 12 .library "sys$library:lib.mlb" 0000 13 driver_code 00000000 1 .PSECT $$$115_LINKAGE,5,PIC,CON,REL,LCL,NOSHR,NOEXE,RD,WRT 00000000 1 .PSECT $$$115_DRIVER,5,NOWRT,EXE,PIC 0000 29 evxr64:: 43DF0412 0000 30 addq sp,r31,r18 ;to check initial sp 43C8153E 0004 31 subq sp,#64,sp ;need 8 cells B61E0038 0008 32 stq r16,56(sp) ;save user's psl B45E0000 000C 33 stq r2,00(sp) B47E0008 0010 34 stq r3,08(sp) B49E0010 0014 35 stq r4,16(sp) B4BE0018 0018 36 stq r5,24(sp) B4DE0020 001C 37 stq r6,32(sp) B4FE0028 0020 38 stq r7,40(sp) ;preserve r2-r7 0024 39 ;48(sp) needs to be the return pc 40 .begin_exact D2200000 0024 41 bsr r17,1$ ;address of 1$ instruction to r17 00000086 0028 42 1$: imb 42229411 002C 43 addq r17,#<2$-1$>,r17 ;get address of 2$ B63E0030 0030 44 stq r17,48(sp) 00000086 0034 45 imb ; pal code rei doesn't do barrier so do here 00000092 0038 46 rei ;via palcode 003C 47 2$: ; should get here with caller's psl 00000086 003C 48 imb 47FF041F 0040 49 bis r31,r31,r31 ;ensure we can break somewhere 50 .end_exact 6BFA0000 0044 51 jmp r31,(r26) ; return to caller. 0048 52 .end EVXR64 Machine Code Listing 29-NOV-1994 09:53:02 MACRO-64 V1.1-087 Page 2 $$$115_DRIVER 28-NOV-1994 21:51:55 SYS$SYSDEVICE:[EVERHART.JT]EVXR64.M64;9 .PSECT $$$115_DRIVER, 5, PIC, CON, REL, LCL,- NOSHR, EXE, RD, NOWRT 0000 EVXR64:: 43DF0412 0000 ADDQ SP, R31, R18 ; SP, R31, R18 ; 000030 43C8153E 0004 SUBQ SP, 64, SP ; SP, 64, SP ; 000031 B61E0038 0008 STQ R16, 56(SP) ; R16, 56(SP) ; 000032 B45E0000 000C STQ R2, (SP) ; R2, (SP) ; 000033 B47E0008 0010 STQ R3, 8(SP) ; R3, 8(SP) ; 000034 B49E0010 0014 STQ R4, 16(SP) ; R4, 16(SP) ; 000035 B4BE0018 0018 STQ R5, 24(SP) ; R5, 24(SP) ; 000036 B4DE0020 001C STQ R6, 32(SP) ; R6, 32(SP) ; 000037 B4FE0028 0020 STQ R7, 40(SP) ; R7, 40(SP) ; 000038 D2200000 0024 BSR R17, 1$ ; R17, 1$ ; 000041 0028 1$: 00000086 0028 IMB ; ; 000042 42229411 002C ADDQ R17, 20, R17 ; R17, 20, R17 ; 000043 B63E0030 0030 STQ R17, 48(SP) ; R17, 48(SP) ; 000044 00000086 0034 IMB ; ; 000045 00000092 0038 REI ; ; 000046 003C 2$: 00000086 003C IMB ; ; 000048 47FF041F 0040 BIS R31, R31, R31 ; R31, R31, R31 ; 000049 6BFA0000 0044 JMP R31, R26 ; R31, R26 ; 000051 Routine Size: 72 bytes, Routine Base: $$$115_DRIVER + 0000 Total lines assembled: 273 Command: MACRO/ALPHA/LIST/SHOW=BINARY/MACH EVXR64