blob: ce246799c548d96b961747fc7e0209c1917e1f40 [file] [log] [blame]
Mark Dykes50297972024-03-15 12:49:22 -05001#
2# Copyright (c) 2025 Arm Limited. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
7def gen_arg_struct_def(asdname,argfieldname,arglst,argnumfield):
8 asdfile = open(asdname, "w")
9 hline = "/*\n"
10 hline += " * Copyright (c) 2024, Arm Limited. All rights reserved.\n"
11 hline += " *\n"
12 hline += " * SPDX-License-Identifier: BSD-3-Clause\n"
13 hline += " */\n"
14 hline += "\n"
15 hline += "#ifndef ARG_STRUCT_DEF_H\n"
16 hline += "#define ARG_STRUCT_DEF_H\n"
17 hline += "\n"
18 asdfile.write(hline)
19 smccount = 0
20 argcount = 0
21 for sn in argfieldname:
22 hline = "#define "
23 hline += sn
24 hline += " "
25 hline += str(smccount)
26 hline += "\n"
27 asdfile.write(hline)
28 smccount = smccount + 1
29 smccount = smccount - 1
30 hline = "#define MAX_SMC_CALLS "
31 hline += str(smccount)
32 hline += "\n"
33 asdfile.write(hline)
34 asdfile.write("\n")
35 for sn in arglst:
36 for an in arglst[sn]:
37 hline = "#define "
38 hline += sn
39 hline += "_ARG" + str(an) + " " + str(argcount)
40 hline += "\n"
41 asdfile.write(hline)
42 argcount = argcount + 1
43 argcount = argcount - 1
44 hline = "#define MAX_ARG_LENGTH "
45 hline += str(argcount)
46 hline += "\n\n"
47 asdfile.write(hline)
48 for sn in argnumfield:
49 for ag in argnumfield[sn]:
50 fieldcount = 0
51 for fn in argnumfield[sn][ag]:
52 hline = "#define " + sn + "_ARG" + str(argnumfield[sn][ag][fn]) + "_" + fn.upper() + "_CNT " + str(fieldcount)
53 hline += "\n"
54 asdfile.write(hline)
55 fieldcount = fieldcount + 1
56 fieldcount = 0
57 hline = "\n\n"
58 asdfile.write(hline)
59 for sn in argnumfield:
60 for ag in argnumfield[sn]:
61 for fn in argnumfield[sn][ag]:
62 hline = "#define " + sn + "_ARG" + str(argnumfield[sn][ag][fn]) + "_" + fn.upper() + " " + str(fieldcount)
63 hline += "\n"
64 asdfile.write(hline)
65 fieldcount = fieldcount + 1
66 hline = "\n#endif /* ARG_STRUCT_DEF_H */\n"
67 asdfile.write(hline)
68
69 asdfile.close()