Commit graph

221 commits

Author SHA1 Message Date
Jérôme Gardou d55276aad9 [FREELDR] Save used register when calling PNPBIOS 2021-04-28 13:10:23 +02:00
Jérôme Gardou 2bf116359b [FREELDR] Force alignment of .text section on disk
Fixes boot for clang & GCC-amd64 build
Also rename freeldr_i386.lds to freeldr_gcc.lds for better clarity
2021-04-28 13:10:23 +02:00
Serge Gautherie 25e1235fe7
[FREELDR] Remove a few useless code lines (#3503)
CORE-14516
2021-03-09 16:02:11 +01:00
Serge Gautherie abc84a742b [FREELDR] LoadAndBootWindowsCommon(): Use UNREACHABLE, on success
KiSystemStartup() is DECLSPEC_NORETURN.
2021-03-05 00:43:15 +03:00
Victor Perevertkin f82eb0fede this seem to be the only combination which works on msbuild-msvc 2021-03-03 08:34:32 +01:00
Jérôme Gardou 1ea6157cbf [FREELDR] Use target_link_options instead of add_target_link_flags
CORE-17423
2021-03-03 08:34:32 +01:00
Jérôme Gardou e7f08b3e30 [FREELDR] Use decimal numbers for section & file alignment
CORE-17423
2021-03-03 08:34:32 +01:00
Serge Gautherie 205b6e56c8
[FREELDR] DetectPnpBios(): Add 'i' to ERR() debug print (#3465)
Addendum to 17990b2 (r73617). CORE-12623
2021-02-22 21:10:27 +03:00
Hervé Poussineau c8c9a70461 [FREELDR/x64] Fix MSVC x64 boot 2021-02-22 15:15:28 +01:00
Hervé Poussineau 05fbfb0cad [FREELDR/x64] Partly revert 5367ae5760
Using RealModeEntryPoint uses IMAGE_REL_I386_REL16, now supported by obj2bin
2021-02-22 14:21:43 +01:00
Hervé Poussineau 5367ae5760 [FREELDR] Fix check, as FreeLoader x64 compiled with GCC only have 2 sections (.text and .bss) 2021-02-22 00:08:28 +01:00
Hervé Poussineau 78d9c38c37 [FREELDR/x64] Change syntax to be compatible with GAS x64 2021-02-22 00:08:28 +01:00
Hervé Poussineau 90f9666308 [FREELDR] In PXE, do not cache the current file
We can already restart reading the whole file if seeking backward,
and there is currently no more use case of backward seek.

By doing so, we gain 1MB of memory when using PXE.
2021-02-04 11:15:47 +01:00
Hervé Poussineau bfedf9760c [FREELDR] Disable SSE instructions for GCC x64
Even if all x64 CPUs can handle SSE instructions, prevent GCC x64 to
generate them, as FreeLoader is not ready to handle them.
2021-02-01 19:57:12 +01:00
Hervé Poussineau db35a7861f [FREELDR] Fix MSVC x64 compilation after d2f73877b7 2021-01-29 07:46:13 +01:00
Hervé Poussineau d2f73877b7 [FREELDR/x64] Change syntax to be compatible with GAS x64 2021-01-28 23:10:01 +01:00
Hervé Poussineau ec7d874c18 [FREELDR/x64] Merge x64 and x86 versions, to fix compilation with GAS x64
Upper bits of rcx are already checked to be 0. So, we can only take care of lower bits.
This also generates smaller code.
2021-01-28 23:10:01 +01:00
Hervé Poussineau 5904361a54 [FREELDR] In PE loader, use cache to not load twice the start of the file
This is especially important in PXE boot, where a seek backwards requires reloading the file from start.
2021-01-28 20:45:44 +01:00
Jérôme Gardou c8d07514c8 [CMAKE] Fix GCC -fstack-protector usage 2021-01-05 13:38:57 +01:00
Hermès Bélusca-Maïto 5dd0b32799
[FREELDR] EMS boot options: Parse NT kernel load options in a consistent manner. Addendum to d887308b.
In particular the parsing should not care about the letter case.
2020-12-27 00:51:57 +01:00
Hermès Bélusca-Maïto 4792c007aa
[FREELDR] Add the possibility to change the boot load options from TXTSETUP.SIF
at runtime from the boot selection menu or from FREELDR.INI.

CORE-17350, CORE-9023

For a proper override of the options by new user options, specify the
/SIFOPTIONSOVERRIDE switch in addition. Otherwise, user options are
merged with those retrieved from TXTSETUP.SIF, with priority given to
the former ones.

- Update the documentation for the 'ReactOSSetup' OS type in the
  FREELDR.INI file template.

- Use a different prompt in the custom boot options editor for the
  'ReactOSSetup' OS type, with adequate explanation.

- Get rid of the ReactOS-specific TXTSETUP.SIF 'DbgOsLoadOptions' value,
  and use instead the Windows-compatible 'SetupDebugOptions' value that
  is added to the other load options when debugging is to be enabled.
2020-11-04 19:59:28 +01:00
Hermès Bélusca-Maïto d45b268127
[FREELDR] Fix x64 compilation warning (addendum to commit d887308b). 2020-11-04 19:59:27 +01:00
Hermès Bélusca-Maïto d887308b2f
[FREELDR] Parse NT kernel load options in a consistent manner.
- Introduce a set of NtLdrGet(Next)Option(Ex) helpers that allow
  retrieving respectively, the "next" option in an options string,
  and retrieving a given named option in such an options string,
  by correctly parsing that string.

  Valid syntaxes:
      /OPTION1 /OPTION2/OPTION3 OPTION4 /OPTION5(=...) ...

  Options separators are slashes, or whitespace (space, tab), mandatory
  if no slash is used, and otherwise optional.

- Use these functions wherever NT load options are being parsed.

- Simplify the parsing of /DEBUGPORT=... using these functions.

- When parsing the /HAL=... or /KERNEL=... options, only the first
  encountered one is taken into account, any other ones are discarded.

- When parsing the other load options, only their first occurrences are
  taken into account, any other repetitions are discarded.
  * The NOPAE option overrides any previous PAE option.
  * Any NOEXECUTE(=) option should override any previous
    NOEXECUTE=ALWAYSOFF (or equivalently, EXECUTE) option.
2020-11-03 01:52:47 +01:00
Hermès Bélusca-Maïto d8547a8f20
[FREELDR] In LoadReactOSSetup(), verify that our BootType is really ReactOSSetup. 2020-11-03 01:52:47 +01:00
Hermès Bélusca-Maïto 3033580c1a
[FREELDR] Minor code formatting / renaming some variables. 2020-11-03 01:52:46 +01:00
Hermès Bélusca-Maïto 04b4e3b05d
[FREELDR] Fix the parameter type of WinLdrSetupEms()
It's a NULL-terminated string. And thus avoid an unelegant cast.
2020-11-03 01:52:36 +01:00
Hermès Bélusca-Maïto 58866a112a
[FREELDR] Remove the 'Setup' parameter of the LoadAndBootWindowsCommon() function.
This parameter is not needed since it's possible to determine, from
within this function, whether or not we are in Setup mode, by just
looking for the presence of a non NULL LoaderBlock->SetupLdrBlock.
2020-11-03 01:51:48 +01:00
Hermès Bélusca-Maïto 64ca7f6427
[FREELDR] Remove trailing whitespace. 2020-11-03 01:51:47 +01:00
Jérôme Gardou 00ed72d7e8 [CMAKE] Get rid of add_compile_flags
Use add_compile_options and the like instead
2020-10-20 21:44:54 +02:00
Jérôme Gardou 7e116f0ef3 [CMAKE] Get rid of replace_compile_flags
Introduce a finer-grained remove_target_compile_option instead
2020-10-20 21:44:54 +02:00
Stanislav Motylkov 8a4273b6ee
[FREELDR] Add variable for default text color
On PC/AT-compatible machines it's Gray, and on NEC PC-98 series it's White.
2020-10-17 19:28:08 +03:00
Stanislav Motylkov db1b04340f
[FREELDR] Use BIOS font and accelerated text drawing on NEC PC-98
Both features are switchable via global variables.
2020-10-17 19:28:05 +03:00
Serge Gautherie 889b077b23
[REACTOS] *.spec: Fix some function/parameter types (#3154) 2020-09-20 19:21:11 +02:00
Timo Kreuzer 2aca4b2795 [ASM] Fix boot with VS 16.7.3 / MSVC 19.27
See https://developercommunity.visualstudio.com/content/problem/1180800/ml-x86-assume-directive-causes-invalid-code-genera.html
2020-09-12 15:01:04 +02:00
Stanislav Motylkov 2a77e359e4
[XBOX] Move NV2A XGPU definitions into header file
TODO: helper functions should be also moved. CORE-16216
2020-08-26 16:58:01 +03:00
Stanislav Motylkov f420f2e5df
[XBOX] Move SuperIO definitions and helpers into header file
CORE-16216
2020-08-26 02:06:19 +03:00
Thomas Faber 794d00c303
[FREELDR][NETKVM][ATL_APITEST] Pick the GCC code path for clang in some cases. CORE-17202 2020-08-23 12:07:37 +02:00
Thomas Schneider a245c98fc6
[FREELDR] Bootsector fix for CHS read on old BIOSes which lack INT 3e (#3078)
At line 263 a 'pop es' is missing before 'ret' in ReadCHS() function,
just like in the ReadLBA() function. CORE-17178

Co-authored-by: Dmitry Borisov <di.sean@protonmail.com>
2020-08-19 19:10:02 +03:00
Stanislav Motylkov 415c737cc3
[FREELDR] Add display controller detection for Xbox
Also add system identifier here.

[BOOTDATA] Fix some typos

CORE-16216
2020-06-09 22:02:09 +03:00
Stanislav Motylkov 092bc78a42
[FREELDR] Fix register offset
Addendum to 10e52f6.
2020-06-03 02:04:07 +03:00
Hervé Poussineau 468b8f3719 [FREELDR] Fix I/O range size of serial ports 2020-05-17 23:08:26 +02:00
Dmitry Borisov 98c17d3120
[FREELDR] Add vertical screen scrolling for Xbox with console mode (#2745)
Also turn off debug messages to screen before setting up the CPU (To print a character to the screen on some ports the MMIO access should be executed, so it throws an exception).

CORE-16216
2020-05-10 18:35:51 +02:00
Stanislav Motylkov 10e52f68b2
[FREELDR] Fix some more register accesses and magic values
Addendum to 764e884.
2020-05-08 23:02:42 +03:00
Joachim Henze 7c81fb8f56 [FREELDR] Workaround regression CORE-16469
This prevents ReactOS asserting when 'My computer'
is opened, while it tries to send commands to floppy drive.

Many thanks to patches author Doug Lyons.

The regression was introduced by 0.4.13-dev-1081-g
eeff926ede

patch was committed to 0.4.13rls and 0.4.14rls as well.

Today it was committed to master as well, as
the initially planned investigation for the root cause
did still not happen and we can not afford the time
to retest and workaround this over and over again.
Thank god that Oleg Dubinskiy was still around to retest
this again and confirmed it can still happen, because
unlike initially, personally I was not able to reproduce it
today anymore!

Since every release was work-arounded, we did never
expose the bug in any final release.
2020-05-06 23:45:37 +02:00
Stanislav Motylkov 764e884f5e
[FREELDR] Work with Xbox GPU memory registers properly
Bug was noticed with GCC 8.4
2020-05-02 23:23:33 +03:00
Dmitry Borisov 4501bbac8f
[KDCOM][NTOS:INBV][FREELDR] Decrease default baud rate for PC-98 target (#2601)
According to PC-9801 Bible p. 50, divisor for PIT will become unsupported in some cases after having removed the fractional part. Replace 19200 value with 9600 which is supported by both 10 MHz and 8 MHz machines.
2020-04-21 23:22:42 +03:00
Dmitry Borisov 61d966bf1a
[FREELDR] Fix typos and PC-98 boot (#2564)
- INT 18h, AH=A0h doesn't exist, it was meant to be AH=0Ah. Thanks to SimK (@simk98l) on twitter for bug reporting and fix.
- Adress -> Address.
2020-04-17 20:27:20 +02:00
Victor Perevertkin 7e069ccdb2
[CMAKE] Replace custom functions to built-in ones
add_target_compile_definitions -> target_compile_definitions
add_target_compile_flags -> target_compile_options
add_target_include_directories -> target_include_directories
2020-04-16 15:59:38 +03:00
Adam Słaboń 7b24d00ef1
[FREELDR][INSTALL][FDEBUG] Include FreeLDR tools in LiveCD and HybridCD (#2550)
It might be useful to have them on LiveCD/HybridCD as well.
2020-04-15 12:37:21 +02:00
Victor Perevertkin 92dfec219d
[CMAKE][CONFIGURE] Enable runtime checks on MSVC by default.
Remove RTC switch from configure.cmd, now MSVC runtime checks are
supposed to be enabled/disabled via CMake define (-DRUNTIME_CHECKS=1)
Prepare for adding more dynamic analysis options
2020-04-11 02:48:12 +03:00