Commit Graph

1277 Commits

Author SHA1 Message Date
Ged Murphy
c5b25b8e9b - Move from using include guards to pragma once.
- Whilst this is non-standard and potentially makes the code less portable, it's supported by both gcc and msvc and should bringg increased compilation speed due to its optimized behaviour (doesn't need to invoke the preprocessor)
- Patch by Amine Khaldi [amine.khaldi@reactos.org]

svn path=/trunk/; revision=45685
2010-02-26 11:43:19 +00:00
Daniel Reimer
90ce7d8b37 XML Compliance Patch for the RBUILD Files. By Samuel Serapion
svn path=/trunk/; revision=45631
2010-02-20 12:41:24 +00:00
Cameron Gutman
3874d4ff4e - Fix incorrect sector size detection which caused seeking to fail when booting from a floppy
- FreeLoader can load from a floppy disk now

svn path=/trunk/; revision=45602
2010-02-16 20:32:58 +00:00
Johannes Anderwald
97db4c1d16 - Revert 44564
svn path=/trunk/; revision=45580
2010-02-11 21:19:35 +00:00
Johannes Anderwald
a19cbab2fc [WDMAUD_KERNEL]
- Replace mixer / wave support code by mmixer library
[MMIXER]
- Compare device name from 2 character onwards as there are difference in paths in user mode / kernel mode
- Invoke create pin callback if the caller provides it
[WDMAUD.DRV]
- Apply changes from mmixer library

-- Tested in Vbox with Winamp / ReactOS mplay32

svn path=/trunk/; revision=45579
2010-02-11 21:04:57 +00:00
Dmitry Gorbachev
e815fe376b Fix REL build, part 2.
svn path=/trunk/; revision=45539
2010-02-09 20:21:54 +00:00
Dmitry Gorbachev
cca78c7b11 Fix REL build.
svn path=/trunk/; revision=45538
2010-02-09 20:08:06 +00:00
Sir Richard
8c8041b1d6 [FREELDR]: Use WinLDR-style booting exclusively for ARM. Remove thousands of lines of old code where we basically did the same thing.
[FREELDR]: Build WinLDR for ARM too, and implement the required portability functions to get it working. Don't build "ros-style" loading on ARM.
[FREELDR]: Redo from scratch the entire paging setup for ARM. Instead of using 20MB of physical RAM, we now only use 1MB that's passed on to the kernel.
[FREELDR]: Fix loads of bugs in the ARM loader code (ha-ha!).
[FREELDR]: Cleanup compiler and linker flags in the rbuild files.
[ARMLLB]: Remove all deprecated video machine routines that are not used anymore.
If all went well, the ARM port should now boot on Versatile platforms up until the ARM3 initialization code.

svn path=/trunk/; revision=45526
2010-02-09 03:10:07 +00:00
Sir Richard
7cd39aa34b [MISC]: Build fixes to sync up with latest changes.
[SETUPLDR]: Do not build on ARM. On a side note, I offer a bountry for "if ARCH != ARM" support in .rbuild files, instead of only allowing ==.

svn path=/trunk/; revision=45525
2010-02-09 03:05:49 +00:00
Sir Richard
ba9fe881da [FREELDR]: Remove C++ style indirected "UI" component from FreeLDR ARM, for several reasons that ought to be considered on x86 too:
- It redraws the screen in two different ways (zero memory and character-by-character fill) over 15 times for a single boot. You notice these things on a little ARM chip!
    - It keeps coping data from/to an "off-screen buffer" way too much, instead of only when the video needs to be synced.
    - It makes assumptions about all Video Buffers supporting Character-Mode VGA.
    - It can be configured to draw cyan/yellow ponies, instead of a normal NT boot menu.
    The ARM build now uses a "directui.c" implementation which fixes all these issues and is efficient and to the point. It presents a normal Windows boot selection menu on ARM.
[FREELDR]: Do not build any of the video routines, or the UI routines, on ARM.

