; File: ; segs.inc ; Description: ; Segment definitions for the kernel ; ; Copyright (c) 1998 ; Pasquale J. Villani ; All Rights Reserved ; ; This file is part of DOS-C. ; ; DOS-C is free software; you can redistribute it and/or ; modify it under the terms of the GNU General Public License ; as published by the Free Software Foundation; either version ; 2, or (at your option) any later version. ; ; DOS-C is distributed in the hope that it will be useful, but ; WITHOUT ANY WARRANTY; without even the implied warranty of ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See ; the GNU General Public License for more details. ; ; You should have received a copy of the GNU General Public ; License along with DOS-C; see the file COPYING. If not, ; write to the Free Software Foundation, 675 Mass Ave, ; Cambridge, MA 02139, USA. ; ; $Header$ ; ; CPU specification -- putting it here because all .asm files include this ; file __NASM_VER__ was introduced in NASM after CPU -- ver 0.98 doesn't ; understand it %ifdef __NASM_VER__ %if XCPU == 86 CPU 8086 %else CPU XCPU %endif %endif ; for OW on Linux: %ifdef owlinux %define WATCOM %endif %ifidn __OUTPUT_FORMAT__, obj group PGROUP PSP group LGROUP _IRQTEXT _LOWTEXT _IO_TEXT _IO_FIXED_DATA _TEXT group DGROUP _FIXED_DATA _BSS _DATA _DATAEND CONST CONST2 DCONST DYN_DATA %ifdef WATCOM group TGROUP HMA_TEXT_START HMA_TEXT HMA_TEXT_END INIT_TEXT_START INIT_TEXT INIT_TEXT_END %define IGROUP TGROUP group I_GROUP ID_B I_DATA ICONST ICONST2 ID_E IB_B I_BSS IB_E %else group TGROUP HMA_TEXT_START HMA_TEXT HMA_TEXT_END group IGROUP INIT_TEXT_START INIT_TEXT INIT_TEXT_END group I_GROUP ID_B ID ID_E IC IDATA IB_B IB IB_E %endif %define class(x) class=x %define nobits %define exec %define INITSIZE init_end wrt INIT_TEXT %define INITTEXTSIZE __INIT_DATA_START wrt INIT_TEXT %else ; using ELF BITS 16 ; groups are defined in the linker script kernel.ld extern PGROUP extern DGROUP extern LGROUP extern TGROUP extern IGROUP extern I_GROUP %define class(x) %define stack extern INITSIZE %define INITTEXTSIZE __InitTextEnd %endif segment PSP class(PSP) segment _IRQTEXT class(LCODE) exec segment _LOWTEXT class(LCODE) exec segment _IO_TEXT class(LCODE) exec segment _IO_FIXED_DATA class(LCODE) align=2 segment _TEXT class(LCODE) exec segment _FIXED_DATA class(FDATA) align=16 segment _BSS class(BSS) align=2 segment _DATA class(DATA) align=2 segment _DATAEND class(DATA) align=1 ;for WATCOM segment CONST class(DATA) align=2 segment CONST2 class(DATA) align=2 ;for MSC segment DCONST class(DCONST) align=2 segment DYN_DATA class(DYN_DATA) segment HMA_TEXT_START class(CODE) align=16 segment HMA_TEXT class(CODE) exec segment HMA_TEXT_END class(CODE) align=16 segment INIT_TEXT_START class(CODE) align=16 segment INIT_TEXT class(CODE) exec segment INIT_TEXT_END class(CODE) align=16 %ifdef WATCOM segment ID_B class(FAR_DATA) align=16 segment I_DATA class(FAR_DATA) align=2 segment ICONST class(FAR_DATA) align=2 segment ICONST2 class(FAR_DATA) align=2 segment ID_E class(FAR_DATA) align=2 segment IB_B class(FAR_DATA) align=2 segment I_BSS class(FAR_DATA) align=2 segment IB_E class(FAR_DATA) align=2 %else segment ID_B class(ID) align=16 segment ID class(ID) align=2 segment IDATA class(ID) align=2 segment ID_E class(ID) align=2 segment IC class(IC) align=2 segment IB_B class(IB) align=2 nobits segment IB class(IB) align=2 nobits segment IB_E class(IB) align=2 nobits %endif