diff --git a/docs/history.txt b/docs/history.txt index ecffb60..43d2e6c 100644 --- a/docs/history.txt +++ b/docs/history.txt @@ -21,6 +21,11 @@ Changelog items can list SVN revision rNUMBER and bugzilla bug NUMBER. sector is given (sys X: bootfile.bin) + Changes Bart + * r1569 kernel/{config.c,kernel.asm,init-mod.h,globals.h}: + Allocate bigger chunk of memory for INSTALL for __WATCOMC__ + because the memory layout is different from other compilers. + Fixes issues mentioned by Bret Johnson and Christian Masloch + in freedos-user/freedos-kernel. * r1568 kernel/asmsupt.asm, mkfiles/owlinux.mak: Make sure the DOS native and Linux cross-builds produce identical binaries. * r1567 drivers/rdpcclk.asm,kernel/{asmsupt,entry,irqstack,kernel, diff --git a/kernel/config.c b/kernel/config.c index 50ff84c..55fc403 100644 --- a/kernel/config.c +++ b/kernel/config.c @@ -2386,7 +2386,11 @@ VOID DoInstall(void) */ set_strategy(LAST_FIT); - installMemory = allocmem(((unsigned)_init_end + ebda_size + 15) / 16); + installMemory = ((unsigned)_init_end + ebda_size + 15) / 16; +#ifdef __WATCOMC__ + installMemory += (_InitTextEnd - _InitTextStart + 15) / 16; +#endif + installMemory = allocmem(installMemory); InstallPrintf(("allocated memory at %x\n",installMemory)); diff --git a/kernel/globals.h b/kernel/globals.h index 55c0ef7..e5720ba 100644 --- a/kernel/globals.h +++ b/kernel/globals.h @@ -165,7 +165,6 @@ FAR ASM clk_dev, /* Clock device driver */ extern COUNT *error_tos, /* error stack */ disk_api_tos, /* API handler stack - disk fns */ char_api_tos; /* API handler stack - char fns */ -extern BYTE FAR _InitTextStart; /* first available byte of ram */ extern BYTE FAR _HMATextAvailable, /* first byte of available CODE area */ FAR _HMATextStart[], /* first byte of HMAable CODE area */ FAR _HMATextEnd[]; /* and the last byte of it */ diff --git a/kernel/init-mod.h b/kernel/init-mod.h index 3007569..9563e13 100644 --- a/kernel/init-mod.h +++ b/kernel/init-mod.h @@ -259,7 +259,8 @@ extern struct lol ASM FAR DATASTART; extern BYTE DOSFAR ASM _HMATextAvailable, /* first byte of available CODE area */ FAR ASM _HMATextStart[], /* first byte of HMAable CODE area */ FAR ASM _HMATextEnd[], DOSFAR ASM break_ena; /* break enabled flag */ -extern BYTE DOSFAR _InitTextStart, /* first available byte of ram */ +extern BYTE DOSFAR ASM _InitTextStart[], /* first available byte of ram */ + DOSFAR ASM _InitTextEnd[], DOSFAR ReturnAnyDosVersionExpected, DOSFAR ASM HaltCpuWhileIdle; diff --git a/kernel/kernel.asm b/kernel/kernel.asm index 210a679..9277f88 100644 --- a/kernel/kernel.asm +++ b/kernel/kernel.asm @@ -771,6 +771,9 @@ segment INIT_TEXT_START global __InitTextStart __InitTextStart: ; and c version +segment INIT_TEXT_END + global __InitTextEnd +__InitTextEnd: ; and c version ; ; start end end of HMA area