/* * hal_boot.S - Kernel boot entry point * * Author Maxime Villard (2017) * * Copyright (c) UPMC Sorbonne Universites * * This file is part of ALMOS-kernel. * * ALMOS-kernel 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; version 2.0 of the License. * * ALMOS-kernel 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 ALMOS-kernel; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /* * Selectors */ #define ISPL(s) ((s) & SEL_RPL) /* what is the priority level of a selector */ #define SEL_KPL 0 /* kernel privilege level */ #define SEL_UPL 3 /* user privilege level */ #define SEL_RPL 3 /* requester's privilege level mask */ #define ISLDT(s) ((s) & SEL_LDT) /* is it local or global */ #define SEL_LDT 4 /* local descriptor table */ #define GSEL(s,r) (((s) << 3) | r) /* * Entries in the Global Descriptor Table (GDT). They remain static. */ #define GNULL_SEL 0 /* Null descriptor */ #define GCODE_SEL 1 /* Kernel code descriptor */ #define GDATA_SEL 2 /* Kernel data descriptor */ #define GUCODE_SEL 3 /* User code descriptor */ #define GUDATA_SEL 4 /* User data descriptor */