#------------------------------------------------------------------------------
#
# InternalSwitchStackAsm for LoongArch
#
# Copyright (c) 2022, Loongson Technology Corporation Limited. All rights reserved.<BR>
#
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
#------------------------------------------------------------------------------

#define STORE   st.d    /* 64 bit mode regsave instruction */
#define LOAD    ld.d    /* 64 bit mode regload instruction */
#define RSIZE   8       /* 64 bit mode register size */

ASM_GLOBAL ASM_PFX(InternalSwitchStackAsm)

/**
  This allows the caller to switch the stack and goes to the new entry point

  @param  JumpBuffer    A pointer to CPU context buffer.
**/

ASM_PFX(InternalSwitchStackAsm):
  LOAD    $ra, $a0, RSIZE * 11
  LOAD    $s0, $a0, RSIZE * 0
  LOAD    $s1, $a0, RSIZE * 1
  LOAD    $s2, $a0, RSIZE * 2
  LOAD    $s3, $a0, RSIZE * 3
  LOAD    $s4, $a0, RSIZE * 4
  LOAD    $s5, $a0, RSIZE * 5
  LOAD    $s6, $a0, RSIZE * 6
  LOAD    $s7, $a0, RSIZE * 7
  LOAD    $s8, $a0, RSIZE * 8
  LOAD    $sp, $a0, RSIZE * 9
  LOAD    $fp, $a0, RSIZE * 10
  LOAD    $a0, $sp, 0
  LOAD    $a1, $sp, 8
  jirl    $zero, $ra, 0
  .end
