Reactos-arm.rbuild uses the same settings as the x86 version, but defines _ARM_ and __arm__ instead. _M_ARM is already defined by the compiler.
Add ARM system call stub support to ncitool. We are currently using a SWI 0x2E to achieve this.
Add ARM support to winnt.h.
Add a preliminary intrin_arm.h
Add ketypes.h and mmtypes.h for ARM in the NDK. For now these are mostly stubs to allow compiling to work.
Add ARM support to winddk.h.
Fix some broken x86-only assumptions in the NDK.
Add config-arm-template.rbuild. By defauilt we build for armv5te (armv4 and v5 are supported, not v6).
Set ROS_ARCH=arm to switch to ARM. Set ROS_PREFIX to an appropriate MinGW-32 ARM PE crosscompiler.
svn path=/trunk/; revision=32131
We can now remove the portio.h and portio.c files in FreeLDR, since there's no more need to duplicate this code.
Additionally, this can be also done with the PPC port of FreeLDR or any other architecture, since it doesn't require per-architecture support in FreeLDR anymore -- only the underlying intrinsics in intrin.h must be implemented (note that for PPC, MIPS and ARM, the notion of a port doesn't even exist -- those functions map to register-reading functions, where register basically means memory).
svn path=/trunk/; revision=32130
Implement ramdisk support for FreeLDR (ramdisk.c and ramdisk.h). The implementation is portable across all architectures.
We also define a virual ramdisk file (hardcoded name is reactos.img, on the boot volume) for testing ramdisk support on architectures without native ramdisk support (such as x86). This could be further extended to allow network booting as a ramdisk at a later time, but is now primarly for test purposes.
We introduce two new FreeLDR command-line parameters that should be sent by non-x86 firmware: rdbase and rdsize, and a new freeldr.ini ARC path: ramdisk(0) -- this is compatible with Windows.
For compatibility and status output, we use 8MB chunks for reading virtual ramdisk files (a dot is displayed for each additional 8MB chunk).
Finally, for code-reuse, the ramdisk implementation will "steal" the BIOS support routines in the arch-vtable and replace them with simple memcpy wrappers. To the disk/filesystem routines in FreeLDR, they think they are reading from the BIOS (or other firmware), but instead, the sector reads are coming from memory).
For now, only FAT ramdisks have been tested, and a sector size of 512 bytes is implied. We also disable the FAT block cache since it wouldn't make much sense to cache RAM.
*** Note that kernel ramdisk support is missing, so once the kernel attempts to load drivers from the boot device (ramdisk(0)), it will panic. This is currently non an issue on non-x86 builds since the kernel won't get that far for a while.
svn path=/trunk/; revision=32129
We also define a virual ramdisk file (hardcoded name is reactos.img, on the boot volume) for testing ramdisk support on architectures without native ramdisk support (such as x86). This could be $
We introduce two new FreeLDR command-line parameters that should be sent by non-x86 firmware: rdbase and rdsize, and a new freeldr.ini ARC path: ramdisk(0) -- this is compatible with Windows.
For compatibility and status output, we use 8MB chunks for reading virtual ramdisk files (a dot is displayed for each additional 8MB chunk).
Finally, for code-reuse, the ramdisk implementation will "steal" the BIOS support routines in the arch-vtable and replace them with simple memcpy wrappers. To the disk/filesystem routines in Fre$
For now, only FAT ramdisks have been tested, and a sector size of 512 bytes is implied. We also disable the FAT block cache since it wouldn't make much sense to cache RAM.
$lds since the kernel won't get that far for a while.
svn path=/trunk/; revision=32128
- Add support for multiple search criterias, which are actually checked.
This makes it possible to pass parameters like "*.rbuild *.txt" to the cabman command line for adding, displaying and extracting files in a cabinet.
- Overhaul CreateSimpleCabinet, make it able to add multiple files to the cabinet using the new search criteria functions.
- Fix some comments and indentation here and there.
svn path=/trunk/; revision=32127
- This allows us to get rid of the /math directory and use -lgcc instead.
- Get rid of -ffreestanding, -fno-builtin and -O2. The former are not needed anymore since we're properly building a "freestanding" image anyway, just like the kernel. The latter is removed since optimization flags come from the project settings.
- Update code to fix warnings caused since we've removed -ffreestanding. GCC now warns about printf, sprintf and other C calls (including a change from %wZ to %S in winldr.c's sprintf calls).
- Don't use printf anymore -- rename freeldr's implementation to TuiPrintf. Just like in the kernel, you can't use printf in freeldr (since it's not running in a standard/full CRT environment).
- 124kb saved!
svn path=/trunk/; revision=32120
- Clean up Mm APIs which are not needed anymore.
- Get rid of the LOADER_HIGH_ZONE definition, now the real LoaderPagesSpanned value is calculated and used. As a result, minimum memory requirement (which was >= LOADER_HIGH_ZONE) is gone, and a maximum amount of memory which could be allocated is also gone (previously, not more that the LOADER_HIGH_ZONE).
- IMPORTANT: The FAT filesystem caching is disabled by default now due strange problems in 3rd boot stage, after switching the cache to use heap routines. Cache can't use non-heap routines anymore, since the memory will overlap the contigious modules memory space which ReactOS needs.
- More cleanup and more usage of the heap routines for temporary buffers.
- Fix a bug in MmAllocateMemoryWithType, where result of MmFindAvailablePages was checked against -1 in error case, when in reality it's 0 (spotted by Alex). NB: 0 page is marked as a reserved in x86 arch, so it's never going to be returned as an available.
svn path=/trunk/; revision=32113
- fix a check
- fix a region leak
- don't abuse GDIOBJ_LockObj to validate a handle, use GDIOBJ_ValidateHandle instead
- add some additional debug output
svn path=/trunk/; revision=32110
- enhance backtracing and debug output for GDI_DEBUG
- implement GDIOBJ_ValidateHandle()
Stack record dumping is commented out atm due to missing support from ntoskrnl
svn path=/trunk/; revision=32109
We cast all ULONG's to UINT's here, because this is the only type for which we can be sure that it defines to "unsigned int".
ULONG is "unsigned long" with the Windows headers and "unsigned int" with the host headers (for 64-bit compatibility), therefore we need the casts.
svn path=/trunk/; revision=32101
The only correct and always working way is checking for INVALID_SET_FILE_POINTER.
- Fix setting the file attributes.
We didn't pass the destination directory before, so if the user specified another destination directory, the SetFileAttributes call failed.
- Simplify GetAttributesOnFile and SetAttributesOnFile
svn path=/trunk/; revision=32092
- Enable the RAW codec in the SelectCodec() function
- Don't initialize a codec in the CCabinet constructor, this will be done by the ParseCmdline() function
- Fix parsing the -L and -P parameters, when there's no whitespace between the parameter and the value
- Remove some unneeded casts
- Remove the cabman vesion number, it was never updated, although there were many changes since the first version
svn path=/trunk/; revision=32089