FreeDOS/kernel/segs.inc
Bart Oldeman 7bf4b77233 ia16-elf-gcc port: compile all asm files with -f elf.
Because ia16-elf-gcc and the GNU linker do not understand OMF we
need to use ELF everywhere.
This also means we cannot use "wrt", "seg" and "call/jmp far".
Most wrt's are superfluous, and seg and call/jmp far can be
replaced by explicit ?GROUP references (to be defined in the
linker script).
2018-01-11 17:50:31 -05:00

124 lines
3.7 KiB
PHP

; 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