1
2
3/* ******************************************
4 * SimOS SRM Console
5 *
6 * Derived from Lance Berc's SRM console
7 * for the SRC XXMïż½Machine
8 * ******************************************/
9
10
11typedef unsigned long long uint64_t;
12typedef unsigned long long uint64;
13typedef unsigned int uint32_t;
14typedef unsigned int uint32;
15
16#define CONSOLE
17#include "alpha_access.h"
18#include "machine_defs.h"
18
19#if 0
20#include "new_aouthdr.h"
21#include "srcmax.h"
22#endif
23
24/* from ../h */
25#include "lib.h"
26#include "rpb.h"
27#include "cserve.h"
28
29#define CONS_INT_TX 0x01 /* interrupt enable / state bits */
30#define CONS_INT_RX 0x02
31
32#define KSEG 0xfffffc0000000000
33#define K1BASE 0xfffffc8000000000
34#define KSEG_TO_PHYS(x)(((ul)x) & ~KSEG)
35
37#define CDR ((volatile DevConsoleRegisters *) \
38 (__MAGIC_ZONE(0, 0, MAGIC_ZONE_BDOOR_DEV) + __MAGIC_BDOOR_CNSLE_OFFS))
36#define ALPHA_ACCESS_BASE 0xfffffc8000a00000
37
38
39#define PHYS_TO_K1(_x) (K1BASE|(_x))
40
41#define AOUT_LOAD_ADDR (KSEG|0xf000)
42
43#define ROUNDUP8(x) ((ul)(((ul)x)+7) & ~7)
44#define ROUNDUP128(x) ((ul)(((ul)x)+127) & ~127)

--- 66 unchanged lines hidden (view full) ---

111{
112#if 0
113 CDR->intr_status =(DevRegister)(DEV_CNSLE_RX_INTR |DEV_CNSLE_TX_INTR);
114#endif
115}
116
117char GetChar()
118{
121 struct AlphaAccess *k1Conf = (struct AlphaAccess *)(__MAGIC_ZONE(0, 0, MAGIC_ZONE_EV5_ALIAS));
119 struct AlphaAccess *k1Conf = (struct AlphaAccess *)(ALPHA_ACCESS_BASE);
120 return k1Conf->inputChar;
121}
122
123void PutChar(char c)
124{
125#if 0
126 CDR->data = c;
127#endif
128#if 0
129 *(int*) PHYS_TO_K1(SLOT_D_COM1<<5) = c;
130#endif
133 struct AlphaAccess *k1Conf = (struct AlphaAccess *)(__MAGIC_ZONE(0, 0, MAGIC_ZONE_EV5_ALIAS));
131 struct AlphaAccess *k1Conf = (struct AlphaAccess *)(ALPHA_ACCESS_BASE);
132 k1Conf->outputChar = c;
133
134}
135
136
137int
138passArgs(int argc)
139{ return 0; }
140
141int
142main(int argc, char **argv)
143{
144 int x,i;
147 struct AlphaAccess *k1Conf = (struct AlphaAccess *)(__MAGIC_ZONE(0, 0, MAGIC_ZONE_EV5_ALIAS));
145 struct AlphaAccess *k1Conf = (struct AlphaAccess *)(ALPHA_ACCESS_BASE);
146 ui *k1ptr,*ksegptr;
147
148
149 InitConsole();
150 printf("SimOS console \n");
151 /*
152 * get configuration from backdoor
153 */

--- 667 unchanged lines hidden (view full) ---

821 /*
822 * MP bootstrap
823 */
824
825 {
826 int i;
827 for (i=1;i<simosConf.numCPUs;i++) {
828 volatile struct AlphaAccess *k1Conf = (volatile struct AlphaAccess *)
831 (__MAGIC_ZONE(0, 0, MAGIC_ZONE_EV5_ALIAS));
829 (ALPHA_ACCESS_BASE);
830 SpinLock(&theLock);
831 printf("Bootstraping CPU %d with sp=0x%x \n",
832 i,bootStrapImpure[i]);
833 SpinUnlock(&theLock);
834 k1Conf->bootStrapImpure = bootStrapImpure[i];
835 k1Conf->bootStrapCPU = i;
836 }
837 }

--- 125 unchanged lines hidden (view full) ---

963} deviceState[32];
964
965#define BOOTDEVICE_NAME "SCSI 1 0 0 1 100 0"
966
967void
968DeviceOperation(long op, long channel, long count, long address, long block)
969{
970 struct AlphaAccess *k1Conf = (struct AlphaAccess *)
973 (__MAGIC_ZONE(0, 0, MAGIC_ZONE_EV5_ALIAS));
971 (ALPHA_ACCESS_BASE);
972
973 long pAddr;
974
975#if 0
976 printf("Console::DeviceRead count=0x%x address=0x%x block=0x%x\n",
977 count,address,block);
978#endif
979

--- 295 unchanged lines hidden ---