;============================================================================
;##
;## This file is part of the coreboot project.
;##
;## Copyright (C) 2018, The Linux Foundation.  All rights reserved.
;##
;## This program is free software; you can redistribute it and/or modify
;## it under the terms of the GNU General Public License version 2 and
;## only version 2 as published by the Free Software Foundation.
;##
;## This program is distributed in the hope that it will be useful,
;## but WITHOUT ANY WARRANTY; without even the implied warranty of
;## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;## GNU General Public License for more details.
;##
;============================================================================
;  Name:
;    debug_cb_common.cmm
;
;  Description:
;     Debug coreboot Environment
;============================================================================

;============================================================================
;  CMM script variables
;============================================================================

LOCAL &BBStage			// Bootblock   Stage stop?
LOCAL &VERStage			// Verify      Stage stop?
LOCAL &ROMStage			// Rom         Stage stop?
LOCAL &QCLStage			// QCL         Stage stop?
LOCAL &RAMStage			// Ram         Stage stop?
LOCAL &BL31Stage		// BL31        Stage stop?
LOCAL &DCStage			// Depthcharge Stage stop?

LOCAL &KernelSyms		// Load Kernel Symbols?

LOCAL &RAMLoad			// T32 Load Code?

;============================================================================

;---------------------------------------------------
; Entry point
;---------------------------------------------------
ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName

  // Parse for RAMLoad first
  if (STR.CP("&ImageName","RAM,*"))
  (
    &RAMLoad=TRUE()
    &ImageName=STR.CUT("&ImageName",4)
  )
  else
    &RAMLoad=FALSE()

  // Parse &ImageName the easy way
  if (STR.CP("&ImageName","*ALL*"))
  (
    &BBStage=TRUE()
    &VERStage=TRUE()
    &ROMStage=TRUE()
    &QCLStage=TRUE()
    &RAMStage=TRUE()
    ;&BL31Stage=TRUE()
    &DCStage=TRUE()
    &KernelSyms=STRING.CP("&ImageName", "*KERNEL*")
  )
  else
  (
    &BBStage=STRING.CP("&ImageName","*BB*")
    &VERStage=STRING.CP("&ImageName","*VER*")
    &ROMStage=STRING.CP("&ImageName","*ROM*")
    &QCLStage=STRING.CP("&ImageName","*QCL*")
    &RAMStage=STRING.CP("&ImageName","*RAM*")
    &BL31Stage=STRING.CP("&ImageName","*BL31*")
    &DCStage=STRING.CP("&ImageName","*DC*")
    &KernelSyms=STRING.CP("&ImageName", "*KERNEL*")
  )

  PRINT %String "Debug Script: debug_cb_common.cmm"
  PRINT %String "Images to debug: &ImageName"
  PRINT %String "Loading Kernel Symbols: &KernelSyms"
  PRINT %String "RAMLoad Requested: &RAMLoad"
  PRINT %String "BootBlock   Entry Addr: &BBEntryAddr"
  PRINT %String "VerStage    Entry Addr: &VEREntryAddr"
  PRINT %String "RomStage    Entry Addr: &ROMEntryAddr"
  PRINT %String "QCLStage    Entry Addr: &QCLEntryAddr"
  PRINT %String "RamStage    Entry Addr: &RAMEntryAddr"
  PRINT %String "BL31        Entry Addr: &BL31EntryAddr"
  PRINT %String "DepthCharge Entry Addr: &DCEntryAddr"
  PRINT %String "Kernel      Entry Addr: &KernelEntryAddr"
  PRINT %String "PreRamCbfsCache:        &PreRamCbfsCache"
  PRINT %String "PreRamConsoleAddr:      &PreRamConsoleAddr"
  PRINT %String "VBoot2Work:             &VBoot2Work"
  PRINT %String "Stack:                  &Stack"
  PRINT %String "Ttb:                    &Ttb"
  PRINT %String "Timestamp               &Timestamp"
  PRINT %String "RamConsoleAddr          &RamConsoleAddr"
  PRINT %String "CbmemTop                &CbmemTop"
  PRINT %String "PostRamCbfsCache        &PostRamCbfsCache"

  // HW at BB entry, first stop: bootblock
  ////////////////////////////////////////

  if &BBStage
  (
    &imgpath="build\cbfs\fallback\bootblock.elf"
    if (&RAMLoad)
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath
    else
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode

    ;uncomment b.s if not simulating (CONFIG_SOC_SIMULATE)
    ;b.s run_romstage /o
    ;d.set &PreRamConsoleAddr++0x8000 0
    d.dump &PreRamConsoleAddr /spotlight
    print %String "Now the control is in BootBlock, press enter after debugging to go to next stage"
    print %String "Press enter to go to next stage"
    enter
  )

  go &VEREntryAddr
  wait !run()

  if &VERStage
  (
    &imgpath="build\cbfs\fallback\verstage.elf"
    if (&RAMLoad)
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /noclear
    else
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode /noclear

    print %String "Now the control is in VERStage, press enter after debugging to go to next stage"
    print %String "Press enter to go to next stage"
    enter
  )

  go &ROMEntryAddr
  wait !run()

  if &ROMStage
  (
    &imgpath="build\cbfs\fallback\romstage.elf"
    if (&RAMLoad)
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath
    else
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode

    print %String "Now the control is in ROMStage, press enter after debugging to go to next stage"
    print %String "Press enter to go to next stage"
    enter
  )

