Permalink
Switch branches/tags
Nothing to show
Commits on Dec 5, 2018
Commits on Dec 4, 2018
  1. Add x86_64::PageTableEntry

    foxostro committed Dec 4, 2018
  2. Add headers for paging structures which are identical to x86_64::Gene…

    foxostro committed Dec 4, 2018
    …ricPageDirectoryEntry.
Commits on Dec 3, 2018
  1. Fix bug where the 64-bit TSS descriptor type field was incorrect.

    foxostro committed Dec 3, 2018
    The value for the type field must be 0x1001 for a TSS descriptor.
  2. Fix bug where the limit of the TSS descriptor was incorrect.

    foxostro committed Dec 3, 2018
    Since there is no I/O bitmap yet, the G bit should be zero and the
    limit must be equal to 0x67.
  3. Fix bug where the boot test for kernel size was broken for x86_64.

    foxostro committed Dec 3, 2018
    The kernel image must be small enough to be mapped into memory using a
    single page table. For x86_64, this means it must fit into 2MB of physical
    memory. (The limit is 4MB for i386.)
  4. Fix crash when trying to call global ctors on x86_64.

    foxostro committed Dec 3, 2018
    The page tables in the Kernel instance were too large for the mapped region
    of memory. Kernel was big enough that the instance of g_kernel pushed the
    instance of g_terminal out past the 2MB mark in the kernel image. As the
    x86_64 bootstrap code only maps 2MB of memory in the higher half (this is
    exactly one page table) this means that the kernel image is not entirely
    mapped. Accesses to g_terminal result in a page fault.
  5. Print a welcome message when the kernel starts.

    foxostro committed Dec 3, 2018
    The message indicates the platform for which the kernel was built, e.g.,
    x86_64 or i386.
Commits on Dec 2, 2018
  1. Add x86_64::GlobalDescriptorTable

    foxostro committed Dec 2, 2018
    BUG: Does not specify the TSS.
  2. TaskStateSegment uses uint types with specific sizes.

    foxostro committed Dec 2, 2018
    The hardware demands a specific layout for this object. Let's make that
    explicit through use of uint16_t and uint32_t types.
  3. Add tests for i386::page_directory.

    foxostro committed Dec 2, 2018
    Since the i386 paging structures necessarily rely on being able to store
    a pointer in 32-bit of memory, I'm entirely at a loss for how to fully
    test these on a 64-bit system.
Commits on Dec 1, 2018