Files
Gen4_R-Car_Trace32/2_Trunk/demo/arm/kernel/op-tee/optee.t32
2025-10-14 09:52:32 +09:00

1225 lines
68 KiB
Plaintext

;@Extension.Container.Version.1
;-- DO NOT CHANGE THE LINE ABOVE --
IF (VERSION.BUILD.BASE()<138311.)
(
PRINTF %ERROR "%s: Software too old, please contact support@lauterbach.com." "OP-TEE"
ENDDO
)
PMACRO.EXPLICIT
PRIVATE &sParamline &sPpf &sCmd &sParameters &sAccess &sAccessSpaces &sAccessMachine &sOptionAccess &sOptionAccessMisc &sName &sMachine &sArguments &nVariant
PRIVATE &bTaskConfig &bExtLoad &bCleanup
ENTRY &sCmd %LINE &sParamline
&sParameters=STRing.SCANAndExtract("&sParamline","PARAMETERS=","")
&sAccess=STRing.SCANAndExtract("&sParamline","ACCESS=","")
&sAccessSpaces=STRing.SCANAndExtract("&sParamline","ACCESSSPACES=","")
&sAccessMachine=STRing.SCANAndExtract("&sParamline","ACCESSMACHINE=","")
&sName=STRing.SCANAndExtract("&sParamline","NAME=","")
&sMachine=STRing.SCANAndExtract("&sParamline","MACHINE=","")
&sArguments=STRing.SCANAndExtract("&sParamline","ARGUMENTS=","")
&sParameters=STRing.Replace("&sParameters","""","",0.)
IF ("&sArguments"!="")
&sArguments=&sArguments
IF ("&sAccess"!="")
&sOptionAccess="/ACCESS &sAccess"
IF ("&sAccessSpaces"!="")
&sOptionAccessMisc="/ACCESSSPACES &sAccessSpaces"
IF ("&sAccessMachine"!="")
&sOptionAccessMisc="&(sOptionAccessMisc) /ACCESSMACHINE &sAccessMachine"
&sName=STRing.Replace("&sName","""","",0.)
&bTaskConfig=STRing.SCAN("task.config,ext.config",STRing.LoWeR("&sCmd"),0.)>=0.
&bExtLoad=STRing.SCAN("ext.load",STRing.LoWeR("&sCmd"),0.)>=0.
&bCleanup=STRing.SCAN("task.res,ext.res,ext.delete",STRing.LoWeR("&sCmd"),0.)>=0.
&sPpf=OS.PresentPracticeFile()
IF (&bTaskConfig||&bExtLoad)
(
IF ("&nVariant"!="32.")&&("&nVariant"!="64.")
(
IF CPUIS64BIT()
&nVariant="64."
ELSE
&nVariant="32."
)
IF STRing.ComPare("&sArguments","*32BIT*")
&nVariant="32."
ELSE IF STRing.ComPare("&sArguments","*64BIT*")
&nVariant="64."
)
IF (&bTaskConfig)
(
PRIVATE &sMachineName
&sMachineName="OP-TEE"
TASK.RESet
IF (&nVariant==32.)
(
GOSUB extension_32bit "&sParameters" "&sOptionAccess"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_32bit "&sMachineName" ""
GOSUB autoload_32bit ""
)
ELSE IF (&nVariant==64.)
(
GOSUB extension_64bit "&sParameters" "&sOptionAccess"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_64bit "&sMachineName" ""
GOSUB autoload_64bit ""
)
)
ELSE IF (&bExtLoad)
(
PRIVATE &sMachineName &sInfix &sOptionName &sOptionMachine
&sInfix=""
&sMachineName="OP-TEE"
IF ("&sName"!="")
(
&sInfix=STRing.UPpeR("&(sName).")
&sMachineName="&(sName)"
&sOptionName="/NAME &sMachineName"
)
ELSE IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF SYStem.Option.MACHINESPACES()
&sInfix=TASK.TRANSPOSE.INFIX(OS.FILE.BASENAME("&sPpf",".**"))+"."
)
IF ("&sMachine"!="")
(
&sOptionMachine="/MACHINE &sMachine"
)
IF (&nVariant==32.)
(
GOSUB extension_32bit "&sParameters" "&sOptionAccess &sOptionAccessMisc &sOptionName &sOptionMachine"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_32bit "&sMachineName" "&sInfix"
GOSUB autoload_32bit "&sOptionMachine"
)
ELSE IF (&nVariant==64.)
(
GOSUB extension_64bit "&sParameters" "&sOptionAccess &sOptionAccessMisc &sOptionName &sOptionMachine"
IF !STRing.Compare("&sArguments","*MENU=NONE*")
GOSUB menu_64bit "&sMachineName" "&sInfix"
GOSUB autoload_64bit "&sOptionMachine"
)
)
ELSE IF (&bCleanup)
(
PRIVATE &sMachineName &sOptionMachine
&sMachineName="OP-TEE"
IF ("&sName"!="")
(
&sMachineName="&(sName)"
)
IF ("&sMachine"!="")
(
&sOptionMachine="/MACHINE &sMachine"
)
GOSUB menu_delete "&sMachineName"
GOSUB autoload_delete "&sOptionMachine"
)
ENDDO
extension_32bit: ; (options)
(
PARAMETERS &sParameters &sOptions
EXTension.LOAD &sParameters &sOptions
(
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
fJkiFDhhAAhIABrhS//6GUv/+qk5I///OUD//XwJUEBBgQIgkcEAOJIhAESSQQBIkmEATJKBAFCS
wQBYkuEAXJMBAGCTQQBok2EAbJOBAHCToQB0k8EAeJPhAHx8cBt4OSAAQJEhABg9wAAEPSAAADkp
PZyRIQAgPwAABD4gAAQ+QAAEPmAABD6AAAQ+wAAESAABMEGSADhIAAAIQZIA+IB2Anx8fhoUSAAa
NXx+G3g5I///fAm4QEGBANyD+AKMf/76FHwa8EBBgv/MfBn4QEGCAbiAcQL8fH8aFEgAGgF8fRt4
gHIC+Hx/GhRIABnlfHwbeIBzAvR8fxoUSAAZ1Xx7G3iAlALwOKAACHyfIhQ4YQAQSAAZ1XwV6EBA
gv+AfA/gQECC/3iBIQAcfAnYQECC/2w5AQAPOUEABzkgAAh9KQOmjSgAAYzqAAF8CTgAQIL/TEIA
//CBwQA4giEARIJBAEiCYQBMgoEAUILBAFiC4QBcgwEAYINBAGiDYQBsg4EAcIOhAHSDwQB4g+EA
fEgAATB+A4N4S//5IXxwG3g5I///OUD//XwJUEBBgQCcgSEAGDUp//+RIQAYQYIARIBuAsx8cBoU
SAAZFXx6G3h+BIN4gGEAIEgAGcU5Ov//OUD//XwJUEBBgf+sf17TeIEhACQuCQAAOuD//Uv//sA6
AP//gcEAOIIhAESCQQBIgmEATIKBAFCCwQBYguEAXIMBAGCDQQBog2EAbIOBAHCDoQB0g8EAeIPh
AHxIAACEOgD//0gAAHw6AP//gcEAOIIhAESCQQBIgmEATIKBAFCCwQBYguEAXIMBAGCDQQBog2EA
bIOBAHCDoQB0g8EAeIPhAHxIAAA8gcEAOIIhAESCQQBIgmEATIKBAFCCwQBYguEAXIMBAGCDQQBo
g2EAbIOBAHCDoQB0g8EAeIPhAHx+A4N4gAEAhIGBADR8CAOmgeEAPIIBAECCoQBUgyEAZH2AgSA4
IQCAToAAIJQh/9B8CAKmkAEANJNhAByTgQAgk6EAJJPBACiT4QAsfH8beHyeI3g9IAAEgGkC/Hx/
GhRIABe9fH0beD0gAASAaQL4fH8aFEgAF518fBt4PSAABIBpAvR8fxoUSAAXiXx7G3g9IAAEgIkC
8DigAAh8nyIUOGEACEgAF4V/Z9t4f4bjeH+l63g8gAAAOIQ9rH/D83hIABe9f8TzeIhhAAhL//uB
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
f8PzeEv//k18fxt4gAEAFHwIA6ZL//+8lCH/8HwIAqaQAQAUk+EADHx/G3g9IAAEgSkCzCwJ//9B
ggAoPSAABIBpAtx8fxoUSAAFNYABABR8CAOmg+EADDghABBOgAAgS//98XxkG3g5I///OGD//zlA
//18CVBAQYH/1DigAAB/4/t4S//04Uv//8SUIf/wfAgCppABABRL//1JLAP//0CCABg4YAAAgAEA
FHwIA6Y4IQAQToAAID0gAASBKQK0fGNKFEgABLlL///gfGkbeD1AAASBSgLoLAoAAEGAACQ9AAAE
gQgDCDhg//8sCAAATYAAIH1KQhR8akoUToAAID1AAASBSgLsOGD//ywKAABNgAAgfGpKFE6AACA5
I///OUD//XwJUEBBgQEUlCH/8JPhAAx8fxt4PSAABIEpAugsCQAAQYAAiD0gAASBKQMILAkAAEGA
APA9IAAEgSkDADhg//8sCQAAQYAANHwIAqaQAQAUfGn6FEgABAV8aRt4PUAABIFKA1A4YP//fAlQ
AEGCABiAAQAUfAgDpoPhAAw4IQAQToAAID0gAASAaQLoPSAABIEpAwh8Y0oUfGP4UIABABR8CAOm
S///1D0gAASBKQLsLAkAAEGAAHQ9IAAEgSkDDDhg//8sCQAAQYD/sHwIAqaQAQAUfGn6FEgAA4F8
aRt4PUAABIFKA1A4YP//fAlQAEGCABCAAQAUfAgDpkv//3w9IAAEgGkC7Hxj+FCAAQAUfAgDpkv/
/2Q4YP//ToAAIDhg//9L//9UOGD//0v//0w5I///OUD//XwJUEBBgQAolCH/8HwIAqaQAQAUS//X
9Uv//qmAAQAUfAgDpjghABBOgAAgOGD//06AACA5I///OUD//XwJUEBBgQD4lCH/8JPhAAx8fxt4
PSAABIEpAwAsCQAAQIEAbD1AAASBSgNUOGD//ywKAABBgAA0fAgCppABABR8afoUSAACoXxpG3g9
QAAEgUoDTDhg//98CVAAQYIAGIABABR8CAOmg+EADDghABBOgAAgPSAABIBpA1R8Y/hQgAEAFHwI
A6ZL///gPSAABIFJAww4YP//LAoAAECB/8w9IAAEgSkDVCwJAABBgP+8fAgCppABABR8avoUSAAC
KXxpG3g9QAAEgUoDTDhg//98CVAAQYIAEIABABR8CAOmS///iD0gAASAaQNUfGP4UIABABR8CAOm
S///cDhg//9OgAAgOSP//zlA//18CVBAQYEAKJQh//B8CAKmkAEAFEv/1q1L//7VgAEAFHwIA6Y4
IQAQToAAIDhg//9OgAAgiSMAACwJAABBggAwfGobeI0qAAEsCQAAQIL/+DiE//85Sv//jSQAAZ0q
AAEsCQAAQIL/9E6AACB8aht4S///4D0gf39hKX9/PUABAWFKAQE4g//8hAQABHwFS3h8ygBQfMUo
eUGC//B8YyBQfAVLeHwGSDh8xkoUfKUw+HylADRUpej+fGMqFE6AACBOgAAgiUMAACwKAABNggAg
fGgbeEgAABCNSAABLAoAAE2CACA5Kv+/VSkGPigJABlBgf/oOUoAIJlIAABL///cOEABAXyCEAhO
gAAgOEABAnyCEAhOgAAgOEABBnyCEAhOgAAgOEABB3yCEAhOgAAgOEABCHyCEAhOgAAgOEABC3yC
EAhOgAAgOEABDHyCEAhOgAAgOEABDnyCEAhOgAAgOEABEXyCEAhOgAAgOEABEnyCEAhOgAAgOEAB
GHyCEAhOgAAgOEACAXyCEAhOgAAgOEACAnyCEAhOgAAgOEACBHyCEAhOgAAgOEACBXyCEAhOgAAg
OEACBnyCEAhOgAAgOEADAXyCEAhOgAAgOEADAnyCEAhOgAAgOEADA3yCEAhOgAAgOEADEXyCEAhO
gAAgOEADIXyCEAhOgAAgOEADInyCEAhOgAAgOEADQ3yCEAhOgAAgOEADWXyCEAhOgAAgOEADY3yC
EAhOgAAgOEAEAHyCEAhOgAAgOEAED3yCEAhOgAAgOEAEMnyCEAhOgAAgOEAEUnyCEAhOgAAgOEAE
U3yCEAhOgAAgOEAFEXyCEAhOgAAgOEAHAXyCEAhOgAAgOEAHBHyCEAhOgAAgOEAHBXyCEAhOgAAg
OEAKAXyCEAhOgAAgOEAKA3yCEAhOgAAgOEAKEXyCEAhOgAAgOEAKEnyCEAhOgAAgOEAKE3yCEAhO
gAAgOEAKFHyCEAhOgAAgOEAKFXyCEAhOgAAgOEAKFnyCEAhOgAAgvgIDBAAAAAUAQFZFUlNJT04t
SU5GT0AAMTAxOTQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACfSAAAH6AAAAAYAAAANAAAA
AAAAAAAAAAAAaHR0cHM6Ly9zdm4uaW50ZXJuLmxhdXRlcmJhY2guY29tL3N2bi9rZXJuZWxzcmMv
YnJhbmNoZXMvbmlnaHRseQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABodHRwczovL3N2bi5pbnRlcm4ubGF1dGVyYmFjaC5jb20v
c3ZuL2tlcm5lbHNyYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGJhdW1laXN0ZXIAAAAAAABlZGst
bGludXg2NGJpdC03AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAR0NDIDkuNS4wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAfoAAAABgAAAA0AAABOAAAn0gAAB+gAAAAGAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAT49T1AtVEVFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAF9fdGV4dF9zdGFydAAAAAB0ZWVfb3Blbl9z
ZXNzaW9ucwAAAC50cWhfZmlyc3QAAHN0cnVjdCB0ZWVfdGFfc2Vzc2lvbgAAAC5saW5rAAAALnRz
X3Nlc3MAAAAALmlkAC5sb2NrX3RocmVhZAAAAABzdHJ1Y3QgdHNfc2Vzc2lvbi5jdHgAAABzdHJ1
Y3QgdGVlX3RhX2N0eAAAAC51dWlkAAAALm9wcwAAAAAudHNfY3R4AHN0cnVjdCB0c19jdHgudXVp
ZAAAc3RydWN0IHRzX2N0eC5vcHMAAABURUVfVVVJRAAAAAAudGltZUxvdwAAAAAudGltZU1pZAAA
AAAudGltZUhpQW5kVmVyc2lvbgAAAC5jbG9ja1NlcUFuZE5vZGUAAAAAdXNlcl90YV9vcHMAX3Vz
ZXJfdGFfb3BzAAAAAHBzZXVkb190YV9vcHMAAABzdHJ1Y3QgdXNlcl90YV9jdHgAAC52bV9pbmZv
AAAAAC5sb2FkX2FkZHIAAC5lbnRyeV9mdW5jAC5kbF9lbnRyeV9mdW5jAAAuaXNfaW5pdGlhbGl6
aW5nAAAAAC5lbGZzAAAALnRhX2N0eAAudWN0eAAAAHN0cnVjdCB1c2VyX3RhX2N0eC51Y3R4AHN0
cnVjdCB1c2VyX21vZGVfY3R4LmN0eAAAAABzdHJ1Y3QgdXNlcl9tb2RlX2N0eAAAAABzdHJ1Y3Qg
dm1faW5mbwAALnJlZ2lvbnMAAAAALmFzaWQAAABzdHJ1Y3Qgdm1fcmVnaW9uAAAAAC5vZmZzZXQA
LnZhAC5zaXplAAAALmF0dHIAAAB0aHJlYWRzAHN0cnVjdCB0aHJlYWRfY3R4AAAALnVzZXJfbWFw
AAAALnJlZ3MAAAAuc3RhdGUAAHN0cnVjdCBjb3JlX21tdV91c2VyX21hcC5jdHhpZAAAZGVmYXVs
dF9wYXJ0aXRpb24AAAB0aHJlYWRfY29yZV9sb2NhbAAAAHN0cnVjdCB0aHJlYWRfY29yZV9sb2Nh
bAAAAAAuY3Vycl90aHJlYWQAAAAAc3RydWN0IHVzZXJfdGFfZWxmAAAuc2VncwAAAC5udW1fc2Vn
cwAAAC5saW5rLnRxZV9uZXh0AABzdHJ1Y3QgbG9hZF9zZWcAX19yb2RhdGFfZWFybHlfdGFfc3Rh
cnQAX19yb2RhdGFfZWFybHlfdGFfZW5kAAAAc3RydWN0IGVhcmx5X3RhAF9fc3RhcnRfdGFfaGVh
ZF9zZWN0aW9uAF9fc3RvcF90YV9oZWFkX3NlY3Rpb24AAHN0cnVjdCBwc2V1ZG9fdGFfY3R4LmN0
eAAAAABzdHJ1Y3QgcHNldWRvX3RhX2hlYWQAAAAubmFtZQAAAH5+L2RlbW8vYXJtL2tlcm5lbC9v
cC10ZWUAAABhdXRvbG9hZC5jbW0AAAAAc1ltYm9sLkF1dG9sb2FkLkNIRUNLQ01EICJETyAiIiVz
IiIgIgAAADxtYWdpYz4AVEFTSy5UQSAleAAAVEFTSy5UQQAlOHgAJTRkLgAAAAAgICAgICAgLQAA
AABjYW5ub3QgZ2V0IHNlc3Npb24gbGlzdABWYXIuVmlldyAlJUhleCAlJU9wZW4gKHN0cnVjdCBl
YXJseV90YSkoJSFBKQAAAABUQVNLLkVUQQAAAABFTEYgZmlsZSAgICAgICAgICAgIGxvYWQgYWRk
ciAgIHV1aWQKAAAAICAgIAAAAAAgc2VncwAAACAgIAB2YSAgICAgICAgICAgICAgc2l6ZQAAAAAg
ICAleAAAAF9fc2NhdHRlcmVkX2FycmF5XzBwc2V1ZG9fdGFzAAAAVmFyLlZpZXcgJSVIZXggJSVP
cGVuIChzdHJ1Y3QgcHNldWRvX3RhX2hlYWQpKCUhQSkAAG1hZ2ljICAgICAgICAgICAgAAAAICAg
ICAgICAgICAgICAgIG5hbWUAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dWlk
AAAAAG1hZ2ljICAgIAAAACBhc2lkAAAAbG9hZCBhZGRyAAAAICAgIGVudHJ5AAAAICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1dWlkAFBTRVVET1RBAAAAAFBUQQBQc2V1ZG9UQQAA
AABFQVJMWVRBAEVUQQBFYXJseVRBAFRBAABvcHRlZQAAAG1hZ2ljID0gJTE2eAAAAAAlOHgtJTR4
LSU0eC0AAAAATlMAAE0AAABTUFIAc3RydWN0IGNvcmVfbW11X3VzZXJfbWFwLnR0YnIwAABHZXRN
b2R1bGVMaXN0AAAAaV9tb2QgPSAlZAAAR2V0QWRkck9mZnNldEJ5Vm1SZWdpb24oJTE2eCwgJTE2
eCkAR2V0TW9kdWxlSW5mbyAudm1fcmVnaW9uID0gJXgAAABHZXRNb2R1bGVJbmZvICUxNngAAGxk
ZWxmAAAAVEFTSy5UQS5BU0lEAAAAAFRBU0suVEEuTE9BREFERFIAAAAAVEFTSy5UQS5FTlRSWQAA
AFRBU0suVEEuQ1VSUkVOVAByMQAAcjIAAHIzAAByNAAAcjUAAHI2AAByNwAAcjhfdXNyAAByOV91
c3IAAHIxMF91c3IAcjExX3VzcgByMTJfdXNyAHIxM191c3IAcjE0X3VzcgBzcHNyX3N2YwAAAABy
MTNfc3ZjAHIxNF9zdmMAcGMAAGNwc3IAAAAAaGFyZHdhcmV0aHJlYWQAAFZhci5WaWV3ICUlT3Bl
biAoc3RydWN0IHRlZV90YV9zZXNzaW9uKSV4AAAAIC0gACAgIGlkAAAAU0VTU0lPTgBPUC1URUUA
AEFSTQBEQVRBAAAAAwBVAAAABACcAAALKAAAAAMAVQAAAAQAnAAADdwAAAADAFUAAAAEAIwAAAw4
AAAAAwBVAAAABAB8AAARWAAAPZAAAD2QAAA9kAAAPDQAAAkwAAA9fAAAPYQAAD2IAAA8NAAACRgA
AD1gAAA9bAAAPXAAADw0AAAJJAAAPLgAADzMAAA85AAAAAAAADy4AAA8UAAAPOQAAAAAAAA9DAAA
PRgAAD0gAAA9LAAAPTgAAAAAAAAgcAAAJPQAAD6YAAAAAwAAAAAAAAAAAAA8NAAAJ0gAAD6IAAAA
AwAAAAMAAAAAAAA8NAAAJ5AAAD50AAAAAwAAAAMAAAAAAAA8NAAAJ+QAAD5kAAAAAwAAAAMAAAAA
AAA8NAAAKDgAAD8kAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3kAAAAAAAAAAgAAD6oAAAAAAAAAAgA
AD6sAAAAAAAAAAgAAD6wAAAAAAAAAAgAAD60AAAAAAAAAAgAAD64AAAAAAAAAAgAAD68AAAAAAAA
AAgAAD7AAAAAAAAAAAgAAD7EAAAAAAAAAAgAAD7MAAAAAAAAAAgAAD7UAAAAAAAAAAgAAD7cAAAA
AAAAAAgAAD7kAAAAAAAAAAgAAD7sAAAAAAAAAAgAAD70AAAAAAAAAAgAAD78AAAAAAAAAAgAAD8I
AAAAAAAAAAgAAD8QAAAAAAAAAAgAAD8YAAAAAAAAAAgAAD8cAAAAAAAAAAgAAAAAAAAAAAAAAAAA
AAADAFUAAAAEAlQAACnMAAA/bAAAP2wAAD9sAAA8NAAAKZgAAD0MAAA/ZAAAPOQAAAAAAAA8NAAA
P3QAAD98AAAAAP//////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////VDMyRQ==
)
RETURN
)
menu_32bit: ;(header, infix)
(
PMACRO.LOCK
(
PRIVATE &sHeader &sInfix &sMenuName
PARAMETERS &sHeader &sInfix
&sMenuName=TASK.TRANSPOSE.INFIX("&sHeader")
IF MENU.EXIST("TASK.&(sMenuName)")
MENU.Delete.NAME TASK.&(sMenuName)
IF MENU.EXIST("EXT.&(sMenuName)")
MENU.Delete.NAME EXT.&(sMenuName)
MENU.ReProgram
(&+
; --------------------------------------------------------------------------------
; @Title: optee specific menu
; @Description: -
; @Keywords: optee menu awareness
; @Author: KJM AME
; @Copyright: (c) 1989-2021 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id$
NAME "TASK.&(sMenuName)"
IF !MENU.EXIST("TASK.&(sMenuName)")
(
ADD
MENU
(
POPUP "&(sHeader)"
(
DEFAULT
MENUITEM "[:objects]Display Trusted Applications" "TASK.&(sInfix)TA"
MENUITEM "[:objects]Display Pseudo Trusted Applications" "TASK.&(sInfix)PseudoTA"
MENUITEM "[:objects]Display Early Trusted Applications" "TASK.&(sInfix)EarlyTA"
MENUITEM "Debug Trusted Application From Entry"
(
DO "~~/demo/arm/kernel/op-tee/ta_debug"
)
POPUP "[:symbols]Symbol &Autoloader"
(
MENUITEM "[:symbols]List Components" "sYmbol.AutoLoad.List"
MENUITEM "[:init]Check Now!" "sYmbol.AutoLoad.CHECK"
)
SEPARATOR
MENUITEM "[:objects]Display Sessions" "TASK.&(sInfix)SESSION"
)
)
MENU "task.&(sInfix)ta"
(
DEFAULT
MENUITEM "[:objects]Display detailed"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
TASK.&(sInfix)TA &nTrackAddress
)
MENUITEM "[:var]Display ta struct"
(
PRIVATE &pTrackAddress
&pTrackAddress=track.address()
Var.View %Open %String (struct user_ta_ctx*)(&pTrackAddress)
)
SEPARATOR
MENUITEM "[:varframe]Display Stack Frame"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
Frame /Locals /Caller /Task &nTrackAddress /MODule
)
MENUITEM "[:reg]Display Registers"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
Register /Task &nTrackAddress
)
MENUITEM "[:correlate]Switch Context"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
Register.TASK &nTrackAddress
)
)
MENU "task.&(sInfix)eta"
(
DEFAULT
MENUITEM "[:var]Display early_ta struct"
(
PRIVATE &pTrackAddress
&pTrackAddress=track.address()
Var.View %Open %Hex (struct early_ta)(&pTrackAddress)
)
MENUITEM "[:dump]Dump early_ta"
(
PRIVATE &pTrackAddress
&pTrackAddress=track.address()
Data Var.ADDRESS(((struct early_ta)(&pTrackAddress)).ta)++Var.Value(((struct early_ta)(&pTrackAddress)).size)
)
)
)
)
)
PMACRO.UNLOCK
RETURN
)
autoload_32bit: ;(options)
(
PARAMETERS &sOptions
sYmbol.AutoLOAD.CHECKEmBeDded &sOptions
(
; --------------------------------------------------------------------------------
; @Title: optee autoload script, called by TRACE32 if TA symbols are to be loaded
; @Description:
; This script is part of the TRACE32 optee Awareness
;
; @Keywords: optee autoloader awareness
; @Props: NoWelcome NoIndex
; @Author: KJM
; @Copyright: (C) 1989-2021 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: autoload.cmm 6805 2021-08-11 07:28:55Z amerkle $
// define local macros
PRIVATE &sFilename &sFilepath &sProgname &sProgpath &cFirst
PRIVATE &sLine
PRIVATE &sParamName &nParamCodeAddress &nParamDataAddress &nParamSpace &nParamType &nParamMachine
// get filename and relocation information
// these parameters are passed from TRACE32 when calling this skript
ENTRY %LINE &sLine
&sParamName=STRing.SCANandExtract("&sLine","NAME=","")
&nParamType=STRing.SCANandExtract("&sLine","TYPE=","0.")
&nParamCodeAddress="0x"+STRing.SCANandExtract("&sLine","CODEADDRESS=0x","0")
&nParamDataAddress="0x"+STRing.SCANandExtract("&sLine","DATAADDRESS=0x","0")
&nParamSpace="0x"+STRing.SCANandExtract("&sLine","SPACEID=0x","0")
&nParamMachine=STRing.SCANandExtract("&sLine","MACHINE=","")
&sParamName=STRing.Replace("&sParamName","""","",0.)
&nParamType=&nParamType
&nParamCodeAddress=&nParamCodeAddress
&nParamDataAddress=&nParamDataAddress
&nParamSpace=&nParamSpace
IF ("&nParamMachine"!="")
&nParamMachine=&nParamMachine
// get program name
&sFilename="&(sParamName).elf"
&sFilepath=""
&sProgname=sYmbol.TRANSPOSE("&sParamName")
// delete symbols if they already exist
IF sYmbol.EXIST("\\&sProgname")
(
sYmbol.Delete \\&sProgname
)
GROUP.Delete "&sProgname"
// check if preset file path is valid
&sFilepath="&sFilename"
IF !OS.FILE("&sFilepath")
&sFilepath=sYmbol.SEARCHFILE("&sFilename")
IF !OS.FILE("&sFilepath")
(
PRIVATE &sSourcePath
WinPOS ,,,,,, filebox normal "Searching symbols for &sFilename"
DIALOG.File "*&sFilename*"
ENTRY %LINE &sFilepath
IF "&sFilepath"==""
ENDDO
&sSourcePath=OS.FILE.PATH("&sFilepath")
sYmbol.SourcePATH.Set "&sSourcePath"
)
IF SYStem.Option.MACHINESPACES()
Data.LOAD.Elf "&sFilepath" Z:0:::&nParamSpace::&nParamCodeAddress /NoCODE /NoClear
ELSE
Data.LOAD.Elf "&sFilepath" Z:&nParamSpace::&nParamCodeAddress /NoCODE /NoClear
ENDDO
)
RETURN
)
extension_64bit: ; (options)
(
PARAMETERS &sParameters &sOptions
EXTension.LOAD &sParameters &sOptions
(
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
SAAGEUv//9g9IAAEgSkFVCwJAABBgAAoPUAABIFKBXQsCgAAQYAAOH0pUhR9Kv5wfIkgFHxqGRRO
gAAgPSAABIEpBVgsCQAAQYAAIH0q/nB8iSAUfGoZFE6AACA4YP//OID//06AACA4YP//OID//06A
ACCUIf/wk8EACJPhAAx8fht4fJ8jeDFE//99IwHULAn//0GCAHQ9IAAEgSkFVCwJAABBgADAPSAA
BIEpBXQsCQAAQYABPD0gAASAiQVsLAQAAEGAATh8CAKmkAEAFHyD/nB8hPgUfGPxFEgABUE9QAAE
OQoF2IEqBdh8CRgAQYIAPDhg//84gP//gAEAFHwIA6ZIAAAYOSD//XwKSEBAgf+IOGD//ziA//+D
wQAIg+EADDghABBOgAAggSgABHwJIABAgv/APSAABICJBVQ9IAAEgSkFdHyEShR8g/5wfIT4EHxj
8RCAAQAUfAgDpkv//7w9IAAEgSkFWCwJAABBgACYPSAABICJBXgsBAAAQYAAlHwIAqaQAQAUfIP+
cHyE+BR8Y/EUSAAEhT1AAAQ5CgXYgSoF2HwJGABBggAYOGD//ziA//+AAQAUfAgDpkv//1yBKAAE
fAkgAECC/+Q9IAAEgIkFWHyD/nB8hPgQfGPxEIABABR8CAOmS///MDhg//84gP//S///JDhg//84
gP//S///GDhg//84gP//S///DDhg//84gP//S///ADFE//99IwHULAn//0GCACiUIf/wfAgCppAB
ABRL/8ptS//+NYABABR8CAOmOCEAEE6AACA5IP/9fApIQECB/9Q4YP//OID//06AACCUIf/wk8EA
CJPhAAx8fht4fJ8jeDFE//99IwHULAn//0GCAGQ9IAAEgIkFbCwEAABAgQCkPSAABIEpBeAsCQAA
QYABIHwIAqaQAQAUfIP+cHyE+BR8Y/EUSAADWT1AAAQ5CgXQgSoF0HwJGABBggA8OGD//ziA//+A
AQAUfAgDpkgAABg5IP/9fApIQECB/5g4YP//OID//4PBAAiD4QAMOCEAEE6AACCBKAAEfAkgAECC
/8A9IAAEgIkF4HyD/nB8hPgQfGPxEIABABR8CAOmS///yD0gAASAiQV4LAQAAECBAIw9IAAEgSkF
4CwJAABBgACIfAgCppABABR8g/5wfIT4FHxj8RRIAAKpPUAABDkKBdCBKgXQfAkYAEGCABg4YP//
OID//4ABABR8CAOmS///aIEoAAR8CSAAQIL/5D0gAASAiQXgfIP+cHyE+BB8Y/EQgAEAFHwIA6ZL
//88OGD//ziA//9L//8wOGD//ziA//9L//8kOGD//ziA//9L//8YMUT//30jAdQsCf//QYIAKJQh
//B8CAKmkAEAFEv/yJ1L//5dgAEAFHwIA6Y4IQAQToAAIDkg//18CkhAQIH/1Dhg//84gP//ToAA
IIkjAAAsCQAAQYIAMHxqG3iNKgABLAkAAECC//g4hP//OUr//40kAAGdKgABLAkAAECC//ROgAAg
fGobeEv//+A9IH9/YSl/fz1AAQFhSgEBOIP//IQEAAR8BUt4fMoAUHzFKHlBgv/wfGMgUHwFS3h8
Bkg4fMZKFHylMPh8pQA0VKXo/nxjKhROgAAgToAAIIlDAAAsCgAATYIAIHxoG3hIAAAQjUgAASwK
AABNggAgOSr/v1UpBj4oCQAZQYH/6DlKACCZSAAAS///3DhAAQF8ghAIToAAIDhAAQt8ghAIToAA
IDhAARl8ghAIToAAIDhAARp8ghAIToAAIDhAARx8ghAIToAAIDhAAR58ghAIToAAIDhAASB8ghAI
ToAAIDhAASF8ghAIToAAIDhAASJ8ghAIToAAIDhAASN8ghAIToAAIDhAASR8ghAIToAAIDhAAgJ8
ghAIToAAIDhAAgR8ghAIToAAIDhAAgZ8ghAIToAAIDhAAgp8ghAIToAAIDhAAgt8ghAIToAAIDhA
AxN8ghAIToAAIDhAAyF8ghAIToAAIDhAAyJ8ghAIToAAIDhAA0N8ghAIToAAIDhAA1F8ghAIToAA
IDhAA1J8ghAIToAAIDhAA1N8ghAIToAAIDhAA1R8ghAIToAAIDhAA2N8ghAIToAAIDhABAB8ghAI
ToAAIDhABA98ghAIToAAIDhABDZ8ghAIToAAIDhABFJ8ghAIToAAIDhABFN8ghAIToAAIDhABRh8
ghAIToAAIDhABwR8ghAIToAAIDhABwV8ghAIToAAIDhABwZ8ghAIToAAIDhACgF8ghAIToAAIDhA
CgN8ghAIToAAIDhAChF8ghAIToAAIDhAChJ8ghAIToAAIDhAChN8ghAIToAAIDhAChR8ghAIToAA
IDhAChV8ghAIToAAIDhAChZ8ghAIToAAIL4CAwQAAAAFAEBWRVJTSU9OLUlORk9AADEwMTk0AAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAn0gAAB+gAAAAGAAAADQAAAAAAAAAAAAAAAGh0dHBz
Oi8vc3ZuLmludGVybi5sYXV0ZXJiYWNoLmNvbS9zdm4va2VybmVsc3JjL2JyYW5jaGVzL25pZ2h0
bHkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAaHR0cHM6Ly9zdm4uaW50ZXJuLmxhdXRlcmJhY2guY29tL3N2bi9rZXJuZWxzcmMA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABiYXVtZWlzdGVyAAAAAAAAZWRrLWxpbnV4NjRiaXQtNwAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEdDQyA5LjUuMAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAH6AAAAAYAAAANAAAATgAAJ9IAAAfoAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAE+PU9Q
LVRFRQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAACAAAABfX3RleHRfc3RhcnQAAAAAdGVlX29wZW5fc2Vzc2lvbnMAAAAudHFo
X2ZpcnN0AABzdHJ1Y3QgdGVlX3RhX3Nlc3Npb24AAAAubGluawAAAC50c19zZXNzAAAAAC5pZAAu
bG9ja190aHJlYWQAAAAAc3RydWN0IHRzX3Nlc3Npb24uY3R4AAAAc3RydWN0IHRlZV90YV9jdHgA
AAAudXVpZAAAAC5vcHMAAAAALnRzX2N0eABzdHJ1Y3QgdHNfY3R4LnV1aWQAAHN0cnVjdCB0c19j
dHgub3BzAAAAVEVFX1VVSUQAAAAALnRpbWVMb3cAAAAALnRpbWVNaWQAAAAALnRpbWVIaUFuZFZl
cnNpb24AAAAuY2xvY2tTZXFBbmROb2RlAAAAAHVzZXJfdGFfb3BzAF91c2VyX3RhX29wcwAAAABw
c2V1ZG9fdGFfb3BzAAAAc3RydWN0IHVzZXJfdGFfY3R4AAAudm1faW5mbwAAAAAubG9hZF9hZGRy
AAAuZW50cnlfZnVuYwAuZGxfZW50cnlfZnVuYwAALmlzX2luaXRpYWxpemluZwAAAAAuZWxmcwAA
AC50YV9jdHgALnVjdHgAAABzdHJ1Y3QgdXNlcl90YV9jdHgudWN0eABzdHJ1Y3QgdXNlcl9tb2Rl
X2N0eC5jdHgAAAAAc3RydWN0IHVzZXJfbW9kZV9jdHgAAAAAc3RydWN0IHZtX2luZm8AAC5yZWdp
b25zAAAAAHN0cnVjdCB2bV9yZWdpb24AAAAALm9mZnNldAAudmEALnNpemUAAAAuYXR0cgAAAHRo
cmVhZHMAc3RydWN0IHRocmVhZF9jdHgAAAAudXNlcl9tYXAAAAAucmVncwAAAC5zdGF0ZQAAc3Ry
dWN0IGNvcmVfbW11X3VzZXJfbWFwLmFzaWQAAABkZWZhdWx0X3BhcnRpdGlvbgAAAHRocmVhZF9j
b3JlX2xvY2FsAAAAc3RydWN0IHRocmVhZF9jb3JlX2xvY2FsAAAAAC5jdXJyX3RocmVhZAAAAABz
dHJ1Y3QgdXNlcl90YV9lbGYAAC5zZWdzAAAALm51bV9zZWdzAAAALmxpbmsudHFlX25leHQAAHN0
cnVjdCBsb2FkX3NlZwBfX3JvZGF0YV9lYXJseV90YV9zdGFydABfX3JvZGF0YV9lYXJseV90YV9l
bmQAAABzdHJ1Y3QgZWFybHlfdGEAX19zdGFydF90YV9oZWFkX3NlY3Rpb24AX19zdG9wX3RhX2hl
YWRfc2VjdGlvbgAAc3RydWN0IHBzZXVkb190YV9jdHguY3R4AAAAAHN0cnVjdCBwc2V1ZG9fdGFf
aGVhZAAAAC5uYW1lAAAAfn4vZGVtby9hcm02NC9rZXJuZWwvb3AtdGVlAGF1dG9sb2FkLmNtbQAA
AABzWW1ib2wuQXV0b2xvYWQuQ0hFQ0tDTUQgIkRPICIiJXMiIiAiAAAAPG1hZ2ljPgBUQVNLLlRB
ICV4AABUQVNLLlRBACU0ZC4AAAAAICAgICAgIC0AAAAAY2Fubm90IGdldCBzZXNzaW9uIGxpc3QA
RUxGIGZpbGUgICAgICAgICAgICBsb2FkIGFkZHIgICB1dWlkCgAAACAgICAAAAAAIHNlZ3MAAAAg
ICAAdmEgICAgICAgICAgICAgIHNpemUAAAAAICAgJXgAAABWYXIuVmlldyAlJUhleCAlJU9wZW4g
KHN0cnVjdCBlYXJseV90YSkoJSFBKQAAAABUQVNLLkVUQQAAAAAlOHgAX19zY2F0dGVyZWRfYXJy
YXlfMHBzZXVkb190YXMAAABWYXIuVmlldyAlJUhleCAlJU9wZW4gKHN0cnVjdCBwc2V1ZG9fdGFf
aGVhZCkoJSFBKQAAbWFnaWMgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgbmFtZQAAAAAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQAAAAAIGFzaWQAAABsb2FkIGFkZHIA
AAAgICAgZW50cnkAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWQAUFNF
VURPVEEAAAAAUFRBAFBzZXVkb1RBAAAAAEVBUkxZVEEARVRBAEVhcmx5VEEAVEEAAG9wdGVlAAAA
bWFnaWMgPSAlMTZ4AAAAACU4eC0lNHgtJTR4LQAAAABOUwAATQAAAFNQUgBHZXRNb2R1bGVMaXN0
AAAAaV9tb2QgPSAlZAAAR2V0QWRkck9mZnNldEJ5Vm1SZWdpb24oJTE2eCwgJTE2eCkAR2V0TW9k
dWxlSW5mbyAudm1fcmVnaW9uID0gJXgAAABHZXRNb2R1bGVJbmZvICUxNngAAGxkZWxmAAAAVEFT
Sy5UQS5BU0lEAAAAAFRBU0suVEEuTE9BREFERFIAAAAAVEFTSy5UQS5FTlRSWQAAAFRBU0suVEEu
Q1VSUkVOVABzcAAAcGMAAGNwc3IAAAAAeDAAAHgxAAB4MgAAeDMAAHg0AAB4NQAAeDYAAHg3AAB4
OAAAeDkAAHgxMAB4MTEAeDEyAHgxMwB4MTQAeDE1AHgxNgB4MTcAeDE4AHgxOQB4MjAAeDIxAHgy
MgB4MjMAeDI0AHgyNQB4MjYAeDI3AHgyOAB4MjkAeDMwAGhhcmR3YXJldGhyZWFkAABWYXIuVmll
dyAlJU9wZW4gKHN0cnVjdCB0ZWVfdGFfc2Vzc2lvbikleAAAACAtIAAgICBpZAAAAFNFU1NJT04A
T1AtVEVFAABBUk02NABEQVRBAAAAAwBVAAAABACcAAAMPAAAAAMAVQAAAAQAnAAADaQAAAADAFUA
AAAEAIwAABD4AAAAAwBVAAAABAB8AAAUbAAATCAAAEwgAABMIAAASpAAAAnwAABMDAAATBQAAEwY
AABKkAAACdgAAEvwAABL/AAATAAAAEqQAAAJ5AAAS1QAAEtoAABLgAAAAAAAAEtUAABKrAAAS4AA
AAAAAABLVAAAS6gAAEuwAABLvAAAS8gAAAAAAAAogAAALzAAAE0IAAAAAwAAAAAAAAAAAABKkAAA
MlQAAEz4AAAAAwAAAAMAAAAAAABKkAAAMrgAAEzkAAAAAwAAAAMAAAAAAABKkAAAMzQAAEzUAAAA
AwAAAAMAAAAAAABKkAAAM7AAAAAAAABNpAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAABNGAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNHAAAAAAAAAAAAAAAAAAAAAgA
AAAAAABNIAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNKAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNLAAA
AAAAAAAAAAAAAAAAAAgAAAAAAABNMAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNNAAAAAAAAAAAAAAA
AAAAAAgAAAAAAABNOAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNPAAAAAAAAAAAAAAAAAAAAAgAAAAA
AABNQAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNRAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNSAAAAAAA
AAAAAAAAAAAAAAgAAAAAAABNTAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNUAAAAAAAAAAAAAAAAAAA
AAgAAAAAAABNVAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNWAAAAAAAAAAAAAAAAAAAAAgAAAAAAABN
XAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNYAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNZAAAAAAAAAAA
AAAAAAAAAAgAAAAAAABNaAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNbAAAAAAAAAAAAAAAAAAAAAgA
AAAAAABNcAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNdAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNeAAA
AAAAAAAAAAAAAAAAAAgAAAAAAABNfAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNgAAAAAAAAAAAAAAA
AAAAAAgAAAAAAABNhAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNiAAAAAAAAAAAAAAAAAAAAAgAAAAA
AABNjAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNkAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNlAAAAAAA
AAAAAAAAAAAAAAgAAAAAAABNmAAAAAAAAAAAAAAAAAAAAAgAAAAAAABNnAAAAAAAAAAAAAAAAAAA
AAgAAAAAAABNoAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AwBVAAAABAS8AAA14AAATewAAE3sAABN7AAASpAAADWsAABLVAAATeQAAEuAAAAAAAAASpAAAE30
AABN/AAAAAAAAAAA////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////8AAAAA////////////////////////////////
////////////////////////////////////////////////////////////////////////////
////////////////////VDMyRQ==
)
RETURN
)
menu_64bit: ;(header, infix)
(
PMACRO.LOCK
(
PRIVATE &sHeader &sInfix &sMenuName
PARAMETERS &sHeader &sInfix
&sMenuName=TASK.TRANSPOSE.INFIX("&sHeader")
IF MENU.EXIST("TASK.&(sMenuName)")
MENU.Delete.NAME TASK.&(sMenuName)
IF MENU.EXIST("EXT.&(sMenuName)")
MENU.Delete.NAME EXT.&(sMenuName)
MENU.ReProgram
(&+
; --------------------------------------------------------------------------------
; @Title: optee specific menu
; @Description: -
; @Keywords: optee menu awareness
; @Author: KJM AME
; @Copyright: (c) 1989-2021 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id$
NAME "TASK.&(sMenuName)"
IF !MENU.EXIST("TASK.&(sMenuName)")
(
ADD
MENU
(
POPUP "&(sHeader)"
(
DEFAULT
MENUITEM "[:objects]Display Trusted Applications" "TASK.&(sInfix)TA"
MENUITEM "[:objects]Display Pseudo Trusted Applications" "TASK.&(sInfix)PseudoTA"
MENUITEM "[:objects]Display Early Trusted Applications" "TASK.&(sInfix)EarlyTA"
MENUITEM "Debug Trusted Application From Entry"
(
DO "~~/demo/arm/kernel/op-tee/ta_debug"
)
POPUP "[:symbols]Symbol &Autoloader"
(
MENUITEM "[:symbols]List Components" "sYmbol.AutoLoad.List"
MENUITEM "[:init]Check Now!" "sYmbol.AutoLoad.CHECK"
)
SEPARATOR
MENUITEM "[:objects]Display Sessions" "TASK.&(sInfix)SESSION"
)
)
MENU "task.&(sInfix)ta"
(
DEFAULT
MENUITEM "[:objects]Display detailed"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
TASK.&(sInfix)TA &nTrackAddress
)
MENUITEM "[:var]Display ta struct"
(
PRIVATE &pTrackAddress
&pTrackAddress=track.address()
Var.View %Open %String (struct user_ta_ctx*)(&pTrackAddress)
)
SEPARATOR
MENUITEM "[:varframe]Display Stack Frame"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
Frame /Locals /Caller /Task &nTrackAddress /MODule
)
MENUITEM "[:reg]Display Registers"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
Register /Task &nTrackAddress
)
MENUITEM "[:correlate]Switch Context"
(
PRIVATE &nTrackAddress
&nTrackAddress=address.offset(track.address())
Register.TASK &nTrackAddress
)
)
MENU "task.&(sInfix)eta"
(
DEFAULT
MENUITEM "[:var]Display early_ta struct"
(
PRIVATE &pTrackAddress
&pTrackAddress=track.address()
Var.View %Open %Hex (struct early_ta)(&pTrackAddress)
)
MENUITEM "[:dump]Dump early_ta"
(
PRIVATE &pTrackAddress
&pTrackAddress=track.address()
Data Var.ADDRESS(((struct early_ta)(&pTrackAddress)).ta)++Var.Value(((struct early_ta)(&pTrackAddress)).size)
)
)
)
)
)
PMACRO.UNLOCK
RETURN
)
autoload_64bit: ;(options)
(
PARAMETERS &sOptions
sYmbol.AutoLOAD.CHECKEmBeDded &sOptions
(
; --------------------------------------------------------------------------------
; @Title: optee autoload script, called by TRACE32 if TA symbols are to be loaded
; @Description:
; This script is part of the TRACE32 optee Awareness
;
; @Keywords: optee autoloader awareness
; @Props: NoWelcome NoIndex
; @Author: KJM
; @Copyright: (C) 1989-2021 Lauterbach GmbH, licensed for use with TRACE32(R) only
; --------------------------------------------------------------------------------
; $Id: autoload.cmm 6805 2021-08-11 07:28:55Z amerkle $
// define local macros
PRIVATE &sFilename &sFilepath &sProgname &sProgpath &cFirst
PRIVATE &sLine
PRIVATE &sParamName &nParamCodeAddress &nParamDataAddress &nParamSpace &nParamType &nParamMachine
// get filename and relocation information
// these parameters are passed from TRACE32 when calling this skript
ENTRY %LINE &sLine
&sParamName=STRing.SCANandExtract("&sLine","NAME=","")
&nParamType=STRing.SCANandExtract("&sLine","TYPE=","0.")
&nParamCodeAddress="0x"+STRing.SCANandExtract("&sLine","CODEADDRESS=0x","0")
&nParamDataAddress="0x"+STRing.SCANandExtract("&sLine","DATAADDRESS=0x","0")
&nParamSpace="0x"+STRing.SCANandExtract("&sLine","SPACEID=0x","0")
&nParamMachine=STRing.SCANandExtract("&sLine","MACHINE=","")
&sParamName=STRing.Replace("&sParamName","""","",0.)
&nParamType=&nParamType
&nParamCodeAddress=&nParamCodeAddress
&nParamDataAddress=&nParamDataAddress
&nParamSpace=&nParamSpace
IF ("&nParamMachine"!="")
&nParamMachine=&nParamMachine
// get program name
&sFilename="&(sParamName).elf"
&sFilepath=""
&sProgname=sYmbol.TRANSPOSE("&sParamName")
// delete symbols if they already exist
IF sYmbol.EXIST("\\&sProgname")
(
sYmbol.Delete \\&sProgname
)
GROUP.Delete "&sProgname"
// check if preset file path is valid
&sFilepath="&sFilename"
IF !OS.FILE("&sFilepath")
&sFilepath=sYmbol.SEARCHFILE("&sFilename")
IF !OS.FILE("&sFilepath")
(
PRIVATE &sSourcePath
WinPOS ,,,,,, filebox normal "Searching symbols for &sFilename"
DIALOG.File "*&sFilename*"
ENTRY %LINE &sFilepath
IF "&sFilepath"==""
ENDDO
&sSourcePath=OS.FILE.PATH("&sFilepath")
sYmbol.SourcePATH.Set "&sSourcePath"
)
IF SYStem.Option.MACHINESPACES()
Data.LOAD.Elf "&sFilepath" Z:0:::&nParamSpace::&nParamCodeAddress /NoCODE /NoClear
ELSE
Data.LOAD.Elf "&sFilepath" Z:&nParamSpace::&nParamCodeAddress /NoCODE /NoClear
ENDDO
)
RETURN
)
menu_delete: ;(header)
(
PRIVATE &sHeader &sMenuName
PARAMETERS &sHeader
&sMenuName=TASK.TRANSPOSE.INFIX("&sHeader")
IF MENU.EXIST("TASK.&(sMenuName)")
MENU.Delete.NAME TASK.&(sMenuName)
IF MENU.EXIST("EXT.&(sMenuName)")
MENU.Delete.NAME EXT.&(sMenuName)
RETURN
)
autoload_delete: ;(options)
(
PARAMETERS &sOptionMachine
IF PRACTICE.FUNCtion.AVAILable(SYStem.Option.MACHINESPACES)
(
IF !SYStem.Option.MACHINESPACES()
&sOptionMachine=""
)
ELSE
(
&sOptionMachine=""
)
sYmbol.AutoLOAD.CHECKCoMmanD "DO autoload.cmm " &sOptionMachine
RETURN
)