00001 ;++
00002 ;
00003 ; 
Copyright (c) 1989  Microsoft Corporation
00004 ;
00005 ; Module 
Name:
00006 ;
00007 ;    alr.inc
00008 ;
00009 ; Abstract:
00010 ;
00011 ;    This inlcude 
file defines all 
the equates and 
macros specifically
00012 ;    used 
for ALR Multiprocessor system implementation.
00013 ;
00014 ; Author:
00015 ;
00016 ;    Shie-Lin Tzong (shielint) 29-Oct-1990
00017 ;
00018 ; Environment:
00019 ;
00020 ;    Kernel mode 
only.
00021 ;
00022 ; Revision 
History:
00023 ;
00024 ;--
00025 
00026 ;
00027 ; 
Virtual address map 
for ALR CBUS IO and address space
00028 ;   CBUS memory address space starting from 64MB to (128MB - 1)
00029 ;   CBUS IO space starting from 128MB to (192MB - 1).  We are interested
00030 ;       in 
the first 4MB 
only (at least 
for now).
00031 ; 
00032 
00033 CBUS_ADDR_START_PHYS     equ    4000000h
00034 
00035 CBUS_IO_SPACE_START      equ    90000000h
00036 CBUS_IO_SPACE_START_PHYS equ    8000000h
00037 CBUS_IO_SPACE_SIZE       equ    400000h
00038 
00039 ;
00040 ;CPU 
ID for CBUS PEs and common 
functions for PEs
00041 ;
00042 
00043 ALLCPUID        equ     0Fh             ; 
ID to address all 
the slaves
00044 BASECPUID       equ     0Eh             ; Base CPU 
ID
00045 
00046 PE_CRESET       equ     0               ; Clear Reset
00047 PE_SRESET       equ     1               ; Set Reset
00048 PE_CONTEND      equ     2               ; Contend (Place slot number on ARB0-3
00049                                         ; lines)
00050 PE_SETIDA       equ     3               ; Set 
ID value on winning processor
00051 PE_CSWI         equ     4               ; Clear software interrupt
00052 PE_SSWI         equ     5               ; Set software interrupt
00053 PE_CNMI         equ     6               ; Clear NMI
00054 PE_SNMI         equ     7               ; Set NMI
00055 PE_SLED         equ     8               ; Set LED
00056 PE_CLED         equ     9               ; Clear LED
00057 
00058 ;
00059 ; Miscs CBUS definitions
00060 ;
00061 
00062 ArbitrateRegister       equ     0F1h
00063 ArbitrateMask           equ     0Fh     ; Lower 4 bits of Arbitrate Register
00064                                         
00065 
00066 ;
00067 ; Macros to access CBUS I/O space
00068 ;
00069 ; CBUS_IO_ACCESS func, cpuid
00070 ;   func - 
the function which will be applied to PEs
00071 ;   cpuid - 
the desired PE.  If not specified, 
the cpuid 
is in AL 
register.
00072 ;
00073 
00074 CBUS_IO_ACCESS  macro   func, cpuid
00075 
00076 ifnb    <cpuid>
00077         mov     eax, (cpuid SHL 18) + CBUS_IO_SPACE_START + (func SHL 4)
00078 
else
00079         movzx   eax, al
00080         shl     eax, 18
00081         add     eax, CBUS_IO_SPACE_START + (func SHL 4)
00082 endif
00083         or      byte ptr [eax], 0ffh
00084 
00085                 endm
00086 
00087