Commit Graph

566 Commits

Author SHA1 Message Date
Stefano Ceccherini
ad12a198d7 Revert r42068 and r42069, since they didnt' make sense (but something's
obviously fishy)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42078 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-09 21:01:57 +00:00
Stefano Ceccherini
0a3e6ddf63 Add a comment so this doesn't happen anymore
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-09 15:01:35 +00:00
Stefano Ceccherini
e282383b4e Map B_PAGE_SIZE, and not just acpi_description_header (was actually a
regression), since the tables are bigger than that.
Accessing unmapped memory was doing bad things on
XenServer.
Fixes ticket #7497.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42068 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-09 14:52:56 +00:00
Stefano Ceccherini
5cea82988c Missing default case
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@42067 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-06-09 14:44:43 +00:00
Rene Gollent
8837310ce7 * Slightly alter the semantics of the input gathering function to take the
menu item it's associated with rather than an input string. This allows it
  to calculate the position to start the input at, as well as the correct
  line to place it on. The previous solution always put the input at the
  center line, which happened to be the right place by happy coincidence
  unless one also had the menu items for viewing/saving the debug syslog
  present.
* Implement input buffer scrolling, and consequently lift the previous size
  limit on user input (it is now only limited by the size of the passed in
  buffer).
* Implement parsing of the input buffer to allow it to handle comma-separated
  options. Thus, one can now input things like "disable_smp true, serial_debug_output false"
  and it will be handled properly.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-24 03:21:51 +00:00
