rjw | 6c1fd8f | 2022-11-30 14:33:01 +0800 | [diff] [blame] | 1 | my ($lis_exist,$platform,$check_g)=&ParseCmdlineInput(@ARGV);
|
| 2 | my $DEBUG = 0;
|
| 3 | my ($M_flag,$M_start_add,$M_size,$G_flag,$G_start_add,$G_size) = &ParseInputFile($lis_exist,$check_g);
|
| 4 | my $Result_m='';
|
| 5 | my $Result_g='';
|
| 6 |
|
| 7 | print "$lis_exist !!\n" if ($DEBUG);
|
| 8 | print $M_flag,"\n" if ($DEBUG);
|
| 9 | print $G_flag,"\n" if ($DEBUG);
|
| 10 |
|
| 11 |
|
| 12 | if ($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 | }
|
| 24 | else
|
| 25 | {
|
| 26 | print "Skip med_ext_mem memory boundary check!\n";
|
| 27 | }
|
| 28 |
|
| 29 | if ($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 | }
|
| 41 | else
|
| 42 | {
|
| 43 | print "Skip g_applib_mem_ap_pool memory boundary check\n";
|
| 44 | }
|
| 45 |
|
| 46 |
|
| 47 | sub 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 |
|
| 73 | sub 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 |
|
| 122 | sub 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 | } |