;@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 )