changeset 9700266d52f4 in /z/repo/m5
details: http://repo.m5sim.org/m5?cmd=changeset;node=9700266d52f4
description:
Get the console code to compile correctly
Add support for some thigns that M5 needs
Make this better support Tru64 v5.1
console/Makefile:
I couldn't figure out the old build system since I was missing
a bunch of tools at the time, so I kinda rewrote it.
console/console.c:
Get the includes right, and make things compile
little bit of cleanup along the way
console/paljtokern.s:
formatting junk
console/printf.c:
Formatting
get const right
h/lib.h:
fiddle with the includes that we need
console/console.c:
Get the BOOTDEVICE_NAME right
Add a bit of support for grabbing console environment variables
diffstat:
system/alpha/console/Makefile | 55 +-
system/alpha/console/console.c | 187 ++++++++-
system/alpha/console/paljtokern.s | 10 +-
system/alpha/console/paljtoslave.tmp | 92 -----
system/alpha/console/printf.c | 32 +-
system/alpha/h/lib.h | 16 +-
system/alpha/h/machine_defs.h | 635 +++++++++++++++++++++++++++++++++++
7 files changed, 854 insertions(+), 173 deletions(-)
diffs (truncated from 1261 to 300 lines):
diff -r 60051d2262c2 -r 9700266d52f4 system/alpha/console/Makefile
--- a/system/alpha/console/Makefile Fri Nov 14 10:52:42 2003 -0500
+++ b/system/alpha/console/Makefile Fri Nov 14 12:32:52 2003 -0500
@@ -2,43 +2,48 @@
all: console
DBMENTRY = fffffc0000010000
-INCLUDES = -I$(PALCODE) -I$(INCLUDEH) -I$(SIMTOOLS)/cpus-alpha/simos
-#-I/udir/bugnion/ebfw/h -I/udir/bugnion/ebfw/palcode/xxm
+INCLUDES = -I$(PALCODE) -I$(INCLUDEH) -I$(M5)/dev
SOURDIR = ./
-EB_TOOLBOX = /wrl/proj/simos/bin/tools/osf
PALCODE = ../palcode
INCLUDEH = ../h
dbmentry.o: dbmentry.s
- $(AS) $(INCLUDES) -o $*.o $*.s
+ $(AS) $(INCLUDES) -nointrinsics -o $*.o $*.s
console.o: console.c
- $(CC) -g3 $(INCLUDES) -o $*.o -c $*.c
+ $(CC) -g3 $(INCLUDES) -nointrinsics -o $*.o -c $*.c
printf.o: printf.c
- $(CC) -g3 $(INCLUDES) -o $*.o -c $*.c
+ $(CC) -g3 $(INCLUDES) -nointrinsics -o $*.o -c $*.c
-paljtokern.o: $(SOURCEDIR)paljtokern.s
- rm $(OBJDIR)paljtokern.i
- cpp -I$(PALCODE) $(SOURCEDIR)paljtokern.s $(OBJDIR)paljtokern.i
- $(EB_TOOLBOX)/gas -21164 -o $(OBJDIR)paljtokern.aout.o
$(OBJDIR)paljtokern.i
- $(EB_TOOLBOX)/astrip -a $(OBJDIR)paljtokern.aout.o
$(OBJDIR)paljtokern.strip
- $(EB_TOOLBOX)/strip2array $(OBJDIR)paljtokern.strip
$(OBJDIR)paljtokern.c
- $(CC) $(CCFLAGS) -o $(OBJDIR)paljtokern.o -c $(INCLUDES)
$(OBJDIR)paljtokern.c
+paljtokern.s.o: paljtokern.s
+ g++ -I ../palcode -E -P -nostdinc -nostdinc++ -x c++ paljtokern.s | \
+ gas -m 21164 -o paljtokern.s.o
-paljtoslave.o: $(SOURCEDIR)paljtoslave.s
- rm $(OBJDIR)paljtoslave.i
- cpp -I$(PALCODE) $(SOURCEDIR)paljtoslave.s $(OBJDIR)paljtoslave.i
- $(EB_TOOLBOX)/gas -21164 -o $(OBJDIR)paljtoslave.aout.o
$(OBJDIR)paljtoslave.i
- $(EB_TOOLBOX)/astrip -a $(OBJDIR)paljtoslave.aout.o
$(OBJDIR)paljtoslave.strip
- $(EB_TOOLBOX)/strip2array $(OBJDIR)paljtoslave.strip
$(OBJDIR)paljtoslave.tmp
- sed -e 's/palJToKern/palJToSlave/' $(OBJDIR)paljtoslave.tmp
>$(OBJDIR)paljtoslave.c
- $(CC) $(CCFLAGS) -o $(OBJDIR)paljtoslave.o -c $(INCLUDES)
$(OBJDIR)paljtoslave.c
+paljtoslave.s.o: paljtoslave.s
+ g++ -I ../palcode -E -P -nostdinc -nostdinc++ -x c++ paljtoslave.s | \
+ gas -m 21164 -o paljtoslave.s.o
-console: console.o dbmentry.o printf.o paljtokern.o paljtoslave.o
- $(LD) -o console -N -T $(DBMENTRY) -non_shared dbmentry.o console.o \
- printf.o paljtokern.o paljtoslave.o -lc
+paljtokern.c: paljtokern.s.o
+ echo 'unsigned int palJToKern[] = {' > paljtokern.c
+ dis paljtokern.s.o | awk '{print "0x"$$2","}' >> paljtokern.c
+ echo "0x0\n};" >> paljtokern.c
+
+paljtoslave.c: paljtoslave.s.o
+ echo "unsigned int palJToSlave[] = {" > paljtoslave.c
+ dis paljtoslave.s.o | awk '{print "0x"$$2","}' >> paljtoslave.c
+ echo "0x0\n};" >> paljtoslave.c
+
+paljtokern.c.o: paljtokern.c
+ $(CC) -g3 -nointrinsics -o paljtokern.c.o -c paljtokern.c
+
+paljtoslave.c.o: paljtoslave.c
+ $(CC) -g3 -nointrinsics -o paljtoslave.c.o -c paljtoslave.c
+
+console: console.o dbmentry.o printf.o paljtokern.c.o paljtoslave.c.o
+ $(LD) -o console -N -T $(DBMENTRY) -non_shared \
+ dbmentry.o console.o printf.o paljtokern.c.o paljtoslave.c.o -lc
clean:
- rm *.o; rm console; rm *.strip; rm paljtokern.c paljtoslave.c; touch
paljtokern.i paljtoslave.i
+ rm -f *.o console *.strip paljtokern.c paljtoslave.c
diff -r 60051d2262c2 -r 9700266d52f4 system/alpha/console/console.c
--- a/system/alpha/console/console.c Fri Nov 14 10:52:42 2003 -0500
+++ b/system/alpha/console/console.c Fri Nov 14 12:32:52 2003 -0500
@@ -10,10 +10,14 @@
/* from simos */
typedef unsigned long long uint64;
+typedef unsigned int uint32;
+
+#define CONSOLE
+#include "alpha_access.h"
#include "machine_defs.h"
+
+#if 0
#include "new_aouthdr.h"
-#include "alpha_access.h"
-#if 0
#include "srcmax.h"
#endif
@@ -64,7 +68,7 @@
void SlaveLoop(int cpu);
-AlphaAccess simosConf;
+struct AlphaAccess simosConf;
/* **************************************************************
* Console callbacks use VMS calling conventions
@@ -112,6 +116,12 @@
#endif
}
+char GetChar()
+{
+ struct AlphaAccess *k1Conf = (struct AlphaAccess *)(__MAGIC_ZONE(0, 0,
MAGIC_ZONE_EV5_ALIAS));
+ return 0;
+}
+
void PutChar(char c)
{
#if 0
@@ -120,22 +130,21 @@
#if 0
*(int*) PHYS_TO_K1(SLOT_D_COM1<<5) = c;
#endif
- AlphaAccess *k1Conf = (AlphaAccess *)(__MAGIC_ZONE(0, 0,
MAGIC_ZONE_EV5_ALIAS));
+ struct AlphaAccess *k1Conf = (struct AlphaAccess *)(__MAGIC_ZONE(0, 0,
MAGIC_ZONE_EV5_ALIAS));
k1Conf->outputChar = c;
}
-int passArgs(int argc)
-{
- ;
-}
+int
+passArgs(int argc)
+{ return 0; }
-
+int
main(int argc, char **argv)
{
int x,i;
- AlphaAccess *k1Conf = (AlphaAccess *)(__MAGIC_ZONE(0, 0,
MAGIC_ZONE_EV5_ALIAS));
+ struct AlphaAccess *k1Conf = (struct AlphaAccess *)(__MAGIC_ZONE(0, 0,
MAGIC_ZONE_EV5_ALIAS));
ui *k1ptr,*ksegptr;
@@ -175,7 +184,8 @@
*/
struct rpb xxm_rpb = {
NULL, /* 000: physical self-reference */
- 'H'|('W'<<8)|('R'<<16)|('P'<<24)|('B'<<32), /* 008: contains string "HWRPB"
*/
+ ((long)'H') | (((long)'W') << 8) | (((long)'R') << 16) |
+ ((long)'P' << 24) | (((long)'B') << 32), /* 008: contains string "HWRPB" */
6, /* 010: HWRPB version number */
/* the byte count is wrong, but who needs it? - lance */
0, /* 018: bytes in RPB perCPU CTB CRB MEDSC */
@@ -243,7 +253,7 @@
0x4000, /* 098: phys addr of palcode mem space
*/
0x2000, /* 0A0: phys addr of palcode scratch
space */
(2 << 16) | (5 << 8) | 1, /* 0A8: PALcode rev required */
- 5|(2<<32), /* 0B0: processor type */
+ 5 | (2L << 32), /* 0B0: processor type */
7, /* 0B8: processor variation */
'D'|('a'<<8)|('v'<<16)|('e'<<24), /* 0C0: processor revision */
{'D','a','v','e','C','o','n','r','o','y',0,0,0,0,0,0}, /* 0C8: proc
serial num: 10 ascii chars */
@@ -371,6 +381,8 @@
ul *third_rpb = 0;
ul *reservedFixup = 0;
+int strcpy(char *dst, char *src);
+
struct rpb *rpb;
unixBoot(int go, int argc, char **argv)
@@ -777,7 +789,11 @@
{
ul *ptr = (ul*)((char*)rpb_dsr + sizeof(struct rpb_dsr ));
rpb_crb->rpb_pa_disp = KSEG_TO_PHYS(ptr);
+#if 0
rpb_crb->rpb_va_disp = 0x10000000 + ((ul)ptr&(0x2000*HWRPB_PAGES-1));
+#else
+ rpb_crb->rpb_va_disp = 0x10000000 + ((ul)ptr & 0x1fff);
+#endif
printf("ConsoleDispatch at virt %x phys %x val %x\n",
rpb_crb->rpb_va_disp,
rpb_crb->rpb_pa_disp,
@@ -785,7 +801,11 @@
*ptr++ = 0;
*ptr++ = (ul) consoleCallback;
rpb_crb->rpb_pa_fixup = KSEG_TO_PHYS(ptr);
+#if 0
rpb_crb->rpb_va_fixup = 0x10000000 + ((ul)ptr& (0x2000*HWRPB_PAGES-1));
+#else
+ rpb_crb->rpb_va_fixup = 0x10000000 + ((ul)ptr & 0x1fff);
+#endif
*ptr++ = 0;
*ptr++ = (ul) consoleFixup;
}
@@ -807,7 +827,7 @@
{
int i;
for (i=1;i<simosConf.numCPUs;i++) {
- volatile AlphaAccess *k1Conf = (volatile AlphaAccess *)
+ volatile struct AlphaAccess *k1Conf = (volatile struct AlphaAccess *)
(__MAGIC_ZONE(0, 0, MAGIC_ZONE_EV5_ALIAS));
SpinLock(&theLock);
printf("Bootstraping CPU %d with sp=0x%x \n",
@@ -944,11 +964,12 @@
char name[128];
} deviceState[32];
-#define BOOTDEVICE_NAME "SCSI 1 0 0 1 100"
+#define BOOTDEVICE_NAME "SCSI 1 0 0 1 100 0"
-void DeviceOperation(long op,long channel, long count, long address, long
block)
+void
+DeviceOperation(long op, long channel, long count, long address, long block)
{
- AlphaAccess *k1Conf = (AlphaAccess *)
+ struct AlphaAccess *k1Conf = (struct AlphaAccess *)
(__MAGIC_ZONE(0, 0, MAGIC_ZONE_EV5_ALIAS));
long pAddr;
@@ -993,35 +1014,137 @@
#define CONSCB_GETENV 0x22
/* AXP manual 2-26 */
+#define ENV_AUTO_ACTION 0X01
+#define ENV_BOOT_DEV 0X02
+#define ENV_BOOTDEF_DEV 0X03
+#define ENV_BOOTED_DEV 0X04
+#define ENV_BOOT_FILE 0X05
+#define ENV_BOOTED_FILE 0X06
+#define ENV_BOOT_OSFLAGS 0X07
+#define ENV_BOOTED_OSFLAGS 0X08
+#define ENV_BOOT_RESET 0X09
+#define ENV_DUMP_DEV 0X0A
+#define ENV_ENABLE_AUDIT 0X0B
+#define ENV_LICENSE 0X0C
+#define ENV_CHAR_SET 0X0D
+#define ENV_LANGUAGE 0X0E
+#define ENV_TTY_DEV 0X0F
+#define ENV_SCSIID 0X42
+#define ENV_SCSIFAST 0X43
+#define ENV_COM1_BAUD 0X44
+#define ENV_COM1_MODEM 0X45
+#define ENV_COM1_FLOW 0X46
+#define ENV_COM1_MISC 0X47
+#define ENV_COM2_BAUD 0X48
+#define ENV_COM2_MODEM 0X49
+#define ENV_COM2_FLOW 0X4A
+#define ENV_COM2_MISC 0X4B
+#define ENV_PASSWORD 0X4C
+#define ENV_SECURE 0X4D
+#define ENV_LOGFAIL 0X4E
+#define ENV_SRM2DEV_ID 0X4F
-#define ENV_BOOTED_DEV 0x4
-#define ENV_BOOTED_OSFLAGS 0x8
+#define MAX_ENVLEN 32
-long CallBackDispatcher(long a0, long a1, long a2, long a3, long a4)
+char env_booted_dev[MAX_ENVLEN] = BOOTDEVICE_NAME;
+char env_booted_osflags[MAX_ENVLEN] = "";
+char env_com1_baud[MAX_ENVLEN] = "";
+char env_secure[MAX_ENVLEN] = "";
+
+#if 0
+char env_auto_action[MAX_ENVLEN] = "";
+char env_boot_dev[MAX_ENVLEN] = "";
+char env_bootdef_dev[MAX_ENVLEN] = "";
+char env_boot_file[MAX_ENVLEN] = "";
+char env_booted_file[MAX_ENVLEN] = "";
+char env_boot_osflags[MAX_ENVLEN] = "";
+char env_boot_reset[MAX_ENVLEN] = "";
+char env_dump_dev[MAX_ENVLEN] = "";
+char env_enable_audit[MAX_ENVLEN] = "";
+char env_license[MAX_ENVLEN] = "";
+char env_char_set[MAX_ENVLEN] = "";
+int env_language = 0;
+char env_tty_dev[MAX_ENVLEN] = "";
+char env_scsiid[MAX_ENVLEN] = "";
+char env_scsifast[MAX_ENVLEN] = "";
+char env_com1_modem[MAX_ENVLEN] = "";
+char env_com1_flow[MAX_ENVLEN] = "";
+char env_com1_misc[MAX_ENVLEN] = "";
+char env_com2_baud[MAX_ENVLEN] = "";
+char env_com2_modem[MAX_ENVLEN] = "";
+char env_com2_flow[MAX_ENVLEN] = "";
+char env_com2_misc[MAX_ENVLEN] = "";
+char env_password[MAX_ENVLEN] = "";
+char env_logfail[MAX_ENVLEN] = "";
+char env_srm2dev_id[MAX_ENVLEN] = "";
+#endif
+
+long
+CallBackDispatcher(long a0, long a1, long a2, long a3, long a4)
{
_______________________________________________
m5-dev mailing list
[email protected]
http://m5sim.org/mailman/listinfo/m5-dev