Commit Graph

171 Commits

Author SHA1 Message Date
Axel Dörfler
0f87a64b54 Add support for the boot partition offset as provided by the BFS boot block.
Now, platform_get_boot_partition() will work correctly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7253 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-20 01:26:56 +00:00
Axel Dörfler
cdc8d6b6f5 The source files may now include the boot/partitions.h header.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7252 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-20 01:21:42 +00:00
Axel Dörfler
c8baeaf6cf Added support for the boot partition offset as provided by the BFS boot block.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7251 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-20 01:20:43 +00:00
Axel Dörfler
9fd7586724 gBootDriveID is now uint8, no longer uint16.
Now prints out a comment if LBA access doesn't work (since CHS access is not yet implemented).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7250 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 23:33:23 +00:00
Axel Dörfler
f52302c408 Actually, one byte is enough for gBIOSDriveID - it only has to store %dl, not %dx.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7249 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 23:31:53 +00:00
Axel Dörfler
502a70f884 Implemented LBA drive access using the BIOS. The boot device is correctly
published, and can be accessed as needed.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7248 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 23:14:05 +00:00
Axel Dörfler
7ca2763dc3 Now uses the kExtraSegmentScratch constant rather than a direct address.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7247 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 22:43:04 +00:00
Axel Dörfler
cc551468f8 Added some constants that define scratch buffers in the data and extra
segment that can be used for BIOS calls.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7246 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 22:38:30 +00:00
Axel Dörfler
6ed14d8c59 Added a global variable gBootDriveID where %dl is stored to.
Moved the data section closer to the end of the 1024 bytes of the boot
block - the region before is reused as scratch buffer in the real mode
data segment.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7245 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 22:36:13 +00:00
Axel Dörfler
c2cb9079b5 Fixed a warning with debug turned on.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7244 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 21:58:43 +00:00
Axel Dörfler
acfef65c84 Fixed a bug that would rescan the boot partition in mount_file_systems() in
case it couldn't be used for booting (lack of a kernel or whatever).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7243 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 21:57:50 +00:00
Axel Dörfler
3796dbef26 Added the new files to the build, and implemented a real startup.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7240 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 01:57:29 +00:00
Axel Dörfler
b2f8da6214 Added prototype for the (currently unused) mmu_init_for_kernel() function.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7239 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 01:56:36 +00:00
Axel Dörfler
95aa3fbf11 MMU functions and initialization for the boot loader.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7238 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 01:50:26 +00:00
Axel Dörfler
487cc516ec Register %es was not properly set from the bios_regs structure
(since switch_to_real_mode() overwrites %es).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7237 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 01:31:19 +00:00
Axel Dörfler
65daec27d1 Added a definition for the carry flag.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7236 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 01:30:13 +00:00
Axel Dörfler
d2e0469de4 Verified A20 gate BIOS call values with Ralf Brown's interrupt list - 0x2401/2
was already correct, and my other source was wrong about it.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7234 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-19 00:00:53 +00:00
Axel Dörfler
46df41d103 Implemented call_bios() function that is called from protected mode.
It switches to real mode for execution of the BIOS interrupt; it's really
only intended for the boot loader.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7233 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-18 23:58:26 +00:00
Axel Dörfler
1e56fb4aeb The "ax" code I was using for the A20 gate stuff was obviously wrong; but
both Bochs and my real computer seem to know it anyway, so it's untested.
The real mode segment descriptors now start at 0x10000, because the code
is loaded there. Added an additional stack segment descriptor to be able
to use a stack below 0x10000.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7232 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-18 22:07:41 +00:00
Axel Dörfler
7ab45fdea5 Removed unused welcome message print code.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7198 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-13 16:54:42 +00:00
Axel Dörfler
b911d01e3d Started the "shell" of the 2nd stage boot loader: it will enable the A20
gate, switch to protected mode, and will then jump to the platform dependent
loader initialization.
This is the start of the zbeos equivalent. It can already be executed
using the BFS boot block, but it cannot yet load itself from a floppy
like the original does.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7197 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-04-13 16:43:12 +00:00
Axel Dörfler
cdae4b7cf1 Added panic()/dprintf() calls to the x86 bootloader bindings.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-23 01:03:24 +00:00
Axel Dörfler
06c0f437a7 Added "\n" -> "\r\n" translation for console output, not yet tested.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7031 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-19 18:32:37 +00:00
Axel Dörfler
498a8e8be0 Now uses vsnprintf() instead of vsprintf() which makes the output safe.
Removed "\n" -> "\r\n" translation (it's now done in the platform dependent part).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-19 18:30:31 +00:00
Axel Dörfler
788d2b04ea Implemented console output for x86 boot loader.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@7029 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-19 18:28:26 +00:00
Axel Dörfler
3bba0ebe0a NewOS revisited, applied patch 1916: now evaluates the extended BIOS
RAM size call.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6984 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-15 00:58:49 +00:00
Axel Dörfler
4a2e872cca Applied NewOS change 1914: moved APIC setup into the kernel due to a
problem with the APIC clock speed test.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6980 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-03-14 22:54:00 +00:00
Axel Dörfler
81e08ae466 kernel_cpp.cpp needs direct access to headers/private/kernel/util in order
to not include our current stdio.h.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@6598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2004-02-15 18:08:15 +00:00
Axel Dörfler
558d32f86a Thanks to Ingo's change in KernelMergeObject, the arch-specific part of
the OpenFirmware platform is now linked in directly.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5246 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-11-03 13:56:13 +00:00
Axel Dörfler
c3efd542cd Now accepts only "block" devices as boot device (we do not support
network booting (for R1), and if we will, it will be done using another
mechanism anyway).
If it runs under Apple's OF implementation, it now adds ":0" as parameter
to the opened block device to bypass the disk-label package - that part
is obviously implementation specific (and took me some time to figure
out, even if it's just two characters ;-).
Added a commented block of code that could be used in combination with
MOL and it's (in the meantime fixed) broken device access via OF.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5206 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-28 21:29:59 +00:00
Axel Dörfler
d3b44eeac9 Added definition of a of_arguments structure which is used in all
OpenFirmware client service calls (and callbacks).
Has nice inline argument getter methods If compiled under C++.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5205 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-28 21:26:08 +00:00
Axel Dörfler
c9593d2253 Now uses the OF root node properties "model" and "device_type" to get
and idea about the underlying hardware (needed at other places).
Calls arch_set_callback() right after MMU takeover.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5204 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-28 21:24:28 +00:00
Axel Dörfler
6bf336d531 Implemented the OpenFirmware MMU callback hook mechanism.
Added empty callbacks for "alloc-real-mem" and "unmap".
Implemented "map" and "translate" - the latter is not yet tested, though.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5203 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-28 21:22:21 +00:00
Axel Dörfler
41fc24055a Added more debug output.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5183 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-28 02:23:30 +00:00
Axel Dörfler
553e5a0f6f BFS/AmigaFFS directory Open()/Close() methods now correctly call the
respective methods of their parent (one possible crash less, as the
nodes could get deleted accidently).
The AmigaFFS is now silent if it just don't know the signature.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5182 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-28 02:13:12 +00:00
Axel Dörfler
c5b5378a79 The recently added load_kernel() tried to load the kernel again (there already
was a load_kernel() call above). Added a comment that might prevent me from
doing that again...


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5113 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 05:39:36 +00:00
Axel Dörfler
a721098497 Now prints an error message if the kernel couldn't be loaded.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5111 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 05:35:57 +00:00
Axel Dörfler
4f364c85af Enabled and added some more debug output.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5110 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 05:35:32 +00:00
Axel Dörfler
a47544320d Fixed File::ReadAt() (it didn't return the actual length read, just B_OK).
Visually simplified Volume::ToBlock().


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5109 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 05:27:24 +00:00
Axel Dörfler
caac43e662 Fixed missing initialization of fBlock in one of the constructors of CachedBlock.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5107 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 04:25:20 +00:00
Axel Dörfler
bc0096be96 Compiles again.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5105 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 04:16:06 +00:00
Axel Dörfler
d69f033efd Fixed a warning.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5104 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 04:08:04 +00:00
Axel Dörfler
1aa6a4ca46 Added link handling to the RootFileSystem (for the "boot" link).
Renamed AddNode() to AddVolume() - it's no longer virtual but private to
the root file system.
Added new method AddLink() to add a link to a volume.
The link handling is separate from the other volumes (to be able to iterate
only over real volumes). Added a name field to the inner entry class which
is used for links.


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5103 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 04:05:34 +00:00
Axel Dörfler
9bf99ee93b Now registers the boot device and loads the kernel.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5102 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 04:01:09 +00:00
Axel Dörfler
18562ebdd8 gRoot is now defined in RootFileSystem.h.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5101 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 04:00:12 +00:00
Axel Dörfler
77cfe0902a gRoot is now defined in RootFileSystem.h, AddNode() is now called AddVolume().
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5100 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 03:59:39 +00:00
Axel Dörfler
6822f1482e gRoot is now a RootFileSystem, not just a Directory anymore.
register_boot_file_system() adds the "boot" link to the root fs.
mount_all_file_systems() now prints out the root directory of the
mounted volumes just for fun (to be removed later).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5099 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 03:58:40 +00:00
Axel Dörfler
7fc11e15bb Some work-in-progress on the MMU functions:
- it will now successfully take over the MMU, but it doesn't tell OF
  yet about it.
- map_page() will now fill in the page table relative to sSegments[], and
  no longer to the segment registers directly (as they might be different
  at that time, depending on the OF).
- map_page() will panic if it couldn't find a free slot in the page table
  (that's enough for the boot loader)
- finds the exception handlers mapping and sets the kernel args
- rewrote insert_memory_range(); it now actually works in all cases (no
  matter if the ranges overlap or not, and it will also join ranges if
  possible). The start address will now be round down to page aligment.
- some other small fixes
- the page table is now cleared before use (as of_claim() obviously doesn't
  return cleared memory).
- replaced some uint32 with addr_t where it made sense (there are probably
  even more places).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5093 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-21 03:19:01 +00:00
Axel Dörfler
4790079584 Renamed arch_mmu_alloc_at() to arch_mmu_allocate(), removed arch_mmu_alloc().
Added new arch_mmu_free() function (not yet implemented).


git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5057 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-16 18:44:18 +00:00
Axel Dörfler
73ebb119f3 Forgot to check the endian of the ELF header.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-10-16 18:08:04 +00:00