trogdor: Add T32 scripts for full boot chain
Change-Id: I4ec1d4f722523f240fa293dd79235ab4e32e4489 Signed-off-by: Ashwin Kumar <ashk@codeaurora.org> Reviewed-on: https://review.coreboot.org/c/coreboot/+/35505 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
parent
c34ebab410
commit
a547584445
|
@ -1,16 +0,0 @@
|
||||||
d.a 0x80000000 mov x0,#0x8c
|
|
||||||
d.a 0x80000004 lsl x0, x0, #0x14
|
|
||||||
d.a 0x80000008 mov x1,#0x18
|
|
||||||
d.a 0x8000000c lsl x1,x1, #0x10
|
|
||||||
d.a 0x80000010 mov x2,#0x0
|
|
||||||
d.a 0x80000014 mov x3,#0x80
|
|
||||||
d.a 0x80000018 lsl x3, x3, #0x18
|
|
||||||
d.a 0x8000001c add x3, x3, #0x14
|
|
||||||
d.a 0x80000020 str x2,[x0]
|
|
||||||
d.a 0x80000024 sub x1, x1, #0x8
|
|
||||||
d.a 0x80000028 add x0, x0, #0x8
|
|
||||||
d.a 0x8000002c cmp x1,0x0
|
|
||||||
d.a 0x80000030 b.ne 0x20
|
|
||||||
d.a 0x80000034 b 0x34
|
|
||||||
r.s pc 0x80000000
|
|
||||||
go
|
|
|
@ -33,8 +33,6 @@ LOCAL &RAMStage // Ram Stage stop?
|
||||||
LOCAL &BL31Stage // BL31 Stage stop?
|
LOCAL &BL31Stage // BL31 Stage stop?
|
||||||
LOCAL &DCStage // Depthcharge Stage stop?
|
LOCAL &DCStage // Depthcharge Stage stop?
|
||||||
|
|
||||||
LOCAL &KernelSyms // Load Kernel Symbols?
|
|
||||||
|
|
||||||
LOCAL &RAMLoad // T32 Load Code?
|
LOCAL &RAMLoad // T32 Load Code?
|
||||||
|
|
||||||
;============================================================================
|
;============================================================================
|
||||||
|
@ -45,10 +43,10 @@ LOCAL &RAMLoad // T32 Load Code?
|
||||||
ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
|
|
||||||
// Parse for RAMLoad first
|
// Parse for RAMLoad first
|
||||||
if (STR.CP("&ImageName","RAM,*"))
|
if (STR.CP("&ImageName","LOAD,*"))
|
||||||
(
|
(
|
||||||
&RAMLoad=TRUE()
|
&RAMLoad=TRUE()
|
||||||
&ImageName=STR.CUT("&ImageName",4)
|
&ImageName=STR.CUT("&ImageName",5)
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
&RAMLoad=FALSE()
|
&RAMLoad=FALSE()
|
||||||
|
@ -63,7 +61,6 @@ ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
&RAMStage=TRUE()
|
&RAMStage=TRUE()
|
||||||
;&BL31Stage=TRUE()
|
;&BL31Stage=TRUE()
|
||||||
&DCStage=TRUE()
|
&DCStage=TRUE()
|
||||||
&KernelSyms=STRING.CP("&ImageName", "*KERNEL*")
|
|
||||||
)
|
)
|
||||||
else
|
else
|
||||||
(
|
(
|
||||||
|
@ -72,14 +69,12 @@ ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
&ROMStage=STRING.CP("&ImageName","*ROM*")
|
&ROMStage=STRING.CP("&ImageName","*ROM*")
|
||||||
&QCLStage=STRING.CP("&ImageName","*QCL*")
|
&QCLStage=STRING.CP("&ImageName","*QCL*")
|
||||||
&RAMStage=STRING.CP("&ImageName","*RAM*")
|
&RAMStage=STRING.CP("&ImageName","*RAM*")
|
||||||
&BL31Stage=STRING.CP("&ImageName","*BL31*")
|
;&BL31Stage=STRING.CP("&ImageName","*BL31*")
|
||||||
&DCStage=STRING.CP("&ImageName","*DC*")
|
&DCStage=STRING.CP("&ImageName","*DC*")
|
||||||
&KernelSyms=STRING.CP("&ImageName", "*KERNEL*")
|
|
||||||
)
|
)
|
||||||
|
|
||||||
PRINT %String "Debug Script: debug_cb_common.cmm"
|
PRINT %String "Debug Script: debug_cb_common.cmm"
|
||||||
PRINT %String "Images to debug: &ImageName"
|
PRINT %String "Images to debug: &ImageName"
|
||||||
PRINT %String "Loading Kernel Symbols: &KernelSyms"
|
|
||||||
PRINT %String "RAMLoad Requested: &RAMLoad"
|
PRINT %String "RAMLoad Requested: &RAMLoad"
|
||||||
PRINT %String "BootBlock Entry Addr: &BBEntryAddr"
|
PRINT %String "BootBlock Entry Addr: &BBEntryAddr"
|
||||||
PRINT %String "VerStage Entry Addr: &VEREntryAddr"
|
PRINT %String "VerStage Entry Addr: &VEREntryAddr"
|
||||||
|
@ -104,31 +99,17 @@ ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
|
|
||||||
if &BBStage
|
if &BBStage
|
||||||
(
|
(
|
||||||
IF "&debug"==""
|
&imgpath="build\cbfs\fallback\bootblock.raw.elf"
|
||||||
(
|
|
||||||
d.load.binary build/coreboot.rom 0xA0000000
|
|
||||||
)
|
|
||||||
&imgpath="build\cbfs\fallback\bootblock.elf"
|
|
||||||
if (&RAMLoad)
|
if (&RAMLoad)
|
||||||
d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath
|
d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath
|
||||||
else
|
else
|
||||||
d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode
|
d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode
|
||||||
|
|
||||||
;uncomment b.s if not simulating (CONFIG_SOC_SIMULATE)
|
d.l
|
||||||
;b.s run_romstage /o
|
|
||||||
;d.set &PreRamConsoleAddr++0x8000 0
|
print %String "Now the control is in BootBlock, press enter after debugging to go to next stage"
|
||||||
d.dump &PreRamConsoleAddr /spotlight
|
print %String "Press enter to go to next stage"
|
||||||
IF (STR.CP("&debug","DEBUG"))
|
enter
|
||||||
(
|
|
||||||
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
|
|
||||||
)
|
|
||||||
ELSE
|
|
||||||
(
|
|
||||||
go
|
|
||||||
enddo
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
go &VEREntryAddr
|
go &VEREntryAddr
|
||||||
|
@ -163,22 +144,29 @@ ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
enter
|
enter
|
||||||
)
|
)
|
||||||
|
|
||||||
|
;;;; START OF COMMENTED OUT CODE TO SKIP QCLIB DEBUG
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
; go &QCLEntryAddr
|
; go &QCLEntryAddr
|
||||||
; wait !run()
|
; wait !run()
|
||||||
;
|
|
||||||
; if &QCLStage
|
; if &QCLStage
|
||||||
; (
|
; (
|
||||||
; &imgpath="3rdparty\blobs\soc\qualcomm\sdm845\QcLib.elf"
|
|
||||||
; if (&RAMLoad)
|
; if (&RAMLoad)
|
||||||
; d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /noclear
|
; d.load ...\QcLib.dll
|
||||||
; else
|
; else
|
||||||
; d.load.elf &imgpath /strippart "coreboot" /sourcepath &srcpath /nocode /noclear
|
; d.load ...\QcLib.dll
|
||||||
;
|
|
||||||
|
|
||||||
; print %String "Now the control is in QCLStage, press enter after debugging to go to next stage"
|
; 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"
|
; print %String "Press enter to go to next stage"
|
||||||
; enter
|
; enter
|
||||||
; )
|
; )
|
||||||
|
|
||||||
|
;;;; END OF QCLIB COMMENTED OUT CODE
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
go &RAMEntryAddr
|
go &RAMEntryAddr
|
||||||
wait !run()
|
wait !run()
|
||||||
|
|
||||||
|
@ -194,24 +182,9 @@ ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
enter
|
enter
|
||||||
)
|
)
|
||||||
|
|
||||||
; BL31 disabled for now
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; Next block of code commented out
|
;;;;; BL31 DEBUG CODE WOULD BE ADDED HERE
|
||||||
; 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
|
go &DCEntryAddr
|
||||||
wait !run()
|
wait !run()
|
||||||
|
@ -220,36 +193,16 @@ ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
(
|
(
|
||||||
&imgpath="payloads\external\depthcharge\depthcharge\build\depthcharge.elf"
|
&imgpath="payloads\external\depthcharge\depthcharge\build\depthcharge.elf"
|
||||||
symbol.sourcepath.setbasedir &srcpath\payloads
|
symbol.sourcepath.setbasedir &srcpath\payloads
|
||||||
|
y.spath.srd payloads\external\depthcharge\depthcharge\src
|
||||||
if (&RAMLoad)
|
if (&RAMLoad)
|
||||||
d.load.elf &imgpath /strippart "payloads" /sourcepath &srcpath
|
d.load.elf &imgpath /strippart "payloads" /sourcepath &srcpath
|
||||||
else
|
else
|
||||||
d.load.elf &imgpath /strippart "payloads" /sourcepath &srcpath /nocode
|
d.load.elf &imgpath /strippart "payloads" /sourcepath &srcpath /nocode
|
||||||
b.d /all
|
print %String "Now the control is in depthcharge, end of script"
|
||||||
b.set main
|
d.l
|
||||||
b.set halt
|
;b.s main
|
||||||
b.set &KernelEntryAddr ; kernel entry point
|
;Execute this command in T32 if you start debugging vboot code, e.g. vboot_select_and_load_kernel()
|
||||||
y.spath.srd + payloads/external/depthcharge/depthcharge
|
;y.spath.srd 3rdparty\vboot\firmware
|
||||||
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
|
enddo
|
||||||
|
|
|
@ -0,0 +1,131 @@
|
||||||
|
;============================================================================
|
||||||
|
;##
|
||||||
|
;## This file is part of the coreboot project.
|
||||||
|
;##
|
||||||
|
;## Copyright (C) 2019, 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_trogdor.cmm
|
||||||
|
;
|
||||||
|
; Description:
|
||||||
|
; Debug coreboot trogdor front-end
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; CMM script variables
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
LOCAL &TargetPkg
|
||||||
|
|
||||||
|
GLOBAL &BBEntryAddr // Bootblock Entry
|
||||||
|
GLOBAL &BBExitAddr // Bootblock Exit to Xbl-Sec
|
||||||
|
GLOBAL &VEREntryAddr // Verstage Entry
|
||||||
|
GLOBAL &ROMEntryAddr // Romstage Entry
|
||||||
|
GLOBAL &QCLEntryAddr // QCLstage Entry
|
||||||
|
GLOBAL &RAMEntryAddr // Ramstage Entry
|
||||||
|
GLOBAL &BL31EntryAddr // BL31 Entry
|
||||||
|
GLOBAL &DCEntryAddr // Depthcharge Entry
|
||||||
|
|
||||||
|
GLOBAL &PreRamConsoleAddr
|
||||||
|
GLOBAL &RamConsoleAddr
|
||||||
|
GLOBAL &PreRamCbfsCache
|
||||||
|
GLOBAL &VBoot2Work
|
||||||
|
GLOBAL &Stack
|
||||||
|
GLOBAL &Ttb
|
||||||
|
GLOBAL &Timestamp
|
||||||
|
GLOBAL &CbmemTop
|
||||||
|
GLOBAL &PostRamCbfsCache
|
||||||
|
|
||||||
|
GLOBAL &CBTablePtr
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;---------------------------------------------------
|
||||||
|
; Entry point
|
||||||
|
;---------------------------------------------------
|
||||||
|
ENTRY &ImageName &RegAddress
|
||||||
|
|
||||||
|
// Later these can be parameterized
|
||||||
|
&TargetPkg="trogdorPkg"
|
||||||
|
|
||||||
|
// These settings come from .../src/soc/qualcomm/sc7180/include/soc/memlayout.ld
|
||||||
|
&BBEntryAddr=0x14815000
|
||||||
|
&VEREntryAddr=0x14680000
|
||||||
|
&ROMEntryAddr=0x14680000
|
||||||
|
&QCLEntryAddr=0x1486c950
|
||||||
|
&RAMEntryAddr=0xA0800000
|
||||||
|
&BL31EntryAddr=0x80C00000
|
||||||
|
&DCEntryAddr=0xF1000000
|
||||||
|
&KernelEntryAddr=0xD0000000
|
||||||
|
|
||||||
|
&PreRamConsoleAddr=0x14830800
|
||||||
|
&VBoot2Work=0x1484B000
|
||||||
|
&Stack=0x14847000
|
||||||
|
&Ttb=0x14839000
|
||||||
|
&Timestamp=0x14838800
|
||||||
|
&PreRamCbfsCache=0x1481F000
|
||||||
|
&CbmemTop=0x280000000
|
||||||
|
&PostRamCbfsCache=0x9F800000
|
||||||
|
// End of memlayout.ld settings
|
||||||
|
|
||||||
|
// Common commands irrespective of &Mode
|
||||||
|
PATH
|
||||||
|
&CwDir=os.pwd()
|
||||||
|
PATH + &CwDir
|
||||||
|
|
||||||
|
// position at top of coreboot tree
|
||||||
|
// find depth count for source loading
|
||||||
|
cd ..\..\..\..
|
||||||
|
&srcpath=os.pwd()
|
||||||
|
|
||||||
|
|
||||||
|
;---------------------------------------------------
|
||||||
|
; Setup area and log
|
||||||
|
;---------------------------------------------------
|
||||||
|
area.clear
|
||||||
|
area.reset
|
||||||
|
area.create CB_Logs 1000. 8192.
|
||||||
|
area.select CB_Logs
|
||||||
|
|
||||||
|
area.view CB_Logs
|
||||||
|
|
||||||
|
PRINT %String "Source Path: &srcpath"
|
||||||
|
|
||||||
|
symbol.sourcepath.setbasedir &srcpath\src
|
||||||
|
|
||||||
|
// Make parsing simple, upper-case parameters
|
||||||
|
&ImageName=STRING.UPR("&ImageName")
|
||||||
|
if (STR.CP("&ImageName","0X*"))
|
||||||
|
(
|
||||||
|
&RegAddress=&ImageName
|
||||||
|
&ImageName=""
|
||||||
|
)
|
||||||
|
&RegAddress=STRING.UPR("&RegAddress")
|
||||||
|
|
||||||
|
PRINT %String "ImageName: &ImageName"
|
||||||
|
PRINT %String "RegAddress: &RegAddress"
|
||||||
|
|
||||||
|
sys.d
|
||||||
|
sys.up
|
||||||
|
b.d
|
||||||
|
y.reset
|
||||||
|
|
||||||
|
if (STR.CP("&RegAddress","0X*"))
|
||||||
|
D.S EZAXI:&RegAddress %LE %Long 0x80000000
|
||||||
|
|
||||||
|
go &BBEntryAddr
|
||||||
|
wait !run()
|
||||||
|
|
||||||
|
DO debug_cb_common.cmm &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
|
|
||||||
|
enddo
|
|
@ -0,0 +1,210 @@
|
||||||
|
;============================================================================
|
||||||
|
;##
|
||||||
|
;## 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_chroot_common.cmm
|
||||||
|
;
|
||||||
|
; Description:
|
||||||
|
; Debug chroot 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 &RAMLoad // T32 Load Code?
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;---------------------------------------------------
|
||||||
|
; Entry point
|
||||||
|
;---------------------------------------------------
|
||||||
|
ENTRY &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
|
|
||||||
|
// Parse for RAMLoad first
|
||||||
|
if (STR.CP("&ImageName","LOAD,*"))
|
||||||
|
(
|
||||||
|
&RAMLoad=TRUE()
|
||||||
|
&ImageName=STR.CUT("&ImageName",5)
|
||||||
|
)
|
||||||
|
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()
|
||||||
|
)
|
||||||
|
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*")
|
||||||
|
)
|
||||||
|
|
||||||
|
PRINT %String "Debug Script: debug_chroot_common.cmm"
|
||||||
|
PRINT %String "Images to debug: &ImageName"
|
||||||
|
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-trogdor\cbfs\fallback\bootblock.raw.elf"
|
||||||
|
if (&RAMLoad)
|
||||||
|
d.load.elf &imgpath /strippart 9 /sourcepath &srcpath
|
||||||
|
else
|
||||||
|
d.load.elf &imgpath /strippart 9 /sourcepath &srcpath /nocode
|
||||||
|
|
||||||
|
d.l
|
||||||
|
|
||||||
|
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-trogdor\cbfs\fallback\verstage.elf"
|
||||||
|
if (&RAMLoad)
|
||||||
|
d.load.elf &imgpath /strippart 9 /sourcepath &srcpath /noclear
|
||||||
|
else
|
||||||
|
d.load.elf &imgpath /strippart 9 /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-trogdor\cbfs\fallback\romstage.elf"
|
||||||
|
if (&RAMLoad)
|
||||||
|
d.load.elf &imgpath /strippart 9 /sourcepath &srcpath
|
||||||
|
else
|
||||||
|
d.load.elf &imgpath /strippart 9 /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
|
||||||
|
)
|
||||||
|
|
||||||
|
;;;; START OF COMMENTED OUT CODE TO SKIP QCLIB DEBUG
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
; go &QCLEntryAddr
|
||||||
|
; wait !run()
|
||||||
|
|
||||||
|
; if &QCLStage
|
||||||
|
; (
|
||||||
|
|
||||||
|
; if (&RAMLoad)
|
||||||
|
; d.load ...\QcLib.dll
|
||||||
|
; else
|
||||||
|
; d.load ...\QcLib.dll
|
||||||
|
|
||||||
|
|
||||||
|
; 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
|
||||||
|
; )
|
||||||
|
|
||||||
|
;;;; END OF QCLIB COMMENTED OUT CODE
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
go &RAMEntryAddr
|
||||||
|
wait !run()
|
||||||
|
|
||||||
|
if &RAMStage
|
||||||
|
(
|
||||||
|
&imgpath="build-trogdor\cbfs\fallback\ramstage.elf"
|
||||||
|
if (&RAMLoad)
|
||||||
|
d.load.elf &imgpath /strippart 9 /sourcepath &srcpath
|
||||||
|
else
|
||||||
|
d.load.elf &imgpath /strippart 9 /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 DEBUG CODE WOULD BE ADDED HERE
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
|
go &DCEntryAddr
|
||||||
|
wait !run()
|
||||||
|
|
||||||
|
if &DCStage
|
||||||
|
(
|
||||||
|
&srcpath="..\..\..\depthcharge-9999\work\depthcharge-9999\src"
|
||||||
|
&imgpath="..\..\..\depthcharge-9999\work\depthcharge-9999\trogdor\depthcharge.elf"
|
||||||
|
symbol.sourcepath.setbasedir &srcpath
|
||||||
|
if (&RAMLoad)
|
||||||
|
d.load.elf &imgpath /strippart 9 /sourcepath &srcpath
|
||||||
|
else
|
||||||
|
d.load.elf &imgpath /strippart 9 /sourcepath &srcpath /nocode
|
||||||
|
|
||||||
|
print %String "Now the control is in depthcharge, end of script"
|
||||||
|
d.l
|
||||||
|
;b.s main
|
||||||
|
;Execute this command in T32 if you start debugging vboot code, e.g. vboot_select_and_load_kernel()
|
||||||
|
;y.spath.sbd 3rdparty\vboot\firmware
|
||||||
|
)
|
||||||
|
|
||||||
|
enddo
|
|
@ -0,0 +1,131 @@
|
||||||
|
;============================================================================
|
||||||
|
;##
|
||||||
|
;## This file is part of the coreboot project.
|
||||||
|
;##
|
||||||
|
;## Copyright (C) 2019, 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_chroot_trogdor.cmm
|
||||||
|
;
|
||||||
|
; Description:
|
||||||
|
; Debug coreboot trogdor front-end (in chroot environment)
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
; CMM script variables
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
LOCAL &TargetPkg
|
||||||
|
|
||||||
|
GLOBAL &BBEntryAddr // Bootblock Entry
|
||||||
|
GLOBAL &BBExitAddr // Bootblock Exit to Xbl-Sec
|
||||||
|
GLOBAL &VEREntryAddr // Verstage Entry
|
||||||
|
GLOBAL &ROMEntryAddr // Romstage Entry
|
||||||
|
GLOBAL &QCLEntryAddr // QCLstage Entry
|
||||||
|
GLOBAL &RAMEntryAddr // Ramstage Entry
|
||||||
|
GLOBAL &BL31EntryAddr // BL31 Entry
|
||||||
|
GLOBAL &DCEntryAddr // Depthcharge Entry
|
||||||
|
|
||||||
|
GLOBAL &PreRamConsoleAddr
|
||||||
|
GLOBAL &RamConsoleAddr
|
||||||
|
GLOBAL &PreRamCbfsCache
|
||||||
|
GLOBAL &VBoot2Work
|
||||||
|
GLOBAL &Stack
|
||||||
|
GLOBAL &Ttb
|
||||||
|
GLOBAL &Timestamp
|
||||||
|
GLOBAL &CbmemTop
|
||||||
|
GLOBAL &PostRamCbfsCache
|
||||||
|
|
||||||
|
GLOBAL &CBTablePtr
|
||||||
|
|
||||||
|
;============================================================================
|
||||||
|
|
||||||
|
;---------------------------------------------------
|
||||||
|
; Entry point
|
||||||
|
;---------------------------------------------------
|
||||||
|
ENTRY &ImageName &RegAddress
|
||||||
|
|
||||||
|
// Later these can be parameterized
|
||||||
|
&TargetPkg="trogdorPkg"
|
||||||
|
|
||||||
|
// These settings come from .../src/soc/qualcomm/sc7180/include/soc/memlayout.ld
|
||||||
|
&BBEntryAddr=0x14815000
|
||||||
|
&VEREntryAddr=0x14680000
|
||||||
|
&ROMEntryAddr=0x14680000
|
||||||
|
&QCLEntryAddr=0x1486c950
|
||||||
|
&RAMEntryAddr=0xA0800000
|
||||||
|
&BL31EntryAddr=0x80C00000
|
||||||
|
&DCEntryAddr=0xF1000000
|
||||||
|
&KernelEntryAddr=0xD0000000
|
||||||
|
|
||||||
|
&PreRamConsoleAddr=0x14830800
|
||||||
|
&VBoot2Work=0x1484B000
|
||||||
|
&Stack=0x14847000
|
||||||
|
&Ttb=0x14839000
|
||||||
|
&Timestamp=0x14838800
|
||||||
|
&PreRamCbfsCache=0x1481F000
|
||||||
|
&CbmemTop=0x280000000
|
||||||
|
&PostRamCbfsCache=0x9F800000
|
||||||
|
// End of memlayout.ld settings
|
||||||
|
|
||||||
|
// Common commands irrespective of &Mode
|
||||||
|
PATH
|
||||||
|
&CwDir=os.pwd()
|
||||||
|
PATH + &CwDir
|
||||||
|
|
||||||
|
// position at top of coreboot tree
|
||||||
|
// find depth count for source loading
|
||||||
|
cd ..\..\..\..\..\..\..\chroot\build\trogdor\tmp\portage\sys-boot\coreboot-9999\work\coreboot-9999
|
||||||
|
&srcpath=os.pwd()
|
||||||
|
|
||||||
|
|
||||||
|
;---------------------------------------------------
|
||||||
|
; Setup area and log
|
||||||
|
;---------------------------------------------------
|
||||||
|
area.clear
|
||||||
|
area.reset
|
||||||
|
area.create CB_Logs 1000. 8192.
|
||||||
|
area.select CB_Logs
|
||||||
|
|
||||||
|
area.view CB_Logs
|
||||||
|
|
||||||
|
PRINT %String "Source Path: &srcpath"
|
||||||
|
|
||||||
|
symbol.sourcepath.setbasedir &srcpath\src
|
||||||
|
|
||||||
|
// Make parsing simple, upper-case parameters
|
||||||
|
&ImageName=STRING.UPR("&ImageName")
|
||||||
|
if (STR.CP("&ImageName","0X*"))
|
||||||
|
(
|
||||||
|
&RegAddress=&ImageName
|
||||||
|
&ImageName=""
|
||||||
|
)
|
||||||
|
&RegAddress=STRING.UPR("&RegAddress")
|
||||||
|
|
||||||
|
PRINT %String "ImageName: &ImageName"
|
||||||
|
PRINT %String "RegAddress: &RegAddress"
|
||||||
|
|
||||||
|
sys.d
|
||||||
|
sys.up
|
||||||
|
b.d
|
||||||
|
y.reset
|
||||||
|
|
||||||
|
if (STR.CP("&RegAddress","0X*"))
|
||||||
|
D.S EZAXI:&RegAddress %LE %Long 0x80000000
|
||||||
|
|
||||||
|
go &BBEntryAddr
|
||||||
|
wait !run()
|
||||||
|
|
||||||
|
DO debug_chroot_common.cmm &TargetPkg &srcpath &xblsrcpath &ImageName
|
||||||
|
|
||||||
|
enddo
|
|
@ -1,15 +0,0 @@
|
||||||
PER.Set.simple SPR:0x36100 %Long 00c5183C
|
|
||||||
D.S AZSD:0x8600034 %LE %Long 0x8600000
|
|
||||||
D.S AZSD:0x8600000 %LE %Long 0x1400000
|
|
||||||
d.a 0x8600004 ldr r0,0x8600034
|
|
||||||
d.a 0x8600008 mcr p15,0x0,r0,c12,c0,1
|
|
||||||
d.a 0x860000c dsb
|
|
||||||
d.a 0x8600010 isb
|
|
||||||
d.a 0x8600014 mrc p15,0x0,r1,c12,c0,2
|
|
||||||
d.a 0x8600018 orr r1,r1,0x3
|
|
||||||
d.a 0x860001c mcr p15,0x0,r1,c12,c0,2
|
|
||||||
d.a 0x8600020 isb
|
|
||||||
d.a 0x8600024 wfi
|
|
||||||
r.s pc 0x8600004
|
|
||||||
go
|
|
||||||
b
|
|
Loading…
Reference in New Issue