From 4468ffd68c75bfb5484e4bbf14606799c39bc45a Mon Sep 17 00:00:00 2001 From: Romain Dolbeau Date: Thu, 6 Oct 2022 23:28:07 +0200 Subject: [PATCH] rework build system --- nubus-to-ztex-gateware/DeclROM/DepVideo.inc | 3 - nubus-to-ztex-gateware/DeclROM/Makefile | 73 +++------------- .../DeclROM/NuBusFPGADrvr.h | 23 ++--- .../DeclROM/NuBusFPGADrvr.s | 9 -- .../DeclROM/NuBusFPGADrvr_Ctrl.c | 2 +- .../DeclROM/NuBusFPGADrvr_OpenClose.c | 6 +- .../DeclROM/NuBusFPGADrvr_Status.c | 2 +- .../DeclROM/NuBusFPGAPrimaryInit.s | 5 +- .../DeclROM/NuBusFPGAPrimaryInit_Primary.c | 3 +- .../DeclROM/NuBusFPGARAMDskDrvr.h | 11 ++- .../DeclROM/NuBusFPGARAMDskDrvr.s | 13 --- .../DeclROM/NuBusFPGARAMDskDrvr_Ctrl.c | 2 +- .../DeclROM/NuBusFPGARAMDskDrvr_OpenClose.c | 2 +- .../DeclROM/NuBusFPGARAMDskDrvr_Prime.c | 4 +- .../DeclROM/NuBusFPGARAMDskDrvr_Status.c | 2 +- .../DeclROM/NuBusFPGASecondaryInit.s | 8 +- .../DeclROM/append_romdir.c | 83 ------------------- nubus-to-ztex-gateware/DeclROM/linker.ld | 44 ++++++++++ nubus-to-ztex-gateware/DeclROM/myrle.c | 2 + nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s | 75 ++++++++++++----- 20 files changed, 155 insertions(+), 217 deletions(-) delete mode 100644 nubus-to-ztex-gateware/DeclROM/append_romdir.c create mode 100644 nubus-to-ztex-gateware/DeclROM/linker.ld diff --git a/nubus-to-ztex-gateware/DeclROM/DepVideo.inc b/nubus-to-ztex-gateware/DeclROM/DepVideo.inc index ea80568..ff01e54 100644 --- a/nubus-to-ztex-gateware/DeclROM/DepVideo.inc +++ b/nubus-to-ztex-gateware/DeclROM/DepVideo.inc @@ -51,6 +51,3 @@ ChunkyIndexed = 0 ChunkyDirect = 16 defVersion = 0 /* Version = 0 */ - -ROMSize = 0x1000 /* 4K byte ROM */ - diff --git a/nubus-to-ztex-gateware/DeclROM/Makefile b/nubus-to-ztex-gateware/DeclROM/Makefile index ca4ed03..1363094 100644 --- a/nubus-to-ztex-gateware/DeclROM/Makefile +++ b/nubus-to-ztex-gateware/DeclROM/Makefile @@ -1,5 +1,7 @@ AS=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-as CC=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-gcc +LD=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-ld +STRIP=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-strip OBJCOPY=/home/dolbeau/Retro68/build/toolchain/bin/m68k-apple-macos-objcopy HOSTCC=gcc HOSTCFLAGS=-O2 @@ -29,81 +31,31 @@ gen_mode: gen_mode.c ${GEN_ASM}: gen_mode ./gen_mode ${HRES} ${VRES} -all: vid_decl_rom.bin vid_decl_rom.srec +all: vid_decl_rom.bin -vid_decl_rom.o: vid_decl_rom.s NuBusFPGAPrimaryInit.s NuBusFPGAPrimaryInit_Primary.s NuBusFPGASecondaryInit.s NuBusFPGASecondaryInit_Secondary.s NuBusFPGADrvr.s ${APPLEINCS} ${CSRC_ASM} DepVideo.inc ${GEN_ASM} +vid_decl_rom.o: vid_decl_rom.s NuBusFPGAPrimaryInit.s NuBusFPGASecondaryInit.s NuBusFPGADrvr.s ${APPLEINCS} DepVideo.inc ${GEN_ASM} rm -f res.inc echo -e "HRES=${HRES}\nVRES=${VRES}\n" | tee res.inc ${AS} ${ARCHFLAGS} -I${NS816DECLROMDIR} $< -o $@ -a > vid_decl_rom.l -NuBusFPGADrvr_OpenClose.s: NuBusFPGADrvr_OpenClose.c NuBusFPGADrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.OpenClose_\1/g' $@ - -NuBusFPGADrvr_Ctrl.s: NuBusFPGADrvr_Ctrl.c NuBusFPGADrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.Ctrl_\1/g' $@ - -NuBusFPGADrvr_Status.s: NuBusFPGADrvr_Status.c NuBusFPGADrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.Status_\1/g' $@ - - -NuBusFPGARAMDskDrvr_OpenClose.s: NuBusFPGARAMDskDrvr_OpenClose.c NuBusFPGARAMDskDrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDOpenClose_\1/g' $@ - -NuBusFPGARAMDskDrvr_Prime.s: NuBusFPGARAMDskDrvr_Prime.c NuBusFPGARAMDskDrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDPrime_\1/g' $@ - -NuBusFPGARAMDskDrvr_Ctrl.s: NuBusFPGARAMDskDrvr_Ctrl.c NuBusFPGARAMDskDrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDCtrl_\1/g' $@ - -NuBusFPGARAMDskDrvr_Status.s: NuBusFPGARAMDskDrvr_Status.c NuBusFPGARAMDskDrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.RDStatus_\1/g' $@ - -myrle.s: myrle.c - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DSKIP_MAIN - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.myrle_\1/g' $@ +myrle.o: myrle.c + ${CC} ${ARCHFLAGS} ${CFLAGS} $< -c -o $@ -DSKIP_MAIN dump_cpr.s: dump_cpr.c ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DSKIP_MAIN sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ sed -i -e 's/\.\(L[0-9][0-9]*\)/.dump_cpr_\1/g' $@ +%.o: %.c NuBusFPGADrvr.h + ${CC} ${CFLAGS} $< -c -o $@ -DHRES=${HRES} -DVRES=${VRES} -NuBusFPGAPrimaryInit_Primary.s: NuBusFPGAPrimaryInit_Primary.c NuBusFPGADrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.PIPrimary_\1/g' $@ +vid_decl_rom.elf: linker.ld vid_decl_rom.o ${CSRC:.c=.o} # linker script must be first + ${LD} -o $@ -T $^ -NuBusFPGASecondaryInit_Secondary.s: NuBusFPGASecondaryInit_Secondary.c NuBusFPGADrvr.h - ${CC} ${ARCHFLAGS} ${CFLAGS} $< -S -o $@ -DHRES=${HRES} -DVRES=${VRES} - sed -i -e 's/^\([^a-zA-Z0-9_]*\.globl.*\)/# --- \1/' $@ - sed -i -e 's/\.\(L[0-9][0-9]*\)/.PISecondary_\1/g' $@ - -vid_decl_rom.srec: vid_decl_rom.o - ${OBJCOPY} $^ $@ --input-target=elf32-m68k --output-target=srec - -vid_decl_rom.raw: vid_decl_rom.o +vid_decl_rom.raw: vid_decl_rom.elf ${OBJCOPY} $^ $@ --input-target=elf32-m68k --output-target=binary -vid_decl_rom.dir: vid_decl_rom.raw append_romdir - cp $< $@ - ./append_romdir $@ - -vid_decl_rom.bin: vid_decl_rom.dir +vid_decl_rom.bin: vid_decl_rom.raw ${NUBUS_CHECKSUM} --input_file $< --output_file $@ --output_size 32768 dd if=dump.cpr of=vid_decl_rom.bin bs=1 conv=notrunc @@ -112,4 +64,3 @@ clean: append_romdir: append_romdir.c ${HOSTCC} $< -o $@ - diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h index 8afa3ac..520a028 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.h @@ -126,23 +126,25 @@ static inline unsigned int read_reg(AuxDCEPtr dce, unsigned int reg) { /* ASM */ extern SlotIntServiceProcPtr interruptRoutine; /* ctrl */ -void linearGamma(NuBusFPGADriverGlobalsPtr dStore); -OSErr changeIRQ(AuxDCEPtr dce, char en, OSErr err); -OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce); -OSErr reconfHW(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page); -OSErr updatePRAM(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page); +void linearGamma(NuBusFPGADriverGlobalsPtr dStore) __attribute__ ((section (".text.fbdriver"))); +OSErr changeIRQ(AuxDCEPtr dce, char en, OSErr err) __attribute__ ((section (".text.fbdriver"))); +OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver"))); +OSErr reconfHW(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page) __attribute__ ((section (".text.fbdriver"))); +OSErr updatePRAM(AuxDCEPtr dce, unsigned char mode, unsigned char depth, unsigned short page) __attribute__ ((section (".text.fbdriver"))); /* status */ -OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce); +OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver"))); /* open close */ -OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce); -OSErr cNuBusFPGAClose(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce); +OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver"))); +OSErr cNuBusFPGAClose(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) __attribute__ ((section (".text.fbdriver"))); /* primary init */ -UInt32 Primary(SEBlock* block); +UInt32 Primary(SEBlock* block) __attribute__ ((section (".text.primary"))); +/* secondary init */ +UInt32 Secondary(SEBlock* seblock) __attribute__ ((section (".text.secondary"))); #define Check32QDTrap 0xAB03 -#if 1 +#if 0 static inline UInt32 revb(UInt32 d) { return ((d&0xFFul)<<24) | ((d&0xFF00ul)<<8) | ((d&0xFF0000ul)>>8) | ((d&0xFF000000ul)>>24); } @@ -151,3 +153,4 @@ static inline UInt32 revb(UInt32 d) { #endif #endif + diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.s b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.s index 95eb3e2..b93afbe 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.s +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr.s @@ -21,12 +21,3 @@ _NuBusFPGATitle_StringEnd: /* A0 pointer to driver parameter block */ /* A1 pointer to driver device control entry */ ALIGN 2 - - .include "NuBusFPGADrvr_OpenClose.s" - .text - .include "NuBusFPGADrvr_Ctrl.s" - .text - .include "NuBusFPGADrvr_Status.s" - .text - - ALIGN 2 diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c index 24e3738..4c4df92 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Ctrl.c @@ -358,7 +358,7 @@ OSErr cNuBusFPGACtl(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) done: if (!(pb->ioTrap & (1<dCtlStorage; */ /* NuBusFPGADriverGlobalsPtr dStore = *dStoreHdl; */ @@ -21,8 +21,8 @@ short fbIrq(const long sqParameter){ OSErr cNuBusFPGAOpen(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) { OSErr ret = noErr; - /* write_reg(dce, GOBOFB_DEBUG, 0xBEEF0000); */ - /* write_reg(dce, GOBOFB_DEBUG, (unsigned long)dce->dCtlDevBase); */ + write_reg(dce, GOBOFB_DEBUG, 0xBEEF0000); + write_reg(dce, GOBOFB_DEBUG, (unsigned long)dce->dCtlDevBase); if (dce->dCtlStorage == nil) { diff --git a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c index fae8537..5ad1a11 100644 --- a/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c +++ b/nubus-to-ztex-gateware/DeclROM/NuBusFPGADrvr_Status.c @@ -401,6 +401,6 @@ OSErr cNuBusFPGAStatus(CntrlParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) #endif done: if (!(pb->ioTrap & (1<ioTrap & (1< */ -static inline void waitSome(unsigned long bound) { +__attribute__ ((section (".text.dskdriver"))) static inline void waitSome(unsigned long bound) { unsigned long i; for (i = 0 ; i < bound ; i++) { asm volatile("nop"); @@ -199,7 +199,7 @@ OSErr cNuBusFPGARAMDskPrime(IOParamPtr pb, /* DCtlPtr */ AuxDCEPtr dce) done: if (!(pb->ioTrap & (1<ioTrap & (1< -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -struct dir { - uint32_t oslt; - uint32_t length; - uint32_t crc; - uint8_t one; - uint8_t appleformat; - uint8_t tp0; - uint8_t tp1; - uint8_t tp2; - uint8_t tp3; - uint8_t zero; - uint8_t bytelane; -}; - -int main(int argc, char **argv) { - struct dir data; - struct stat buf; - int fd; - - if (argc < 2) { - fprintf(stderr, "no I/O file\n"); - exit(-1); - } - - - data.oslt = 0; - data.length = 0; - data.crc = 0; - data.one = 1; - data.appleformat = 1; - data.tp0 = 0x5a; - data.tp1 = 0x93; - data.tp2 = 0x2b; - data.tp3 = 0xc7; - data.zero = 0; - data.bytelane = 0x0F; - - if (stat(argv[1], &buf)) { - fprintf(stderr, "stat: %d -> %s\n", errno, strerror(errno)); - exit(-2); - } - - data.length = sizeof(data) + buf.st_size; - - printf("size is %u\n", data.length); - - //.long (\entry_type<<24) + ((\label-.) & 0xffffff) - data.oslt = 0x00 << 24 | (-buf.st_size) & 0xFFFFFF; - - printf("entry is 0x%08x\n", data.oslt); - - data.length = __builtin_bswap32(data.length); - data.oslt = __builtin_bswap32(data.oslt); - - if ((fd = open(argv[1], O_WRONLY | O_APPEND)) == -1) { - fprintf(stderr, "open: %d -> %s\n", errno, strerror(errno)); - exit(-3); - } - - write(fd, &data, sizeof(data)); - - close(fd); - - return 0; -} diff --git a/nubus-to-ztex-gateware/DeclROM/linker.ld b/nubus-to-ztex-gateware/DeclROM/linker.ld new file mode 100644 index 0000000..1c7e177 --- /dev/null +++ b/nubus-to-ztex-gateware/DeclROM/linker.ld @@ -0,0 +1,44 @@ +OUTPUT_FORMAT("elf32-m68k"); +ENTRY(DeclROMDir); + +SECTIONS { + .text : { + /* first the resource dir & related */ + *(.text.begin) + *(.text .sdata .sdata.* .data .data.* .rodata .rodata.*) + + /* then various sections for the various bits of codes */ + PROVIDE(_sPInitRec = .); + PROVIDE(entry_sPInitRec = (0x22000000 | ((_sPInitRec - _sRsrc_Board - 12) & 0xFFFFFF))); /* fixme; offset 12 hardwired */ + *(.text.primary_init) + *(.text.primary) + PROVIDE(_EndsPInitRec = .); + PROVIDE(size_sPInitRec = _EndsPInitRec - _sPInitRec); + + PROVIDE(_sSInitRec = .); + PROVIDE(entry_sSInitRec = (0x24000000 | ((_sSInitRec - _sRsrc_Board - 20) & 0xFFFFFF))); /* fixme; offset 20 hardwired */ + *(.text.secondary_init) + *(.text.secondary) + PROVIDE(_EndsSInitRec = .); + PROVIDE(size_sSInitRec = _EndsSInitRec - _sSInitRec); + + PROVIDE(_GoboFBDrvrMacOS68020 = .); + PROVIDE(entry_GoboFBDrvrMacOS68020 = (0x02000000 | ((_GoboFBDrvrMacOS68020 - _GoboFBDrvrDir) & 0xFFFFFF))); + *(.text.fbdriver_init) + *(.text.fbdriver) + PROVIDE(_GoboFBEnd020Drvr = .); + + PROVIDE(_RAMDskDrvrMacOS68020 = .); + PROVIDE(entry_RAMDskDrvrMacOS68020 = (0x02000000 | ((_RAMDskDrvrMacOS68020 - _RAMDskDrvrDir) & 0xFFFFFF))); + *(.text.dskdriver_init) + *(.text.dskdriver) + PROVIDE(_RAMDskEnd020Drvr = .); + + /* and at the end the ROM block, missing only the CRC */ + . = ALIGN(4); + *(.romblock) + PROVIDE(ROMSize = .); + PROVIDE(RsrcDirOffset = ((0-.)+20) & 0xFFFFFF); + } + /DISCARD/ : { *(*) } +} diff --git a/nubus-to-ztex-gateware/DeclROM/myrle.c b/nubus-to-ztex-gateware/DeclROM/myrle.c index 76c30e2..facd340 100644 --- a/nubus-to-ztex-gateware/DeclROM/myrle.c +++ b/nubus-to-ztex-gateware/DeclROM/myrle.c @@ -2,6 +2,8 @@ //#include +#include "NuBusFPGARAMDskDrvr.h" + #ifndef SKIP_MAIN uint32_t rleenc(uint32_t* out, const uint32_t* in, const uint32_t len) { uint32_t i = 0, j = 0, p = 0, ib, k; diff --git a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s b/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s index a67d826..166e03a 100644 --- a/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s +++ b/nubus-to-ztex-gateware/DeclROM/vid_decl_rom.s @@ -9,16 +9,23 @@ sRsrc_Board = 1 /* board sResource (>0 & <128) */ .include "VidRomDef.s" sRsrc_RAMDsk = 0x90 /* functional sResources */ + + .global DeclROMDir + + .section .text.begin .include "VidRomRsrcDir.s" + .global _sRsrc_Board _sRsrc_Board: OSLstEntry sRsrcType,_BoardType /* offset to board descriptor */ OSLstEntry sRsrcName,_BoardName /* offset to name of board */ DatLstEntry boardId,NuBusFPGAID /* board ID # (assigned by DTS) */ - OSLstEntry primaryInit,_sPInitRec /* offset to PrimaryInit exec blk */ + /* OSLstEntry primaryInit,_sPInitRec */ /* offset to PrimaryInit exec blk */ + .long entry_sPInitRec OSLstEntry vendorInfo,_VendorInfo /* offset to vendor info record */ - OSLstEntry secondaryInit,_sSInitRec /* offset to SecondaryInit block */ + /* OSLstEntry secondaryInit,_sSInitRec */ /* offset to SecondaryInit block */ + .long entry_sSInitRec OSLstEntry sRsrcVidNames, _VModeName /* video name directory */ .long EndOfList @@ -35,20 +42,24 @@ _BoardName: /* _VidICON ; optional icon, not needed */ /* _sVidNameDir ; optional name(s), not needed */ -_sPInitRec: - .long _EndsPInitRec-_sPInitRec /* physical block size */ + .section .text.primary_init +/* _sPInitRec: */ + /* .long _EndsPInitRec-_sPInitRec */ /* physical block size */ + .long size_sPInitRec .include "NuBusFPGAPrimaryInit.s" /* the header/code */ - .text ALIGN 2 -_EndsPInitRec: +/* _EndsPInitRec: */ -_sSInitRec: - .long _EndsSInitRec-_sSInitRec /* physical block size */ + .section .text.secondary_init +/* _sSInitRec: */ + /* .long _EndsSInitRec-_sSInitRec */ /* physical block size */ + .long size_sSInitRec .include "NuBusFPGASecondaryInit.s" /* the header/code */ - .text ALIGN 2 -_EndsSInitRec: - +/* _EndsSInitRec: */ + + + .section .text.begin ALIGN 2 _VendorInfo: OSLstEntry vendorId,_VendorId /* offset to vendor ID */ @@ -89,19 +100,24 @@ _MinorLength: .long defMinorLength /* frame buffer length */ ALIGN 2 + .section .text.begin + .global _GoboFBDrvrDir _GoboFBDrvrDir: - OSLstEntry sMacOS68020,_GoboFBDrvrMacOS68020 /* driver directory for Mac OS */ + /* OSLstEntry sMacOS68020,_GoboFBDrvrMacOS68020 */ /* driver directory for Mac OS */ + .long entry_GoboFBDrvrMacOS68020 .long EndOfList ALIGN 2 -_GoboFBDrvrMacOS68020: + .section .text.fbdriver_init +/* _GoboFBDrvrMacOS68020: */ /* supplied by linker script */ .long _GoboFBEnd020Drvr-. /* physical block size */ .include "NuBusFPGADrvr.s" /* driver code */ - .text -_GoboFBEnd020Drvr: - +/* _GoboFBEnd020Drvr: */ /* supplied by linker script */ + + .section .text.begin .include "VidRomRes.s" + .section .text.begin ALIGN 2 _sRsrc_RAMDsk: OSLstEntry sRsrcType,_RAMDskType /* video type descriptor */ @@ -122,14 +138,33 @@ _RAMDskName: .string "RAMDsk_NuBusFPGA" /* video driver name */ ALIGN 2 + .section .text.begin + .global _RAMDskDrvrDir _RAMDskDrvrDir: - OSLstEntry sMacOS68020,_RAMDskDrvrMacOS68020 /* driver directory for Mac OS */ + /* OSLstEntry sMacOS68020,_RAMDskDrvrMacOS68020 */ /* driver directory for Mac OS */ + .long entry_RAMDskDrvrMacOS68020 .long EndOfList ALIGN 2 -_RAMDskDrvrMacOS68020: + .section .text.dskdriver_init +/* _RAMDskDrvrMacOS68020: */ /* supplied by linker script */ .long _RAMDskEnd020Drvr-. /* physical block size */ .include "NuBusFPGARAMDskDrvr.s" /* driver code */ - .text -_RAMDskEnd020Drvr: +/* _RAMDskEnd020Drvr: */ /* supplied by linker script */ + + /* Declaration ROM directory at end */ + .section .romblock + ALIGN 2 +DeclROMDir: + .long RsrcDirOffset /* supplied by linker script, replace OSLstEntry 0, _sRsrcDir */ +DeclROMCRC: + .long ROMSize /* supplied by linker script */ + .long 0 /* crc TBComputed after the fact */ + .byte 1 /* Revision Level */ + .byte appleFormat /* Apple Format */ + .long testPattern /* magic TestPattern */ + .byte 0 /* reserved */ + .byte 0x0F /* byte lane marker */ +DeclRomEnd: + .end