11#include "libspu2_internal.h"
27 for ( counter_1 = 0; counter_1 <= _spu_AllocLastNum; counter_1 += 1 )
29 while ( (_spu_memList[counter_1].addr_area & 0x80000000) != 0 )
33 for ( list_idx = counter_1 + 1; _spu_memList[list_idx].addr_area == 0x2fffffff; list_idx += 1 )
36 p_cur_block_2 = &_spu_memList[list_idx];
38 (p_cur_block_2->addr_area & 0x80000000) != 0
39 && (p_cur_block_2->addr_area & 0xFFFFFFF)
40 == (_spu_memList[counter_1].addr_area & 0xFFFFFFF) + _spu_memList[counter_1].size_area )
42 p_cur_block_2->addr_area = 0x2fffffff;
43 _spu_memList[counter_1].size_area += p_cur_block_2->size_area;
49 if ( _spu_AllocLastNum >= 0 )
51 if ( !_spu_memList[0].size_area )
52 _spu_memList[0].addr_area = 0x2fffffff;
54 for ( counter_3 = 0; counter_3 <= _spu_AllocLastNum; counter_3 += 1 )
58 if ( (_spu_memList[counter_3].addr_area & 0x40000000) != 0 )
60 for ( counter_next = counter_3 + 1; _spu_AllocLastNum >= counter_next; counter_next += 1 )
62 p_next_block = &_spu_memList[counter_next];
63 if ( (p_next_block->addr_area & 0x40000000) != 0 )
65 addr_area = _spu_memList[counter_3].addr_area;
66 if ( (p_next_block->addr_area & 0xFFFFFFF) < (_spu_memList[counter_3].addr_area & 0xFFFFFFF) )
68 _spu_memList[counter_3].addr_area = p_next_block->addr_area;
69 size_area_1 = _spu_memList[counter_3].size_area;
70 _spu_memList[counter_3].size_area = p_next_block->size_area;
71 p_next_block->addr_area = addr_area;
72 p_next_block->size_area = size_area_1;
76 for ( idx = 0; idx <= _spu_AllocLastNum; idx += 1 )
78 if ( (_spu_memList[idx].addr_area & 0x40000000) != 0 )
82 if ( _spu_memList[idx].addr_area == 0x2fffffff )
84 p_cur_block_3 = &_spu_memList[_spu_AllocLastNum];
85 _spu_memList[idx].addr_area = p_cur_block_3->addr_area;
86 size_area_2 = p_cur_block_3->size_area;
87 _spu_AllocLastNum = idx;
88 _spu_memList[idx].size_area = size_area_2;
92 for ( alloc_last_num_1 = _spu_AllocLastNum - 1; alloc_last_num_1 >= 0; alloc_last_num_1 -= 1 )
97 p_prev_block = &_spu_memList[alloc_last_num_1];
98 if ( (p_prev_block->addr_area & 0x80000000) == 0 )
100 alloc_last_num_2 = _spu_AllocLastNum;
101 p_prev_block->addr_area = (p_prev_block->addr_area & 0xFFFFFFF) | 0x40000000;
102 size_area_3 = p_prev_block->size_area;
103 _spu_AllocLastNum = alloc_last_num_1;
104 p_prev_block->size_area = size_area_3 + _spu_memList[alloc_last_num_2].size_area;