mirror of https://github.com/FDOS/kernel.git
Eliminate relocations in initdisk.c + dyninit.c.
git-svn-id: https://svn.code.sf.net/p/freedos/svn/kernel/trunk@596 6ac86273-5f31-0410-b378-82cca8765d1b
This commit is contained in:
parent
542b0c1b89
commit
056fded527
12
kernel/dsk.c
12
kernel/dsk.c
|
@ -123,8 +123,6 @@ STATIC BOOL tdelay(ddt *pddt, ULONG ticks)
|
|||
#define N_PART 4 /* number of partitions per
|
||||
table partition */
|
||||
|
||||
COUNT nUnits; /* number of returned units */
|
||||
|
||||
#define PARTOFF 0x1be
|
||||
|
||||
#ifdef PROTO
|
||||
|
@ -187,7 +185,7 @@ static dsk_proc * const dispatch[NENTRY] =
|
|||
|
||||
COUNT ASMCFUNC FAR blk_driver(rqptr rp)
|
||||
{
|
||||
if (rp->r_unit >= nUnits && rp->r_command != C_INIT)
|
||||
if (rp->r_unit >= blk_dev.dh_name[0] && rp->r_command != C_INIT)
|
||||
return failure(E_UNIT);
|
||||
if (rp->r_command > NENTRY)
|
||||
{
|
||||
|
@ -207,14 +205,14 @@ STATIC WORD play_dj(ddt * pddt)
|
|||
{
|
||||
int i;
|
||||
ddt *pddt2 = getddt(0);
|
||||
for (i = 0; i < nUnits; i++, pddt2++)
|
||||
for (i = 0; i < blk_dev.dh_name[0]; i++, pddt2++)
|
||||
{
|
||||
if (pddt->ddt_driveno == pddt2->ddt_driveno &&
|
||||
(pddt2->ddt_descflags & (DF_MULTLOG | DF_CURLOG)) ==
|
||||
(DF_MULTLOG | DF_CURLOG))
|
||||
break;
|
||||
}
|
||||
if (i == nUnits)
|
||||
if (i == blk_dev.dh_name[0])
|
||||
{
|
||||
put_string("Error in the DJ mechanism!\n"); /* should not happen! */
|
||||
return M_CHANGED;
|
||||
|
@ -314,7 +312,7 @@ STATIC WORD Getlogdev(rqptr rp, ddt * pddt)
|
|||
return S_DONE;
|
||||
}
|
||||
|
||||
for (i = 0; i < nUnits; i++, pddt2++)
|
||||
for (i = 0; i < blk_dev.dh_name[0]; i++, pddt2++)
|
||||
{
|
||||
if (pddt->ddt_driveno == pddt2->ddt_driveno &&
|
||||
(pddt2->ddt_descflags & (DF_MULTLOG | DF_CURLOG)) ==
|
||||
|
@ -336,7 +334,7 @@ STATIC WORD Setlogdev(rqptr rp, ddt * pddt)
|
|||
return S_DONE;
|
||||
}
|
||||
|
||||
for (i = 0; i < nUnits; i++, pddt2++)
|
||||
for (i = 0; i < blk_dev.dh_name[0]; i++, pddt2++)
|
||||
{
|
||||
if (pddt->ddt_driveno == pddt2->ddt_driveno &&
|
||||
(pddt2->ddt_descflags & (DF_MULTLOG | DF_CURLOG)) ==
|
||||
|
|
|
@ -38,6 +38,7 @@ additionally:
|
|||
#include "portab.h"
|
||||
#include "init-mod.h"
|
||||
#include "dyndata.h"
|
||||
#include "lol.h"
|
||||
|
||||
#if defined(DEBUG)
|
||||
#define DebugPrintf(x) printf x
|
||||
|
@ -58,37 +59,41 @@ void far *DynAlloc(char *what, unsigned num, unsigned size)
|
|||
{
|
||||
void far *now;
|
||||
unsigned total = num * size;
|
||||
struct DynS far *Dynp = MK_FP(FP_SEG(LoL), FP_OFF(&Dyn));
|
||||
|
||||
#ifndef DEBUG
|
||||
UNREFERENCED_PARAMETER(what);
|
||||
#endif
|
||||
|
||||
if ((ULONG) total + Dyn.Allocated > 0xffff)
|
||||
if ((ULONG) total + Dynp->Allocated > 0xffff)
|
||||
{
|
||||
printf("PANIC:Dyn %lu\n", (ULONG) total + Dyn.Allocated);
|
||||
printf("PANIC:Dyn %lu\n", (ULONG) total + Dynp->Allocated);
|
||||
for (;;) ;
|
||||
}
|
||||
|
||||
DebugPrintf(("DYNDATA:allocating %s - %u * %u bytes, total %u, %u..%u\n",
|
||||
what, num, size, total, Dyn.Allocated,
|
||||
Dyn.Allocated + total));
|
||||
what, num, size, total, Dynp->Allocated,
|
||||
Dynp->Allocated + total));
|
||||
|
||||
now = (void far *)&Dyn.Buffer[Dyn.Allocated];
|
||||
now = (void far *)&Dynp->Buffer[Dynp->Allocated];
|
||||
fmemset(now, 0, total);
|
||||
|
||||
Dyn.Allocated += total;
|
||||
Dynp->Allocated += total;
|
||||
|
||||
return now;
|
||||
}
|
||||
|
||||
void DynFree(void *ptr)
|
||||
{
|
||||
Dyn.Allocated = (char *)ptr - (char *)Dyn.Buffer;
|
||||
struct DynS far *Dynp = MK_FP(FP_SEG(LoL), FP_OFF(&Dyn));
|
||||
Dynp->Allocated = (char *)ptr - (char *)Dynp->Buffer;
|
||||
}
|
||||
|
||||
void FAR * DynLast()
|
||||
{
|
||||
struct DynS far *Dynp = MK_FP(FP_SEG(LoL), FP_OFF(&Dyn));
|
||||
DebugPrintf(("dynamic data end at %p\n",
|
||||
(void FAR *)(Dyn.Buffer + Dyn.Allocated)));
|
||||
(void FAR *)(Dynp->Buffer + Dynp->Allocated)));
|
||||
|
||||
return Dyn.Buffer + Dyn.Allocated;
|
||||
return Dynp->Buffer + Dynp->Allocated;
|
||||
}
|
||||
|
|
|
@ -33,12 +33,12 @@ static BYTE *dskRcsId =
|
|||
"$Id$";
|
||||
#endif
|
||||
|
||||
UBYTE InitDiskTransferBuffer[SEC_SIZE];
|
||||
COUNT nUnits;
|
||||
|
||||
/*
|
||||
data shared between DSK.C and INITDISK.C
|
||||
*/
|
||||
extern UBYTE DOSFAR DiskTransferBuffer[1 * SEC_SIZE];
|
||||
|
||||
extern COUNT DOSFAR nUnits;
|
||||
|
||||
extern UWORD DOSFAR LBA_WRITE_VERIFY;
|
||||
|
||||
|
@ -766,7 +766,7 @@ ErrorReturn:
|
|||
*/
|
||||
|
||||
BOOL ConvPartTableEntryToIntern(struct PartTableEntry * pEntry,
|
||||
UBYTE FAR * pDisk)
|
||||
UBYTE * pDisk)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
@ -948,7 +948,7 @@ BOOL ScanForPrimaryPartitions(struct DriveParamS * driveParam, int scan_type,
|
|||
void BIOS_drive_reset(unsigned drive);
|
||||
|
||||
int Read1LBASector(struct DriveParamS *driveParam, unsigned drive,
|
||||
ULONG LBA_address, void FAR * buffer)
|
||||
ULONG LBA_address, void * buffer)
|
||||
{
|
||||
static struct _bios_LBA_address_packet dap = {
|
||||
16, 0, 0, 0, 0, 0, 0
|
||||
|
@ -1051,14 +1051,14 @@ ReadNextPartitionTable:
|
|||
strange_restart:
|
||||
|
||||
if (Read1LBASector
|
||||
(&driveParam, drive, RelSectorOffset, DiskTransferBuffer))
|
||||
(&driveParam, drive, RelSectorOffset, InitDiskTransferBuffer))
|
||||
{
|
||||
printf("Error reading partition table drive %02x sector %lu", drive,
|
||||
RelSectorOffset);
|
||||
return PartitionsToIgnore;
|
||||
}
|
||||
|
||||
if (!ConvPartTableEntryToIntern(PTable, DiskTransferBuffer))
|
||||
if (!ConvPartTableEntryToIntern(PTable, InitDiskTransferBuffer))
|
||||
{
|
||||
/* there is some strange hardware out in the world,
|
||||
which returns OK on first read, but the data are
|
||||
|
|
Loading…
Reference in New Issue