Explorar o código

Added sparc_solaris stuff

ceriel %!s(int64=31) %!d(string=hai) anos
pai
achega
6f0cf8ae19

+ 8 - 0
mach/sparc_solaris/.distr

@@ -0,0 +1,8 @@
+Action
+ce
+ce_cg
+libdb
+libem
+libend
+libsys
+mach_params

+ 24 - 0
mach/sparc_solaris/Action

@@ -0,0 +1,24 @@
+name "Sparc Solaris code expander library"
+system "sparc_solaris"
+dir ce
+end
+name "Sparc Solaris code expander"
+system "sparc_solaris"
+dir ce_cg
+end
+name "Sparc Solaris EM library"
+system "sparc_solaris"
+dir libem
+end
+name "Sparc Solaris end library"
+system "sparc_solaris"
+dir libend
+end
+name "Sparc Solaris system call library"
+system "sparc_solaris"
+dir libsys
+end
+name "Sparc Solaris debugger support library"
+system "sparc_solaris"
+dir libdb
+end

+ 1 - 0
mach/sparc_solaris/ce/.distr

@@ -0,0 +1 @@
+proto.make

+ 37 - 0
mach/sparc_solaris/ce/proto.make

@@ -0,0 +1,37 @@
+# $Header$
+
+#PARAMS		do not remove this line!
+
+MACH = sparc_solaris
+OBJ = as
+SRC_DIR = $(SRC_HOME)/mach/sparc/ce
+
+CEG = $(TARGET_HOME)/lib.bin/ceg/util
+
+all:
+	( cd $(SRC_DIR); make )
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH) "SRC_DIR="$(SRC_DIR)
+
+install:
+	( cd $(SRC_DIR); make )
+	-mkdir $(TARGET_HOME)/lib.bin/$(MACH)
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH) "SRC_DIR="$(SRC_DIR) install
+
+cmp:
+	( cd $(SRC_DIR); make )
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) "MACH="$(MACH) "SRC_DIR="$(SRC_DIR) cmp
+
+pr:
+	@pr $(SRC_DIR)/proto.make $(SRC_DIR)/EM_table.x $(SRC_DIR)/mach.h \
+	    $(SRC_DIR)/mach.c $(SRC_DIR)/cache.c.x
+
+opr:
+	make pr | opr
+
+# total cleanup
+clean:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) clean
+
+# only remove ce, ceg, and back directories
+dclean:
+	make -f $(CEG)/make_asobj "OBJ="$(OBJ) dclean

+ 1 - 0
mach/sparc_solaris/ce_cg/.distr

@@ -0,0 +1 @@
+proto.make

+ 42 - 0
mach/sparc_solaris/ce_cg/proto.make

@@ -0,0 +1,42 @@
+# $Header$
+
+#PARAMS		do not remove this line!
+
+SRC_DIR=$(SRC_HOME)/mach/sparc/ce_cg
+MACH=sparc_solaris
+LIB_DIR=$(TARGET_HOME)/modules/lib
+EM_LIB=$(TARGET_HOME)/lib.bin
+INCLUDE=-I$(TARGET_HOME)/modules/h -I$(TARGET_HOME)/h
+CE_A= $(TARGET_HOME)/lib.bin/$(MACH)/ce.$(LIBSUF)
+BACK_A= $(TARGET_HOME)/lib.bin/$(MACH)/back.$(LIBSUF)
+
+CFLAGS=$(INCLUDE) -DCODE_EXPANDER $(COPTIONS)
+LDFLAGS=$(LDOPTIONS)
+LDLIBS=$(LIB_DIR)/libread_emk.$(LIBSUF) $(CE_A) $(BACK_A) \
+	$(LIB_DIR)/libprint.$(LIBSUF) $(LIB_DIR)/libstring.$(LIBSUF) \
+	$(LIB_DIR)/liballoc.$(LIBSUF) $(LIB_DIR)/libsystem.$(LIBSUF) \
+	$(EM_LIB)/em_data.$(LIBSUF) $(LIB_DIR)/libflt.$(LIBSUF)
+
+all:	cg
+
+install:	all
+	-mkdir $(TARGET_HOME)/lib.bin/$(MACH)
+	cp cg $(TARGET_HOME)/lib.bin/$(MACH)/cg
+
+cmp:	all
+	cmp cp cg $(TARGET_HOME)/lib.bin/$(MACH)/cg
+
+clean:
+	rm -f *.$(SUF) cg
+
+cg:	convert.$(SUF) $(CE_A) $(BACK_A)
+	$(CC) $(LDFLAGS) -o cg convert.$(SUF) $(LDLIBS) 
+
+convert.$(SUF):	$(SRC_DIR)/convert.c
+	$(CC) $(CFLAGS) -c $(SRC_DIR)/convert.c
+
+pr:
+	@pr $(SRC_DIR)/proto.make $(SRC_DIR)/convert.c
+
+opr:
+	make pr | opr

