- 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
- 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
[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
[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
- 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
[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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
[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
[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