svn path=/trunk/; revision=45524
2010-02-09 02:53:45 +00:00
Sir Richard
f0a8153aec [FREELDR]: No Linux support for ARM, no RS232 support for ARM, and no complex debug infrastructure for ARM either.
svn path=/trunk/; revision=45523
2010-02-09 02:38:23 +00:00
Sir Richard
85446d50ca [FREELDR]: Do not build Disk/Partition support for ARM, we use ram disks.
svn path=/trunk/; revision=45521
2010-02-09 02:33:31 +00:00
Sir Richard
7d76dde312 [FREELDR]: Do not build EXT2, ISO or NTFS support for ARM targets.
svn path=/trunk/; revision=45520
2010-02-09 02:32:59 +00:00
Sir Richard
9eea228a7d [FREELDR]: The WinLDR code forgot to update the File Path of boot driver entries from PA to VA as well, not just the registry path. It also tried to touch the PA LoaderBlock right after enabling the MMU. It should touch the VA LoaderBlock instead, since there is no guarantee that the address has been identity mapped (and hence the PA address interpreted as a VA address by the MMU is bogus).
svn path=/trunk/; revision=45519
2010-02-09 02:26:46 +00:00
Sir Richard
62cb7586f3 [FREELDR]: The hack to set pages from 0x100 to 0x1FF as busy so that the heap allocator wouldn't use them always restored the pages back to Free (since they usually were free on x86). However, if the pages were already being used in the first place, this made them appear free and corrupted existing memory. Fixed the hack so that it restores the previous state of the memory pages.
svn path=/trunk/; revision=45517
2010-02-09 02:22:08 +00:00
Sir Richard
68410c584a [ARMLLB]: PutChar should be a UCHAR routine, this way we can print characters above 127 (extended ASCII). This is needed for the progress bar, for example.
svn path=/trunk/; revision=45505
2010-02-09 01:46:01 +00:00
Sir Richard
fa51458191 [ARMLLB]: Fix typo.
svn path=/trunk/; revision=45504
2010-02-09 01:44:26 +00:00
Sir Richard
5786bc7b81 [NTOS]: Add a branch-to-self to start testing kernel code.
[ARMLLB]: Fix incorrect frame buffer size calculation.
[FREELDR]: Finish paging setup. Now we're able to boot to the kernel entrypoint at 0x808D3000, but I'm not happy with the memory descriptors.

svn path=/trunk/; revision=45480
2010-02-07 03:01:19 +00:00
Sir Richard
996267a6ff [FREELDR]: Start rewrite of eVb's messed up FreeLDR paging code. The new code is all dynamic and makes much better decisions as to the layout of the address space and how things will be implemented. Already, we are saving 16MB of VA. For now we still consume a large (1 MB) page for simplicity for the page directory, but that can go away later. I will post a diagram later if time permits. We get to MMU enabled and the PDE_BASE mapping works.
[NTOS]: Start redefining ARMv6 paging structures.

svn path=/trunk/; revision=45477
2010-02-07 00:09:10 +00:00
evb
fb88430110 - Make boot.s just stub to force load address, since ARM LLB already does setup. Will get rid of later.
- Get rid of all .pagedata stuff from boot.s. Now define simpler static page tables. Will probably get rid of later.
- Fix memory map to include framebuffer, had forgotten about it. Moved framebuffer to the nearest hole found. It happens to be 0xA0000, nice coincidence (matches x86!).
- Switch to nicer 8x16 font instead of 8x13. Now FreeLDR UI looks 99% identical to real PC.
- Start writing new ARMv6 Paging Code. Enable extended page tables and access bit, redefine structures, only for OS Loader for now.
- Identity map low-memory 1MB and MMIO 2MB space at 0x10000000 for Versatile. Need to make this board-specific later.
- Need to investigate sharing code with WinLDR.
- MMU enabled and Printf/LCD output works!.


svn path=/trunk/; revision=45440
2010-02-06 00:49:30 +00:00
evb
f00336e8df - Reading MBR from RAMDISK does not work since RAMDISK starts at BootSector (rdoffset) and disk sector functions are NULL. Build bogus signature/checksum for now, unless MBR really needed later.
- Now FreeLDR crashes no more and arrives at FrLdrStartup to boot kernel and setup paging.


svn path=/trunk/; revision=45425
2010-02-04 20:11:48 +00:00
evb
466a1c65ee - Define memory map structure for Versatile board/QEMU and send to OS Loader.
- Many hack removed.
- Better efficency use of memory layout.
- Region at 0x800000 now available for FreeLDR use to load kernel files.
- Implement simple ArmDiskNormalizeSystemPath so boot is allowed to happen.
- Use better stack address as defined in memory map.
- Now FreeLDR loads all files correctly from disk and is ready to jump to kernel. ARMv5 paging code must be rewritten before that can happen.


