Difference between revisions of "AMD64"

From ReactOS Wiki
Jump to: navigation, search
(Status)
(Add navigation template)
(3 intermediate revisions by 3 users not shown)
Line 1: Line 1:
This page describes the current status of the AMD64 port of ReactOS. AMD64 refers to AMD's specifications for a 64-bit extension to the x86 instruction set. It is also known as x86-64 (and variants such as x86_64 and x64).
+
This page describes the current status of the AMD64 port of ReactOS. AMD64 refers to AMD's specifications for a 64-bit extension to the x86 instruction set. It is also known as x64, x86-64 or x86_64 and it is not limited to AMD processors.
  
 
The [http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/ ros-amd64-bringup] branch was created on {{rev|34699}} by [[User:ThePhysicist|Timo Kreuzer]].
 
The [http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/ ros-amd64-bringup] branch was created on {{rev|34699}} by [[User:ThePhysicist|Timo Kreuzer]].
 +
The newer development branch is [https://git.reactos.org/?p=reactos.git;a=shortlog;h=refs/heads/tkreuzer/The_ultimate_ros_amd64_bringup The_ultimate_ros_amd64_bringup], which tends to be outdated and might not boot.
  
 
= Status =
 
= Status =
  
* Everything builds
+
* The current code base can be compiled for x64 using the 64 bit development command prompt from VS 2015/2017 (see [[Building_ReactOS]])
* A bootcd is created
+
* You can compile bootcd or livecd. rosapps and rostests modules might not yet build entirely.
* setupldr loads, switches the cpu to long mode, initializes hardware/memory/paging and jumps to ntoskrnl
+
* The main code base (git master) does not boot very far yet, but the 64 bit development branch boots on VirtualBox.
* Basic MM (memory manager) initialization is done, then the system crashes
+
* Latest branch version boots up to desktop, some apps as cmd and notepad work fine, but it hangs after some time.
* Non-paged pool allocations work
+
* There is no USB support yet and some other features are also disabled.
* Debugging with WinDbg (break points, single stepping etc.) works
+
 
* Enabling interrupts makes everything go nuts
+
 
  
 
== Completion Status (rough estimates) ==
 
== Completion Status (rough estimates) ==
Line 19: Line 20:
 
! comment
 
! comment
 
|-
 
|-
| freeldr    || 95% || only fixes expected
+
| freeldr    || 100% ||  
 
|-
 
|-
| hal        ||  5% || only initial work has been done, most missing is support for interrupts
+
| hal        ||  95% || Mostly completed, but probably needs some bugfixing here and there
 
|-
 
|-
| ntoskrnl/ke || 50% || core functionality is implemented
+
| ntoskrnl/ke || 95% || Mostly completed, some low level asm code might need bug fixing.
 
|-
 
|-
| ntoskrnl/mm || 10% || only a few functions are implemented, most stuff is missing
+
| ntoskrnl/mm || 95% || Mostly completed, some limitations might exist.
 
|-
 
|-
| rtl        || 60% || exception handling is missing and unwinding is incomplete
+
| rtl        || 90% || exception handling and unwinding is experimental and needs testing and potentially fixing.
 
|-
 
|-
| crt        || 60% || missing stuff here and there
+
| crt        || 90% || Some math functions are missing and exception related functions are experimental.
 
|-
 
|-
| [[PSEH]]    ||  0%                              100% in MSVC || <s>'''Showstopper for AMD64 branch. Unimplemented: It waits for SEH support in mingw-w64 version of GCC compiler''' </s>
 
See also [[Building_MINGW-w64]], [[Techwiki:SEH64]]
 
 
Not a problem anymore with MSVC compiler http://www.dreimer.de/?p=1212
 
 
|}
 
|}
  
 
==Building amd64 port==
 
==Building amd64 port==
 +
At the moment only building with Visual Studio is supported. VS 2015/2017 Community edition are free (as in free beer, nom nom) work fine.
 +
Building works exactly the same as building the x86 version with a Visual Studio build environment ([[Building_ReactOS]]), except that you have to use the 64 bit developer command prompt.
 +
Building with GCC will be able, once somebody takes the time to create a 64 bit version of RosBE again, using the latest mingw-w64. After that build fixes are expected to be required.
 +
 
