1
0
Fork 0
mirror of https://gitlab.com/sortix/sortix.git synced 2023-02-13 20:55:38 -05:00

x64 now compiles again and runs on real hardware.

A nasty bug was fixed that caused triple faults on systems with > 1 GiB RAM.
This commit is contained in:
Jonas 'Sortie' Termansen 2011-11-29 01:21:59 +01:00
parent 8c146f14c0
commit 0b1c2a77c9
15 changed files with 517 additions and 16 deletions

View file

@ -106,6 +106,9 @@ namespace Sortix
// up the address space of a process _before_ calling
// DestroyAddressSpace. This is just a hack because it currently is
// impossible to clean up PLM1's using the MM api!
// ---
// TODO: This function is duplicated in {x86,x64}/memorymanagement.cpp!
// ---
void RecursiveFreeUserspacePages(size_t level, size_t offset)
{
PML* pml = PMLS[level] + offset;

38
sortix/x86/process.cpp Normal file
View file

@ -0,0 +1,38 @@
/******************************************************************************
COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2011.
This file is part of Sortix.
Sortix 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 3 of the License, or (at your option) any later
version.
Sortix 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 Sortix. If not, see <http://www.gnu.org/licenses/>.
x86/process.cpp
CPU-specific process code.
******************************************************************************/
#include "platform.h"
#include "process.h"
namespace Sortix
{
void Process::ExecuteCPU(int argc, char** argv, addr_t stackpos, addr_t entry, CPU::InterruptRegisters* regs)
{
regs->eax = argc;
regs->ebx = (size_t) argv;
regs->eip = entry;
regs->useresp = stackpos;
regs->ebp = stackpos;
}
}