svn path=/trunk/; revision=45424
2010-02-04 19:52:13 +00:00
evb
d8dbcc153f - Fix text output
- Allow for more than just one parameter on the bootROM command line (sepearate with commas).
- Rdoffset is not hardcoded anymore, but passed on cmdline. Allows using images with different partition offsets.

svn path=/trunk/; revision=45420
2010-02-04 15:59:22 +00:00
evb
ff14d245dd - Refactor keyboard support to match serial. Now reading a key and waiting for a key are two things.
- Implement KbHit Firmware routine.
- It is now possible to interact with FreeLDR using the keyboard.


svn path=/trunk/; revision=45416
2010-02-04 08:02:30 +00:00
evb
57a1c9dbbf - Switch to bootvid 8x13 font (closer to PC/VGA experience).
- Fix LlbFwVideoGetDisplaySize return characters X/Y, not pixels. Now "Press F8 for advanced menu" shows".


svn path=/trunk/; revision=45415
2010-02-04 07:55:26 +00:00
evb
d598e90edb - Add PL031 RTC code for Versatile.
- Add RTC time to TimeInfo convert.
- Implement FirmWare GetTime function. Countdown in FreeLDR now working.


svn path=/trunk/; revision=45414
2010-02-04 07:22:03 +00:00
evb
1dc4d1bc2e - Add GetTime stub, bump version to 1.4.
- Implement function for drawing character on the screen when request come from firmware.
- Tui.c assumes all screens are x86 VGA Consoles with 8-bit character and 8-bit attribute. On ARM, call Mach function to draw character instead of drawing into ScreenMemory off-screen buffer.
- FreeLDR menu now appears, need GetTime for counter.


svn path=/trunk/; revision=45413
2010-02-04 06:44:06 +00:00
evb
ee2e3391be - Implement some simple video routines.
- Fix usable RAM not to include loader code and ram disk (up to 32MB).


svn path=/trunk/; revision=45412
2010-02-04 06:09:03 +00:00
evb
509e67f84f - Add stubs for video mach functions and update minor to 1.3.
svn path=/trunk/; revision=45411
2010-02-04 05:43:02 +00:00
evb
c478b48128 - Add support for ram disk offset (.IMG file is a RAW image, partition starts later...)
- Fix ram disk support in FreeLDR, ARC changes had broken support for booting FreeLDR (not just the Windows) from a ram disk. ARM port now initializes ramdisk as an FS device.
- Fix hardcoded DISKREADBUFFER and FILESYSBUFFER values. On ARM these will be dynamically selected for each board (need to improve this through LLB).
- Now FreeLDR.ini is read, and crash happens because UI routines are all NULL.


svn path=/trunk/; revision=45405
2010-02-04 01:24:45 +00:00
evb
09504f4242 - Enable RAMDISK support in LLB.
- Build commandline for OS Loader (FreeLDR).
- Now ready to start loading freeldr.ini


svn path=/trunk/; revision=45403
2010-02-03 23:17:16 +00:00
evb
59e8be0b65 - Flesh out more code.
- Support ATAG Linux/ARMBoot architecture defined-structures. These are used by all ARMBoot-compatible loaders (QEmu, U-boot, etc).
- Read RAMDisk, RAM, Command Line from ATAGs (use -append boot-device=RAMDISK).
- Make environment-get function read command-line.
- Allocate RAM memory structure portably.
- Validate board info on boot.


svn path=/trunk/; revision=45386
2010-02-03 03:14:59 +00:00
evb
e7ff33a8bc - Implement logical keyboard interface. Converts scan code to ASCII codes (just ok).
- Implement firmware ConsGetCh based on keyboard interface.
- Implement KMI (Keyboard & Mouse Interface) PL050 driver for Versatile to init PS/2 and read keyboard scancodes. Can now press ENTER/whatever when FreeLDR gives "Cannot find freeldr.ini" error.
- More fixes


svn path=/trunk/; revision=45385
2010-02-03 01:19:26 +00:00
Christoph von Wittich
d25de563d3 [FREELDR]
fix a typo

svn path=/trunk/; revision=45380
2010-02-02 17:28:10 +00:00
evb
2ce8b56e7c - Change ARM loading architecture to match EFI/Firmware model. LLB provides "firmware" routines, FreeLDR obtains "firmware" routines from the ARM block, and sets them as the Machine VTable. All board-specific FreeLDR code gone now.
- Start work on UI. Serial output is now only for debugging, not usual console.
- Need PL045 Keyboard code to handle KbHit/GetCh.
- Have PL011 code ready for MachVideo routines, coming soon...
- Start stub of environment functions.


