
the following hooks have been added to the ehci Ctlr structore to handle cache coherency (on arm): void* (*tdalloc)(ulong,int,ulong); void* (*dmaalloc)(ulong); void (*dmafree)(void*); void (*dmaflush)(int,void*,ulong); tdalloc() is used to allocate descriptors and the periodic frame schedule array. on arm, this needs to return uncached memory. tdalloc()ed memory is never freed. dmaalloc()/dmafree() is used for io buffers. this can return cached memory when when hardware maintains cache coherency (pc) or dmaflush() is provided to flush/invalidate the cache (zynq), otherwise needs to return uncached memory. dmaflush() is used to flush/invalidate the cache. the first argument tells us if we need to flush (non zero) or invalidate (zero). uncached.h is gone now. this change makes the handling explicit.
158 lines
3.3 KiB
Makefile
158 lines
3.3 KiB
Makefile
CONF=plug
|
|
CONFLIST=plug
|
|
|
|
# allegedly u-boot uses the bottom 8MB (up to 0x800000)
|
|
# so avoid that
|
|
loadaddr=0x60800000
|
|
|
|
objtype=arm
|
|
</$objtype/mkfile
|
|
p=9
|
|
|
|
DEVS=`{rc ../port/mkdevlist $CONF}
|
|
|
|
PORT=\
|
|
alarm.$O\
|
|
alloc.$O\
|
|
allocb.$O\
|
|
auth.$O\
|
|
cache.$O\
|
|
chan.$O\
|
|
dev.$O\
|
|
edf.$O\
|
|
fault.$O\
|
|
mul64fract.$O\
|
|
rebootcmd.$O\
|
|
page.$O\
|
|
parse.$O\
|
|
pgrp.$O\
|
|
portclock.$O\
|
|
print.$O\
|
|
proc.$O\
|
|
qio.$O\
|
|
qlock.$O\
|
|
segment.$O\
|
|
swap.$O\
|
|
syscallfmt.$O\
|
|
sysfile.$O\
|
|
sysproc.$O\
|
|
taslock.$O\
|
|
tod.$O\
|
|
xalloc.$O\
|
|
random.$O\
|
|
|
|
OBJ=\
|
|
l.$O\
|
|
lexception.$O\
|
|
lproc.$O\
|
|
arch.$O\
|
|
cga.$O\
|
|
clock.$O\
|
|
fpi.$O\
|
|
fpiarm.$O\
|
|
fpimem.$O\
|
|
main.$O\
|
|
mmu.$O\
|
|
trap.$O\
|
|
syscall.$O\
|
|
$CONF.root.$O\
|
|
$CONF.rootc.$O\
|
|
$DEVS\
|
|
$PORT\
|
|
|
|
# HFILES=
|
|
|
|
LIB=\
|
|
/$objtype/lib/libmemlayer.a\
|
|
/$objtype/lib/libmemdraw.a\
|
|
/$objtype/lib/libdraw.a\
|
|
/$objtype/lib/libip.a\
|
|
/$objtype/lib/libsec.a\
|
|
/$objtype/lib/libc.a\
|
|
/$objtype/lib/libmp.a\
|
|
/$objtype/lib/libfis.a\
|
|
|
|
9:V: $p$CONF s$p$CONF
|
|
|
|
$p$CONF:DQ: $CONF.c $OBJ $LIB mkfile
|
|
$CC $CFLAGS '-DKERNDATE='`{date -n} $CONF.c
|
|
echo '# linking raw kernel'
|
|
# sleep 1 # avoid relinking later
|
|
$LD -o $target -H0 -R4096 -T$loadaddr -l $OBJ $CONF.$O $LIB
|
|
|
|
s$p$CONF:DQ: $CONF.$O $OBJ $LIB
|
|
echo '# linking kernel with symbols'
|
|
# sleep 1 # avoid relinking later
|
|
$LD -o $target -R4096 -T$loadaddr -l $OBJ $CONF.$O $LIB
|
|
size $target
|
|
|
|
$p$CONF.gz:D: $p$CONF
|
|
gzip -9 <$p$CONF >$target
|
|
|
|
$OBJ: $HFILES
|
|
|
|
install:V: /$objtype/$p$CONF
|
|
|
|
install-in-flash:V: /$objtype/$p$CONF paqdisk
|
|
plug.flash.cfg
|
|
echo erase all >/dev/flash/kernelctl
|
|
cp /$objtype/$p$CONF /dev/flash/kernel
|
|
echo erase all >/dev/flash/plan9ctl
|
|
cp paqdisk /dev/flash/plan9
|
|
|
|
/$objtype/$p$CONF:D: $p$CONF s$p$CONF
|
|
cp -x $p$CONF s$p$CONF /$objtype &
|
|
{ 9fs lookout && cp -x $p$CONF s$p$CONF /n/lookout/$objtype } &
|
|
# { 9fs piestand && cp -x $p$CONF s$p$CONF /n/piestand/$objtype } &
|
|
wait
|
|
touch $target
|
|
|
|
paqdisk:
|
|
rm -fr armpaq
|
|
mkdir armpaq
|
|
cd armpaq
|
|
disk/mkfs -d . /sys/lib/sysconfig/proto/armpaqproto
|
|
mkpaqfs -o ../paqdisk
|
|
cd ..
|
|
|
|
<../boot/bootmkfile
|
|
<../port/portmkfile
|
|
<|../port/mkbootrules $CONF
|
|
|
|
# CFLAGS= -I. -I../port $CFLAGS # hack to compile private sysproc.c (e.g.)
|
|
|
|
arch.$O clock.$O fpiarm.$O main.$O mmu.$O screen.$O sdscsi.$O syscall.$O \
|
|
trap.$O: /$objtype/include/ureg.h
|
|
|
|
archkw.$O devether.$O ether1116.$O ethermii.$O: \
|
|
etherif.h ethermii.h ../port/netif.h
|
|
archkw.$O devflash.$O flashkw.$O: ../port/flashif.h
|
|
fpi.$O fpiarm.$O fpimem.$O: fpi.h
|
|
l.$O lexception.$O lproc.$O mmu.$O: arm.s arm.h mem.h
|
|
main.$O: errstr.h init.h reboot.h
|
|
mouse.$O: screen.h
|
|
devusb.$O: ../port/usb.h
|
|
usbehci.$O usbohci.$O usbuhci.$O: ../port/usb.h usbehci.h
|
|
|
|
init.h:D: ../port/initcode.c init9.s
|
|
$CC ../port/initcode.c
|
|
$AS init9.s
|
|
$LD -l -R1 -s -o init.out init9.$O initcode.$O /$objtype/lib/libc.a
|
|
{echo 'uchar initcode[]={'
|
|
xd -1x <init.out |
|
|
sed -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
|
|
echo '};'} > init.h
|
|
|
|
reboot.h:D: rebootcode.s arm.s arm.h mem.h
|
|
$AS rebootcode.s
|
|
# -lc is only for memmove. -T arg is PADDR(REBOOTADDR)
|
|
$LD -l -a -s -T0x100 -R4 -o reboot.out rebootcode.$O -lc >reboot.list
|
|
{echo 'uchar rebootcode[]={'
|
|
xd -1x reboot.out |
|
|
sed -e '1,2d' -e 's/^[0-9a-f]+ //' -e 's/ ([0-9a-f][0-9a-f])/0x\1,/g'
|
|
echo '};'} > reboot.h
|
|
errstr.h:D: ../port/mkerrstr ../port/error.h
|
|
rc ../port/mkerrstr > errstr.h
|
|
|
|
plug.clean:
|
|
rm -rf $p$CONF s$p$CONF armpaq paqdisk $CONF.c boot$CONF.c ../boot/libboot.a5
|