#------------------------------------------------------------------------------
#
# Copyright (c) Microsoft Corporation.
# Copyright (c) 2026, Loongson Technology Corporation Limited. All rights reserved.<BR>
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
# Module Name:
#
#   DynamicCookieGcc.S
#
# Abstract:
#
#   Generates random number through the RdTime instruction on a 64-bit LOONGARCH64 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:
#
# Use the RngLib library to get random numbers. LoongArch64 currently does not support like
# `RdRand` or `RNDR` instructions, it can use the `RdTime` and a xorshift64 algorithms to
# generate pseudo-random numbers.
#
#------------------------------------------------------------------------------

#include <Library/RngLib.h>

ASM_GLOBAL ASM_PFX (_ModuleEntryPoint)

#------------------------------------------------------------------------------
# VOID
# EFIAPI
# _ModuleEntryPoint (
#   The parameters are saved to the stack when it calls other functions.
# )
#------------------------------------------------------------------------------
ASM_PFX(_ModuleEntryPoint):
  addi.d    $sp, $sp, -0x20
  st.d      $a0, $sp, 0x0
  st.d      $a1, $sp, 0x8
  st.d      $ra, $sp, 0x10

  //
  // Use the stack to pass parameters.
  //
  addi.d    $a0, $sp, 0x18
  bl        GetRandomNumber64

  //
  // Load the random number from the stack.
  //
  ld.d      $t0, $sp, 0x18

  //
  // Zero the first byte of the random value
  //
  bstrins.d $t0, $zero, 7, 0

  la.local  $t1, __stack_chk_guard
  st.d      $t0, $t1, 0
  dbar      0

  ld.d      $a0, $sp, 0x0
  ld.d      $a1, $sp, 0x8
  ld.d      $ra, $sp, 0x10
  addi.d    $sp, $sp, 0x20

c_entry:
  b         _CModuleEntryPoint     // Jump to the C module entry point

.end
