diff options
author | Matt Wilson <msw@redhat.com> | 1999-09-09 22:34:50 +0000 |
---|---|---|
committer | Matt Wilson <msw@redhat.com> | 1999-09-09 22:34:50 +0000 |
commit | f4e486de50f4144573d6e80c3535172dc613fc88 (patch) | |
tree | e83b53e9b1b9ff92cd3231479bcde2529595a05e /loader | |
parent | 36feb8dc820dd9292dd11ebec0a17e457ee71ed7 (diff) | |
download | anaconda-f4e486de50f4144573d6e80c3535172dc613fc88.tar.gz anaconda-f4e486de50f4144573d6e80c3535172dc613fc88.tar.xz anaconda-f4e486de50f4144573d6e80c3535172dc613fc88.zip |
patches from jj
Diffstat (limited to 'loader')
-rw-r--r-- | loader/Makefile | 43 | ||||
-rw-r--r-- | loader/loader.c | 6 | ||||
-rw-r--r-- | loader/minilibc.h | 23 | ||||
-rw-r--r-- | loader/stubs.c | 6 |
4 files changed, 65 insertions, 13 deletions
diff --git a/loader/Makefile b/loader/Makefile index 56d49d1bb..7da19cd0f 100644 --- a/loader/Makefile +++ b/loader/Makefile @@ -3,7 +3,7 @@ DESTDIR = ../../trees/initrd ARCH := $(patsubst i%86,i386,$(shell uname -m)) ARCH := $(patsubst sparc%,sparc,$(ARCH)) -OBJS = log.o windows.o modules.o devices.o cdrom.o urls.o kickstart.o +OBJS = stubs.o log.o windows.o modules.o devices.o cdrom.o urls.o kickstart.o LOADEROBJS = loader.o loader-pcmcia.o popen.o SOURCES = $(subst .o,.c,$(OBJS) $(LOADEROBJS)) BINS = init @@ -16,15 +16,14 @@ ALLOBJS = $(OBJS) $(PCMCIAOBJS) ifeq (i386, $(ARCH)) BINS += loader-local loader-network loader-pcmcia DIRS += pcmcia-install -OBJS += stubs.o endif ifeq (alpha, $(ARCH)) -BINS += loader-network +BINS += loader endif ifeq (sparc, $(ARCH)) -BINS += loader-network +BINS += loader endif ifeq (.depend,$(wildcard .depend)) @@ -39,15 +38,22 @@ CFLAGS = $(DEBUG) $(OPTS) -Wall -D_GNU_SOURCE=1 -I/usr/include/rpm -I.. -DUSE_AL STATIC = -static -ifeq (i386,$(ARCH)) +ifeq (i386, $(ARCH)) MINILIBC=minilibc.o CFLAGS+=-DUSE_MINILIBC=1 -DUSE_LOGDEV LDFLAGS = -nostdlib /usr/lib/crt1.o STATIC=-static else +ifeq (sparc, $(ARCH)) +MINILIBC=minilibc.o /usr/lib/libc.a +CFLAGS+=-DUSE_MINILIBC=1 -DUSE_LOGDEV +LDFLAGS = -nostdlib /usr/lib/crt1.o +STATIC=-static +else CFLAGS+=-DUSE_MINILIBC=0 STATIC=-static endif +endif VERSION = 6.0 @@ -59,13 +65,21 @@ dirs: done install: all - #mkdir -p $(DESTDIR)/sbin - #mkdir -p $(DESTDIR)/etc - #rm -f $(DESTDIR)/sbin/loader - #rm -f $(DESTDIR)/sbin/init - #install -s loader $(DESTDIR)/sbin/loader - #install -s init $(DESTDIR)/sbin/init - #install -m 755 ../kudzu/pcitable $(DESTDIR)/etc +# mkdir -p $(DESTDIR)/sbin +# mkdir -p $(DESTDIR)/etc +# rm -f $(DESTDIR)/sbin/loader +# rm -f $(DESTDIR)/sbin/init +# install -s loader $(DESTDIR)/sbin/loader +# install -s init $(DESTDIR)/sbin/init +# install -m 755 ../kudzu/pcitable $(DESTDIR)/etc + +loader: loader.o $(OBJS) $(NETOBJS) + $(CC) -g $(STATIC) -o $@ $^ -lpopt \ + ../kudzu/libkudzu.a ../isys/libisys.a ../balkan/libbalkan.a \ + ../isys/modutils/insmod/libmodutils.a \ + ../isys/modutils/util/libutil.a \ + ../isys/modutils/obj/libobj.a \ + -L../pump -lpump -lrpm -lbz2 -lz -lresolv -lnewt -lslang -lpci loader-local: loader-local.o $(OBJS) $(CC) -g $(STATIC) -o $@ $^ -lpopt \ @@ -73,7 +87,7 @@ loader-local: loader-local.o $(OBJS) ../isys/modutils/insmod/libmodutils.a \ ../isys/modutils/util/libutil.a \ ../isys/modutils/obj/libobj.a \ - -L../pump -lpump -lrpm -lz -lresolv -lnewt -lslang -lpci + -L../pump -lpump -lrpm -lbz2 -lz -lresolv -lnewt -lslang -lpci loader-network: loader-net.o $(OBJS) $(NETOBJS) $(CC) -g $(STATIC) -o $@ $^ -lpopt \ @@ -93,6 +107,9 @@ loader-pcmcia: loader-pcmcia.o pcmcia.o popen.o $(OBJS) $(PCMCIAOBJS) ../isys/modutils/obj/libobj.a \ -L../pump -lpump -lrpm -lbz2 -lz -lresolv -lnewt -lslang -lpci +loader.o: loader.c + $(CC) -DINCLUDE_LOCAL -DINCLUDE_NETWORK $(CFLAGS) -o $@ -c $^ + loader-local.o: loader.c $(CC) -DINCLUDE_LOCAL $(CFLAGS) -o $@ -c $^ diff --git a/loader/loader.c b/loader/loader.c index 7bfec22fd..5f9d6f912 100644 --- a/loader/loader.c +++ b/loader/loader.c @@ -1427,6 +1427,12 @@ int main(int argc, char ** argv) { logMessage("Flags are 0x%x\n", flags); +#ifdef __sparc__ + /* XXX: sparc -BOOT kernels should compile openprom in. */ + if (!FL_TESTING(flags)) + insmod ("openprom", NULL); +#endif + if (FL_KSFLOPPY(flags)) { ksFile = "/tmp/ks.cfg"; kickstartFromFloppy(ksFile, modLoaded, modDeps, flags); diff --git a/loader/minilibc.h b/loader/minilibc.h index fac68f2a4..c620be241 100644 --- a/loader/minilibc.h +++ b/loader/minilibc.h @@ -50,7 +50,30 @@ static inline _syscall1(int,unlink,const char *,fn) static inline _syscall1(int,close,int,fd) static inline _syscall0(int,getpid) static inline _syscall0(int,sync) +#ifdef __sparc__ +/* Nonstandard fork calling convention :( */ +static inline int fork(void) { + int __res; + __asm__ __volatile__ ( + "mov %0, %%g1\n\t" + "t 0x10\n\t" + "bcc 1f\n\t" + "dec %%o1\n\t" + "sethi %%hi(%2), %%g1\n\t" + "st %%o0, [%%g1 + %%lo(%2)]\n\t" + "b 2f\n\t" + "mov -1, %0\n\t" + "1:\n\t" + "and %%o0, %%o1, %0\n\t" + "2:\n\t" + : "=r" (__res) + : "0" (__NR_fork), "i" (&errno) + : "g1", "o0", "cc"); + return __res; +} +#else static inline _syscall0(int,fork) +#endif static inline _syscall0(pid_t,setsid) static inline _syscall1(int,exit,int,exitcode) static inline _syscall3(int,syslog,int, type, char *, buf, int, len); diff --git a/loader/stubs.c b/loader/stubs.c index 55d9ba1bf..b1fb30430 100644 --- a/loader/stubs.c +++ b/loader/stubs.c @@ -1,4 +1,10 @@ #include <gconv.h> + +#if !defined(UNKNOWN_10646_CHAR) && defined(__UNKNOWN_10646_CHAR) +/* Newer glibcs use underscores in gconv.h */ +#define GCONV_OK __GCONV_OK +#define GCONV_NOCONV __GCONV_NOCONV +#endif #define ASM_GLOBAL_DIRECTIVE .globl #define __SYMBOL_PREFIX |