svn path=/trunk/; revision=45379
2010-02-02 17:21:19 +00:00
evb
10d18dcf41 - More fixes
- Plugin support for booting FreeLDR when used as initrd on QEMU command-line.


svn path=/trunk/; revision=45377
2010-02-02 00:14:14 +00:00
evb
5024029061 - Fix bugs.
- Enable serial output.


svn path=/trunk/; revision=45373
2010-02-01 19:28:40 +00:00
evb
fc22be1381 - ARM LLB for OMAP3/Beagle (test with QEMU-Maemo) and Versatile (test with QEMU).
- Boots to blue screen with white text to indicate checkpoint.
- More cleanup/work needed.
- Will post Wiki on testing info soon.

svn path=/trunk/; revision=45372
2010-02-01 18:33:24 +00:00
Sir Richard
02c2d27111 [ARM]: Fix the ARM build, hopefully without breaking the x86 build in the process. Sorry buds!
svn path=/trunk/; revision=45368
2010-02-01 03:51:45 +00:00
Sylvain Petreolle
607494ed1c Move Reactos logon sound to WindowsLogon sound scheme.
Fixes bug 5002.

svn path=/trunk/; revision=45350
2010-01-30 17:07:33 +00:00
Dmitry Chapyshev
1c1c72324a - Add/update Ukrainian translation by Sakara Yevhen (eresid[at]gmail[dot]com) and Igor Paliychuk (igor-hkr[at]mail[dot]ru)
- Update Russian translation for sysdm

svn path=/trunk/; revision=45205
2010-01-22 17:03:08 +00:00
Sir Richard
2b21bf41f4 [FREELDR]: Jump to a standard 1-parameter STDCALL kernel entrypoint instead of a FASTCALL double-parameter entrypoint.
[NTOS]: Make KiSystemStartup the real C entrypoint of the kernel, and move the "Am I being booted by FreeLDR" logic inside it -- it will then call KiRosPrepareForSystemStartup as earlier.
[NTOS]: Move the Double Fault and Boot Stack declaration in C code, with the proper alignment attribute.
[NTOS]: Although the concern that KiSystemStartup cannot be 100% C since it modifies ESP is real (Thomas' original fix of Alex's code), we don't need that much of it in assembly. Instead, write a simple trampoline (KiSwitchToBootStack) inline which switches stacks and jumps to a second-stage C function.
[NTOS]: Completely remove boot.S as it isn't needed anymore, ReactOS startup is back to being (nearly) 100% C.

svn path=/trunk/; revision=45152
2010-01-19 18:27:24 +00:00
Sylvain Petreolle
39b6e96497 Assign rpcss to its actual group.
Fixes rpcss/spooler load order.

svn path=/trunk/; revision=45109
2010-01-16 18:44:17 +00:00
Sylvain Petreolle
7f3c71e5ea Disable spooler service.
This allows bootcdregtest to start here under qemu-kvm.

svn path=/trunk/; revision=45091
2010-01-15 22:17:16 +00:00
Matthias Kupfer
36ecaaeee0 -set fix line endings to preserve windows line endings
svn path=/trunk/; revision=45035
2010-01-10 20:43:27 +00:00
Dmitry Gorbachev
15269e4b77 [freeldr]
- Do not use GetSystemMemorySize(), which truncates size to 32 bit.
- Other minor changes.

svn path=/trunk/; revision=44974
2010-01-06 11:44:54 +00:00
Dmitry Gorbachev
a71c3f0d12 Check if MmHeapAlloc() failed.
svn path=/trunk/; revision=44972
2010-01-06 01:28:23 +00:00
ReactOS Portable Systems Group
785d4328db NMI Support Patch 14:
[BOOTDATA]: Add NMIDEBUG.SYS to the BOM and registry hive.

This is the last patch for NMI support. It is up to you to leverage this feature as needed through the NMIDEBUG.SYS driver.

svn path=/trunk/; revision=44879
2010-01-02 04:51:23 +00:00
Hervé Poussineau
9d97bda0a9 [freeldr] Never unmap hyperspace or HAL entries. Fixes boot problems with more than 1GB of RAM
svn path=/trunk/; revision=44805
2009-12-29 20:43:01 +00:00
Timo Kreuzer
f40fe21109 Fix release builds
svn path=/trunk/; revision=44737
2009-12-23 15:32:54 +00:00