Use assembler instead of C for the ramdisk. The assembler requires less
memory.
This commit is contained in:
parent
36fa006cec
commit
7fecfd3740
3 changed files with 27 additions and 3 deletions
|
@ -16,7 +16,13 @@ CFLAGS = -I$i
|
||||||
LDFLAGS = -i
|
LDFLAGS = -i
|
||||||
LIBS = -lsys -lsysutil
|
LIBS = -lsys -lsysutil
|
||||||
|
|
||||||
OBJ = memory.o imgrd.o
|
# imgrd_s.s is the ACK assembler version of the ramdisk. For more portability,
|
||||||
|
# use the C version imgrd.c. However, the C compiler takes too much memory
|
||||||
|
# compiling imgrd.c.
|
||||||
|
IMGRD=imgrd_s.o
|
||||||
|
#IMGRD=imgrd.c
|
||||||
|
|
||||||
|
OBJ = memory.o $(IMGRD)
|
||||||
LIBDRIVER = $d/libdriver/driver.o
|
LIBDRIVER = $d/libdriver/driver.o
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,13 +34,13 @@ $(DRIVER): ramdisk_image $(OBJ) $(LIBDRIVER)
|
||||||
install -S 8k $(DRIVER)
|
install -S 8k $(DRIVER)
|
||||||
|
|
||||||
imgrd.o: ramdisk/image.c
|
imgrd.o: ramdisk/image.c
|
||||||
|
imgrd_s.o: ramdisk/image.s
|
||||||
|
|
||||||
$(LIBDRIVER):
|
$(LIBDRIVER):
|
||||||
cd $d/libdriver && $(MAKE)
|
cd $d/libdriver && $(MAKE)
|
||||||
|
|
||||||
ramdisk_image:
|
ramdisk_image:
|
||||||
cd ramdisk && make
|
cd ramdisk && make
|
||||||
binsizes big
|
|
||||||
|
|
||||||
# install with other drivers
|
# install with other drivers
|
||||||
install: /usr/sbin/$(DRIVER)
|
install: /usr/sbin/$(DRIVER)
|
||||||
|
|
15
drivers/memory/imgrd_s.s
Normal file
15
drivers/memory/imgrd_s.s
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#
|
||||||
|
.sect .text; .sect .rom; .sect .data
|
||||||
|
|
||||||
|
! export symbols
|
||||||
|
.define _imgrd, _imgrd_size
|
||||||
|
|
||||||
|
.sect .data
|
||||||
|
_imgrd:
|
||||||
|
0:
|
||||||
|
#include "ramdisk/image.s"
|
||||||
|
1:
|
||||||
|
|
||||||
|
! Use local labels to compute the size of _imgrd.
|
||||||
|
_imgrd_size:
|
||||||
|
.data4 [1b] - [0b]
|
|
@ -3,7 +3,7 @@
|
||||||
PROGRAMS=at_wini bios_wini cdprobe dev2name floppy loadramdisk newroot \
|
PROGRAMS=at_wini bios_wini cdprobe dev2name floppy loadramdisk newroot \
|
||||||
pci sh service sysenv
|
pci sh service sysenv
|
||||||
|
|
||||||
all: image.c
|
all: image.c image.s
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f $(PROGRAMS) bintoc image image.c
|
rm -f $(PROGRAMS) bintoc image image.c
|
||||||
|
@ -11,6 +11,9 @@ clean:
|
||||||
image.c: bintoc image
|
image.c: bintoc image
|
||||||
./bintoc -o $@ image
|
./bintoc -o $@ image
|
||||||
|
|
||||||
|
image.s: image.c
|
||||||
|
sed < image.c > $@ 's/^/.data1 /;s/,$$//' || { rm -f $@; false; }
|
||||||
|
|
||||||
# Note for cross compilation: this executable has to be compiled for the
|
# Note for cross compilation: this executable has to be compiled for the
|
||||||
# host system
|
# host system
|
||||||
bintoc: bintoc.c
|
bintoc: bintoc.c
|
||||||
|
|
Loading…
Reference in a new issue