;  go &QCLEntryAddr
;  wait !run()
;
;  if &QCLStage
;  (
;    &imgpath="3rdparty\blobs\soc\qualcomm\sdm845\QcLib.elf"
;    if (&RAMLoad)
;      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /noclear
;    else
;      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode /noclear
;
;    print %String "Now the control is in QCLStage, press enter after debugging to go to next stage"
;    print %String "Press enter to go to next stage"
;    enter
;  )

  go &RAMEntryAddr
  wait !run()

  if &RAMStage
  (
    &imgpath="build\cbfs\fallback\ramstage.elf"
    if (&RAMLoad)
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath
    else
      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode
    print %String "Now the control is in RAMStage, press enter after debugging to go to next stage"
    print %String "Press enter to go to next stage"
    enter
  )

; BL31 disabled for now
; Next block of code commented out
;  go &BL31EntryAddr
;  wait !run()
;
;  if &BL31Stage
;  (
;    &imgpath="build\bl31.elf"
;    if (&RAMLoad)
;      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath
;    else
;      d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode
;    y.spath.srd 3rdparty/arm-trusted-firmware
;    print %String "Now the control is in BL31, press enter after debugging to go to next stage"
;    print %String "Press enter to go to next stage"
;    enter
;  )
; End of commented out code block: bl31

  go &DCEntryAddr
  wait !run()

  if &DCStage
  (
    &imgpath="payloads\external\depthcharge\depthcharge\build\depthcharge.elf"
    symbol.sourcepath.setbasedir &srcpath\payloads
    if (&RAMLoad)
      d.load.elf &imgpath /strippart "payloads" /sourcepath &srcpath
    else
      d.load.elf &imgpath /strippart "payloads" /sourcepath &srcpath /nocode
    b.d /all
    b.set main
    b.set halt
    b.set &KernelEntryAddr	; kernel entry point
    y.spath.srd + payloads/external/depthcharge/depthcharge
    y.spath.srd + 3rdparty\vboot_reference
    d.dump &RamConsoleAddr /spotlight
    &CBTablePtr=Register(X0)
    Data.SAVE.Binary CBTablePtr.bin &CBTablePtr++0x400
    print %String "Now the control is in Depthcharge, press enter after debugging to run free"
    ;print %String "Use this command to load kernel symbols:  d.load.elf vmlinux /nocode /strippart kernel"
    print %String "Press enter when done debugging Depthcharge"
    enter
  )

;  go &KernelEntryAddr
;  wait !run()
;
;  if &KernelSyms
;  (
;    print %String "Kernel Symbols are being loaded, this requires two files in coreboot root tree:"
;    print %String "vmlinux needs to be copied from ChromiumOS build tree"
;    print %String "msm-4.4 needs to be symbolic link to kernel source tree"
;    d.load.elf vmlinux /strippart "msm-4.4" /nocode
;    y.spath.srd msm-4.4
;    print %String "This script now concludes at kernel entry point"
;  )

  enddo
