;------------------------------------------------------------------------------
;
; Copyright (c) Microsoft Corporation.
; SPDX-License-Identifier: BSD-2-Clause-Patent
;
; Module Name:
;
;   DynamicCookie.nasm
;
; Abstract:
;
;   Generates random number through CPU RdRand instruction on 64-bit platform
;   to store a random value in the GCC __stack_check_guard stack cookie.
;   The first byte is 0'd to prevent string copy functions from clobbering
;   the stack cookie.
;
; Notes:
;
; If RdRand fails, the build time static stack cookie value will be used instead.
;
;------------------------------------------------------------------------------

DEFAULT REL
SECTION .text

extern ASM_PFX(__security_cookie)
extern ASM_PFX(_CModuleEntryPoint)

;------------------------------------------------------------------------------
; VOID
; EFIAPI
; _ModuleEntryPoint (
;   Parameters are passed through. TODO: Make sure there are only two args on X64
;   );
;------------------------------------------------------------------------------
global ASM_PFX(_ModuleEntryPoint)
ASM_PFX(_ModuleEntryPoint):
  push rbx
  push rcx
  push rdx

  mov eax, 1                        ; Set eax to 1 to get feature information
  cpuid                             ; Call cpuid
  test ecx, 0x40000000              ; Test the rdrand bit (bit 30) in ecx
  jz c_entry                        ; If rdrand is not supported, jump to c_entry

  rdrand rax                        ; Call rdrand functionality here, getting a 64 bit value as on
                                    ; X64, __stack_chk_guard is a 64 bit value.
                                    ; CF=1 if RN generated ok, otherwise CF=0
  jnc c_entry                       ; If the cmd fails, don't, update __stack_chk_guard, we'll have to move forward
                                    ; with the static value provided at build time.

  lea rbx, [rel ASM_PFX(__security_cookie)]  ; load the address of __stack_check_guard into rbx

  xor ah, ah                        ; Zero a byte of the __stack_chk_guard value to protect against string functions
                                    ; (such as strcpy like functions) clobbering past the canary
  mov [rbx], rax                    ; Store our random value, with 0'd first byte to __stack_chk_guard

c_entry:
  pop rdx
  pop rcx
  pop rbx
  jmp ASM_PFX(_CModuleEntryPoint)
