; Copyright 2019 The Crashpad Authors. All rights reserved.
;
; Licensed under the Apache License, Version 2.0 (the "License");
; you may not use this file except in compliance with the License.
; You may obtain a copy of the License at
;
;     http://www.apache.org/licenses/LICENSE-2.0
;
; Unless required by applicable law or agreed to in writing, software
; distributed under the License is distributed on an "AS IS" BASIS,
; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
; See the License for the specific language governing permissions and
; limitations under the License.

  EXPORT |?CaptureContext@crashpad@@YAXPEAU_CONTEXT@@@Z|
  AREA |.text|, CODE
|?CaptureContext@crashpad@@YAXPEAU_CONTEXT@@@Z| PROC
  ; Save general purpose registers in context.regs[i].
  ; The original x0 can't be recovered.
  stp x0, x1, [x0, #0x008]
  stp x2, x3, [x0, #0x018]
  stp x4, x5, [x0, #0x028]
  stp x6, x7, [x0, #0x038]
  stp x8, x9, [x0, #0x048]
  stp x10, x11, [x0, #0x058]
  stp x12, x13, [x0, #0x068]
  stp x14, x15, [x0, #0x078]
  stp x16, x17, [x0, #0x088]
  stp x18, x19, [x0, #0x098]
  stp x20, x21, [x0, #0x0a8]
  stp x22, x23, [x0, #0x0b8]
  stp x24, x25, [x0, #0x0c8]
  stp x26, x27, [x0, #0x0d8]
  stp x28, x29, [x0, #0x0e8]

  ; The original LR can't be recovered.
  str LR, [x0, #0x0f8]

  ; Use x1 as a scratch register.
  mov x1, SP
  str x1, [x0, #0x100] ; context.sp

  ; The link register holds the return address for this function.
  str LR, [x0, #0x108]  ; context.pc

  ; pstate should hold SPSR but NZCV are the only bits we know about.
  mrs x1, NZCV

  ; Enable Control flags, such as CONTEXT_ARM64, CONTEXT_CONTROL,
  ; CONTEXT_INTEGER
  ldr w1, =0x00400003

  ; Set ControlFlags /0x000/ and pstate /0x004/ at the same time.
  str x1, [x0, #0x000]

  ; Restore x1 from the saved context.
  ldr x1, [x0, #0x010]

  ; TODO(https://crashpad.chromium.org/bug/300): save floating-point registers

  ret
  ENDP

  END
