Difference between revisions of "AMD64"

From ReactOS Wiki
Jump to: navigation, search
(Put some info in lead section, add ViewVC of amd64 to links, add {{Outdated}})
m
(30 intermediate revisions by 13 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 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 =
  
* Parts of the tree build: freeldr, ntoskrnl (with warnings and only partly), bootdrivers, some apps
+
* 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.
* ntoskrnl dies after first initialisation work
+
* 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.
  
=== Links ===
+
 
 +
 
 +
== Completion Status (rough estimates) ==
 +
{| class="wikitable"
 +
!
 +
! 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 [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:
 +
 
 +
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 ([[Building_ReactOS|'''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 ==
  
 
* 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]
 +
* [https://git.reactos.org/?p=reactos.git;a=shortlog;h=refs/heads/tkreuzer/The_ultimate_ros_amd64_bringup/ The_ultimate_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/361 PR Make ReactOS boot to user mode on x64]
 +
* [http://youtu.be/qZ9KvJv7P3E Attempt to boot ReactOS x64 from 01/01/2018]
 +
* [https://youtu.be/-rgsXXbs2FA Attempt to boot ReactOS x64 RAM boot on modern hardware from 31/05/2019]
 +
 +
==See Also==
 +
[[ReactOS_ports#AMD64_.28.22amd64.22.29|ReactOS Ports AMD64 Section]]
 +
 +
{{Navigation Ports}}
  
{{Stub}}
+
[[Category:Development]]
{{Outdated}}
+
[[Category:amd64]]
 +
[[Category:Branches]]

Revision as of 00:45, 2 June 2019

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) | Apple TV (1st generation) (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 FM Towns (x86) | PlayStation 4 (x64) | Intel SFI (x86)