+ 1 - 0
mach/sparc_solaris/libdb/.distr

@@ -0,0 +1 @@
+machdep.s

+ 64 - 0
mach/sparc_solaris/libdb/machdep.s

@@ -0,0 +1,64 @@
+.globl $__Get_PC, $__Set_PC
+
+! $Header$
+
+! This is the machine-dependant part of the ACK debugger support.
+! $__Get_PC takes a frame pointer (local base) argument and returns the
+!	    return address from this frame.
+! $__Set_PC takes a frame pointer (local base) argument plus a return
+!	    address and sets the return address of this frame to the
+!	    return address supplied.
+
+$__Get_PC:
+	ld	[%l0],%o0
+	tst	%o0
+	beq	3f
+	nop
+	cmp	%o0,%l1
+	bne	1f
+	nop
+	add	%i7, 8, %o0
+3:
+	retl
+	nop
+1:
+	ta	3
+	add	%l1,%g0,%o1
+2:	add	%o1,7,%o2
+	andn	%o2,7,%o2
+	ld	[%o2+4],%o1
+	cmp	%o0,%o1
+	bne	2b
+	nop
+	ld	[%o2+0x3c],%o0
+	inc	8,%o0
+	retl
+	nop
+
+$__Set_PC:
+	ld	[%l0],%o0
+	tst	%o0
+	beq	3f
+	nop
+	cmp	%o0,%l1
+	bne	1f
+	nop
+	ld	[%l0+4],%i7
+	dec	8,%i7
+3:
+	retl
+	nop
+1:
+	ta	3
+	add	%l1,%g0,%o1
+2:	add	%o1,7,%o2
+	andn	%o2,7,%o2
+	ld	[%o2+4],%o1
+	cmp	%o0,%o1
+	bne	2b
+	nop
+	ld	[%l0+4],%o0
+	dec	8,%o0
+	st	%o0,[%o2+0x3c]
+	retl
+	nop

+ 4 - 0
mach/sparc_solaris/libem/.distr

@@ -0,0 +1,4 @@
+LIST
+libem_s.a
+READ_ME
+Makefile

+ 5 - 0
mach/sparc_solaris/libem/Makefile

@@ -0,0 +1,5 @@
+distr:
+	rm -f libem_s.a
+	ln ../../sparc/libem/libem_s.a libem_s.a
+	rm -f LIST
+	ln ../../sparc/libem/LIST LIST

+ 2 - 0
mach/sparc_solaris/libem/READ_ME

@@ -0,0 +1,2 @@
+As long as none of the libem source files use .seg, we can use the
+source files of the sparc libem.

+ 2 - 0
mach/sparc_solaris/libend/.distr

@@ -0,0 +1,2 @@
+LIST
+end_s.a

+ 5 - 0
mach/sparc_solaris/libend/LIST

@@ -0,0 +1,5 @@
+end_s.a
+edata.s
+em_end.s
+end.s
+etext.s

+ 3 - 0
mach/sparc_solaris/libend/edata.s

@@ -0,0 +1,3 @@
+.global $edata
+.section ".data"
+$edata:

+ 3 - 0
mach/sparc_solaris/libend/em_end.s

@@ -0,0 +1,3 @@
+.global $_end
+.section ".bss"
+$_end:

+ 3 - 0
mach/sparc_solaris/libend/end.s

@@ -0,0 +1,3 @@
+.global $end
+.section ".bss"
+$end:

+ 3 - 0
mach/sparc_solaris/libend/etext.s

@@ -0,0 +1,3 @@
+.global $etext
+.section ".text"
+$etext:

+ 5 - 0
mach/sparc_solaris/mach_params

@@ -0,0 +1,5 @@
+MACH=sparc_solaris
+SUF=o
+ASAR=ar
+RANLIB=:
+MACHFL=-O -DNFS