blob: c9fe94c3d48b1ca5269321b2b7c473dfad6eecd6 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001my ($lis_exist,$platform,$check_g)=&ParseCmdlineInput(@ARGV);
2my $DEBUG = 0;
3my ($M_flag,$M_start_add,$M_size,$G_flag,$G_start_add,$G_size) = &ParseInputFile($lis_exist,$check_g);
4my $Result_m='';
5my $Result_g='';
6
7print "$lis_exist !!\n" if ($DEBUG);
8print $M_flag,"\n" if ($DEBUG);
9print $G_flag,"\n" if ($DEBUG);
10
11
12if ($M_flag)
13{
14 $Result_m = CheckBound($M_start_add,$M_size,$platform);
15
16 print "result_m=$Result_m\n" if ($DEBUG);
17
18 if ($Result_m)
19 {
20 print "med_ext-mem exceeds the boundary!\n";
21 die;
22 }
23}
24else
25{
26 print "Skip med_ext_mem memory boundary check!\n";
27}
28
29if ($G_flag)
30{
31 $Result_g = CheckBound($G_start_add,$G_size,$platform);
32
33 print "result_g=$Result_g\n" if ($DEBUG);
34
35 if ($Result_g)
36 {
37 print "g_applib_mem_ap_pool exceeds the boundary!\n";
38 die;
39 }
40}
41else
42{
43 print "Skip g_applib_mem_ap_pool memory boundary check\n";
44}
45
46
47sub ParseCmdlineInput
48{
49 my $partfile = '';
50 my $Platform = '';
51 my $Check_flag = '';
52 my @argv = @_;
53 ($#argv < 0) && &Usage;
54 while($#argv!=-1)
55 {
56 print $argv[0],"\n" if ($DEBUG);
57 if(-e $argv[0])
58 {
59 $partfile = $argv[0];
60 }
61 else
62 {
63 print "The lis file is not existed!";
64 die;
65 }
66 $Platform = $argv[1];
67 $Check_flag = $argv[2];
68 last;
69 }
70 return ($partfile,$Platform,$Check_flag);
71}
72
73sub ParseInputFile
74{
75 my ($input_file,$chk_g) =@_;
76 my $m_start_add='';
77 my $m_size='';
78 my $g_start_add='';
79 my $g_size='';
80 my $m_flag = '';
81 my $g_flag = '';
82
83 print "Start to check memory boundary from input file: \n$input_file\n";
84 open INPUT, "<$input_file" or die "cannot open $input_file";
85 while(<INPUT>)
86 {
87 if (/(med_ext_mem)\s+(0\w+)\s+(\b.*?)\s+([0-9]+)\s+([^\s]+)/)
88 {
89 $m_start_add = $2;
90 $m_size = $4;
91 $m_flag = 1;
92 print "m_start_add=$m_start_add\n" if ($DEBUG);
93 print "size =$m_size\n" if ($DEBUG);
94 next;
95 }
96 elsif (/(g_applib_mem_ap_pool)\s+(0\w+)\s+(\b.*?)\s+([0-9]+)\s+([^\s]+)/)
97 {
98 $g_start_add = $2;
99 $g_size = $4;
100 $g_flag = 1;
101 print "g_start_add=$g_start_add\n" if ($DEBUG);
102 print "size =$g_size\n" if ($DEBUG);
103 last;
104 }
105 }
106# &Check_bound();
107 close INPUT;
108
109 if (($chk_g)&&($g_flag))
110 {
111 $g_flag = 1;
112 $m_flag = 0;
113 }
114 elsif ((!$chk_g)&&($m_flag))
115 {
116 $g_flag = 0;
117 $m_flag = 1;
118 }
119 return ($m_flag, $m_start_add,$m_size,$g_flag,$g_start_add,$g_size);
120}
121
122sub CheckBound
123{
124 my ($start_add,$size,$plat)=@_;
125 print "start_add=$start_add\n" if($DEBUG);
126 print "plat=$plat\n" if($DEBUG);
127 my $result1 = '';
128 my $result2 = '';
129 my $add = '';
130 my $basic ='';
131 my $test ='';
132 $start_add=hex($start_add);
133 if ($plat =~ /(622\w+)|(6235)/i) #
134 {
135 $basic = 0x01000000;
136 }
137 elsif ($plat =~ /(6238)|(6268)|(6516)|(6236)/i)
138 {
139 $basic = 0x04000000; #"67108864";
140 }
141 else
142 {
143 print "The platform not exist in ";
144 }
145
146 #$basic=hex($basic);
147 print "basic=$basic\n" if($DEBUG);
148 $result1 = int($start_add / $basic);
149 $add = $start_add + $size;
150 $result2 = int($add / $basic);
151 $basic1 = $basic;
152
153 print "start_add=$start_add\n" if($DEBUG);
154 print "basic1=$basic1\n" if($DEBUG);
155 print "Result1=$result1\n" if($DEBUG);
156 print "add=$add\n" if($DEBUG);
157 print "Result2=$result2\n" if($DEBUG);
158 print "size=$size\n\n" if($DEBUG);
159 #chomp($result1);
160 #chomp($result2);
161 if ($result1 eq $result2)
162 {
163 return 0;
164 }
165 else
166 {
167 return 1;
168 }
169}