First, install [http://dreimer.eu/rosbe/RosBE64.7z Amd64 addon for RosBE] (taken from [http://www.reactos.org/forum/viewtopic.php?f=9&t=9082 here]) then start a 64-bit RosBE session with a custom shortcut:
 
First, install [http://dreimer.eu/rosbe/RosBE64.7z Amd64 addon for RosBE] (taken from [http://www.reactos.org/forum/viewtopic.php?f=9&t=9082 here]) then start a 64-bit RosBE session with a custom shortcut:
  
Line 63: Line 64:
 
* ViewVC of [http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/ ros-amd64-bringup]
 
* ViewVC of [http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/ ros-amd64-bringup]
 
* [http://www.nynaeve.net/?p=99 Nynaeve: Programming against the x64 exception handling support]
 
* [http://www.nynaeve.net/?p=99 Nynaeve: Programming against the x64 exception handling support]
* [http://github.com/reactos/reactos/pull/115 PR with x64 improvements on github]
 
 
* [http://github.com/reactos/reactos/pull/361 PR Make ReactOS boot to user mode on x64]
 
* [http://github.com/reactos/reactos/pull/361 PR Make ReactOS boot to user mode on x64]
 
* [http://youtu.be/qZ9KvJv7P3E Attempt to boot ReactOS x64 from 01/01/2018]
 
* [http://youtu.be/qZ9KvJv7P3E Attempt to boot ReactOS x64 from 01/01/2018]
Line 69: Line 69:
 
==See Also==
 
==See Also==
 
[[ReactOS_ports#AMD64_.28.22amd64.22.29|ReactOS Ports AMD64 Section]]
 
[[ReactOS_ports#AMD64_.28.22amd64.22.29|ReactOS Ports AMD64 Section]]
 +
 +
{{Navigation Ports}}
  
 
[[Category:Development]]
 
[[Category:Development]]
 
[[Category:amd64]]
 
[[Category:amd64]]
 
[[Category:Branches]]
 
[[Category:Branches]]

Revision as of 17:35, 15 November 2018

This page describes the current status of the AMD64 port of ReactOS. AMD64 refers to AMD's specifications for a 64-bit extension to the x86 instruction set. It is also known as x64, x86-64 or x86_64 and it is not limited to AMD processors.

The ros-amd64-bringup branch was created on r34699 by Timo Kreuzer. The newer development branch is The_ultimate_ros_amd64_bringup, which tends to be outdated and might not boot.

Status

  • The current code base can be compiled for x64 using the 64 bit development command prompt from VS 2015/2017 (see Building_ReactOS)
  • You can compile bootcd or livecd. rosapps and rostests modules might not yet build entirely.
  • The main code base (git master) does not boot very far yet, but the 64 bit development branch boots on VirtualBox.
  • Latest branch version boots up to desktop, some apps as cmd and notepad work fine, but it hangs after some time.
  • There is no USB support yet and some other features are also disabled.


Completion Status (rough estimates)

completion comment
freeldr 100%
hal 95% Mostly completed, but probably needs some bugfixing here and there
ntoskrnl/ke 95% Mostly completed, some low level asm code might need bug fixing.
ntoskrnl/mm 95% Mostly completed, some limitations might exist.
rtl 90% exception handling and unwinding is experimental and needs testing and potentially fixing.
crt 90% Some math functions are missing and exception related functions are experimental.

Building amd64 port

At the moment only building with Visual Studio is supported. VS 2015/2017 Community edition are free (as in free beer, nom nom) work fine. Building works exactly the same as building the x86 version with a Visual Studio build environment (Building_ReactOS), except that you have to use the 64 bit developer command prompt. Building with GCC will be able, once somebody takes the time to create a 64 bit version of RosBE again, using the latest mingw-w64. After that build fixes are expected to be required.

First, install Amd64 addon for RosBE (taken from here) then start a 64-bit RosBE session with a custom shortcut:

Normal shortcut for i386 port is: C:\Windows\System32\cmd.exe /t:0A /k "e:\RosBE\RosBE.cmd"

The one for AMD64 should be:

C:\Windows\System32\cmd.exe /t:0A /k "e:\RosBE\RosBE.cmd" amd64

(And for ARM: C:\Windows\System32\cmd.exe /t:0A /k "e:\RosBE\RosBE.cmd" arm )

Here "e:\RosBE" was install path of RosBE.

Run the custom shortcut, then proceed as usual (ninja bootcd and similar). You can build amd64 and arm at the same trunk you use for x86 build. New directories will be created and the built ISO will also have different name: ReactOS-amd64.iso

(or ReactOS-arm.iso for ARM).

Links

See Also

ReactOS Ports AMD64 Section

ReactOS ports‎
In active development Intel IA-32 (x86) | AMD64 (x64)
In slow development ARM64 (aarch64) | ARM32 (armv7) | NEC PC-98 (x86) | OG Xbox (x86)
Unmaintained OLPC (x86)
Missing ports that Windows has Intel IA-64 (Itanium) | IBM PS/2 MCA (x86) | SGI 320/540 (x86) | DEC Alpha (axp) | MIPS | PowerPC (ppc)
Ideas for new ports Apple TV 1st Gen (x86) | FM Towns (x86) | PlayStation 4 (x64) | Intel SFI (x86)