Michael Lotz
f599932f82 * Simplify APIC writes.
* Add explicit volatile keyword.
* Minor variable name cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41684 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 15:02:05 +00:00
Michael Lotz
2ae3d5121c Switch to using the PIT in mode 0 (interrupt on 0) instead of mode 2 (rate
generator). There are chipsets (namely ATI/AMD SBx00) where mode 2 doesn't seem
to work (the counter isn't reloaded after the countdown has completed). Mode 0
has the same resolution as mode 2 and, as interrupts are disabled at this point
in booting, is otherwise equivalent as well. I've tested this on 5 machines
available to me and it doesn't seem to have any negative effect.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41683 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 14:51:42 +00:00
Michael Lotz
7adc7269d8 * Re-program the timer for each loop instead of waiting for it to wrap around.
With that we will usually start right away without having to wait for the
  timer to be in the desired state, which removes roughly 116ms of spinning
  around for a normal calibration run.
* Read back the value once after programming. The delay this introduces
  accounts for the fact that the counter will only start counting down on the
  next clock cycle.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41680 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 13:25:44 +00:00
Michael Lotz
2d62c17d26 * Add a limit to how often we retry the calibration. It's there as an upper
bound to prevent spinning forever if we have a very unstable TSC that we
  simply can't calibrate. Shouldn't really happen though.
* Set the gate low for channel 2 on exit if we used it as the counter.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41678 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 12:36:43 +00:00
Michael Lotz
34d3f13c64 * Put the calibration loop into a static inline function and replace the three
copies of it with a call to that.
* Make the variable names more readable and spacing cleanup.

No functional change intended.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41670 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 11:15:51 +00:00
Michael Lotz
d620303480 * Use macros to make the PIT programming more readable. Yes, I know that the PIT
timer code has such definitions too, but they're not quite as verbose. Will
  eventually make the latter use these too.
* Prepare for possibly using other PIT channels for the calibration. Right now
  everything's the same still.
* Add disabled print of the resulting factors.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41669 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-23 10:33:10 +00:00
François Revol
76b93c655d Fix the Amiga bootloader build.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41600 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-19 23:08:03 +00:00
Rene Gollent
93e483aeab Another build fix...need coffee.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41580 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-19 12:08:13 +00:00
Rene Gollent
b4aa5d34cf Build fixes.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41578 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-19 03:33:56 +00:00
Rene Gollent
d2b49a0031 * Implement support for user input of additional safe mode options that
aren't otherwise exposed via the safe mode menus. The option can be 
found under the debug options menu, where additional settings can be 
added one at a time with the same syntax used in kernel settings files 
(i.e. disable_acpi on). 

Scrolling of the input buffer is not yet supported (will implement that 
soon), so currently the input is clamped to the size of one line. This 
shouldn't be a problem for our current set of options though.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41577 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-19 01:38:02 +00:00
Rene Gollent
13fd92e6a0 Update boot loader copyright year. Resolves #7515.
+alpha3



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41574 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-18 23:10:23 +00:00
Michael Lotz
9c1714ec1a Enable IO-APICs by default. It's been tested on a broad spectrum of hardware and
all reports so far have been positive. We fall back to legacy mode in the cases
where we can't figure out the correct routing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41527 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-16 08:42:30 +00:00
Michael Lotz
192bc027ea Disabling the local APIC also means disabling SMP, as the APIC is the base for
all inter-CPU messaging. The previously described timekeeping is just an extra
function of local APICs. Before, if you'd select "disable local APIC" it would
still blindly write to invalid memory (targetting the non-mapped local APIC) and
then just hang waiting for the other CPUs (that were obviously not responding
to the init sequence that wasn't programmed).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41504 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-14 23:09:18 +00:00
Michael Lotz
ba0c232abb Fix typo that caused the (first) IO-APIC address not to be set anymore when
configuring SMP via MP tables. We don't support that method anyhow, but it
should still report correctly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41503 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-14 22:37:26 +00:00
Michael Lotz
8908aef9c2 * Don't map the IO-APIC within the bootloader. We don't need it to set up SMP
at all and, since there can be multiple IO-APICs, we need to do the
  enumeration again in the kernel anyway. Also only set ioapic_phys the first
  time we encounter an IO-APIC object as it looks cleaner when we arrive at the
  first IO-APIC default address.
* Therefore we don't have to worry about already mapped IO-APICs when
  enumerating them in the kernel.
* Also remove the mapping function that is now not used anymore.
* We still use the ioapic_phys field of the kernel args to determine whether
  there is an IO-APIC at all to avoid needlessly doing the enumeration again.

This fixes multi IO-APIC configurations, because before we would indeed map
the last IO-APIC listed in the MADT, but then in the kernel assumed we mapped
the first one. We'd end up with mapping the last listed IO-APIC twice and the
first IO-APIC never, always programming the last one when we actually targetted
the first one.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41476 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-13 16:31:31 +00:00
Ingo Weinhold
5e36c12a42 mmu_allocate_physical(): The wrong base argument was passed to
get_free_physical_address_range(). Fixes the debug syslog feature.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41446 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-11 19:10:26 +00:00
Michael Lotz
56b5ad0781 Added a temporary opt-in option "enable_ioapic" to the boot menu. This way the
IO-APIC can be easily enabled to test it on various configurations. Note that
the previous default opt-out didn't work because the safemode options would not
be touched at all when not actually entering the boot menu.
Once IO-APIC is more broadly tested this can be removed again and the opt-out
option reenabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41370 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-07 21:41:09 +00:00
François Revol
6d4e8bc473 More Milan specific stuff...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41355 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-06 21:35:17 +00:00
François Revol
6091174371 Add some calls for Milan debugging.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41351 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-05-06 20:11:05 +00:00
Axel Dörfler
2545ff58c1 * Applied patch by VinDuv/Jonas to use the existing check_for_key() that fixes
a problem on the Mac which obviously messed up its BIOS.
* This busy loops, but CPU utilization should be a maxed out in the boot loader
  anyway - we could add a pause, though.
* This closes bug #2654.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41117 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-03-26 20:01:37 +00:00
Philippe Houdoin
4499da3990 Moved generic boot platform code to its own static lib, boot_platform_generic.a.
I hope I didn't break anything, as I can and have only test
bios_ia32's haiku_loader. Flame me otherwise.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40240 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-17 16:50:58 +00:00
Philippe Houdoin
bcd197ad9b Removed last video_rle.cpp reference and made boot_zlib.a requirment more factual.
Thanks François for cleaning up after me.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40218 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-12 17:24:32 +00:00
François Revol
2f6b97dc30 This should hopefully fix build break introduced by r40215.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40217 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-12 17:16:05 +00:00
Philippe Houdoin
67938b0d59 Switched boot splash compression to use boot_zlib (which was already
used by tarfs anyway) instead of RLE.
While this should allows larger logo/icons, it doesn't remove the
current 300000 bytes size limits for haiku_loader, so #6710 is not yet fixed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-12 15:43:14 +00:00
Ingo Weinhold
b51ec9de58 sprintf() -> snprintf() (CID 7985).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40079 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-02 23:16:01 +00:00
Ingo Weinhold
3872a2d2fc Fixed suspicious implicit sign extension computing the frame buffer size
(CIDs 8056, 8057, 8058).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40078 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-02 23:14:10 +00:00
Ingo Weinhold
447e61909f Always initialize fSize in the BIOSDrive constructor -- InitCheck() uses it
(CID 10272).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40077 a95241bf-73f2-0310-859d-f6bbb57e9c96
2011-01-02 23:03:01 +00:00
Michael Lotz
c907ee755a Undo the part of r34947 that changed the re-use check. It wasn't broken, since
the address variable is incremented in the loop above and at the end will be
equal to sNextVirtualAddress if the address space can be reused. Fixes early
boot resets due to wrongly reused virtual addresses (and them being freed while
still in use by the original user). Fixes #7026, thanks to Urias for testing.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39961 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-27 02:15:05 +00:00
Michael Lotz
f3eff1ca00 Free the header after possibly accessing it when tracing is enabled. Also guard
the trace output against header being NULL (i.e. failed to map).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39958 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-27 00:51:05 +00:00
Marcus Overhagen
f9e04ff0e1 This removes pxe_stage1.S and thus also removes the build target "pxehaiku".
In r21611, about 3 years ago, the switch into protected mode was moved 
from stage1 to stage2, which makes stage1 obsolete. You have to use 
"pxehaiku-loader" when booting Haiku by PXE on x86.

Trying to use stage1 to boot stage2 resulted in tripple fault during
setup of ss segment, because stage1 switches to protected mode before
calling stage2, but stage2 expects real mode. The documentation is not
up to date.




git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39881 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-12-17 17:53:29 +00:00
François Revol
3bb30583a3 Fix the licence, we use MIT now.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39557 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-21 17:03:03 +00:00
François Revol
34dc99625d Update copyrights.
Btw Axel, keyboard.cpp (forked from the bios_ia32 one) is still under "OpenBeOS licence" with 2 other copies, I suppose you are ok to change to MIT ?


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39548 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 18:41:52 +00:00
François Revol
180ffdeaa4 Cleanup. Try to exit ARAnyM from platform_exit().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39547 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 18:25:51 +00:00
François Revol
866bb10f42 Add some more Falcon video modes. Use VsetRGB() to set 8bit palette, though it's not really useful yet.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39544 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 17:33:44 +00:00
François Revol
20d6d508c1 Add the VsetRGB() XBIOS call.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39543 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 17:29:39 +00:00
François Revol
7a2ec456cf For now only output debug text on screen if framebuffer is not enabled.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39542 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 17:24:18 +00:00
François Revol
2d84444351 Native Falcon video modes support, including truecolor (16bpp chunky) which we can use for the boot splash. Some debugging code left to cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39533 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 04:30:49 +00:00
François Revol
67572c21e8 Print natfeat IDs as hex.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39532 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 04:29:12 +00:00
François Revol
ffc80aab15 Add some needed XBIOS calls.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39531 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-20 04:28:44 +00:00
François Revol
42df5ff102 Some support for video initialization using natfeat fVDI, but sadly it seems to return NULL for the framebuffer so it's not usable.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39506 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 13:52:17 +00:00
François Revol
a3f64d4460 Add a comment about why we currently force floppy boot when started from haiku.prg.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39493 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 09:02:59 +00:00
François Revol
6874c88139 When the boot drive API & id is not known, try to determine the id via natfeat. XXX not sure which API it refers too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39492 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 08:55:15 +00:00
François Revol
9c30d75b8c - use only native error codes,
- fix nat_feat_call() macro for more than 1 arg,
- add BOOTSTRAP natfeat calls get_bootdrive() and get_bootargs().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39491 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-19 08:51:59 +00:00
Andreas Färber
cb49ed72a6 boot_loader_openfirmware: Fix trace output
Update the variable name.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39430 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-14 19:04:48 +00:00
Stephan Aßmus
08e6655afe Patch by kaliber (ticket #6333): Removed many instances of
passing an additional -Wall to the compiler, which may actually
have unwanted effects. -Wall is standard by the build system.
Also, -Wno-multichar was passed unnecessarily for Haiku targets.
I didn't remove it for the bfs_shell, hope this is what Ingo meant
in the ticket.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39314 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-11-05 20:31:11 +00:00