blob: 45b6b11baba59aa1665477c23f293a5d1f182fbc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
#include "global.h"
#include "gx.h"
ARM_FUNC void G3_BeginMakeDL(struct GXDLInfo *displaylist, void *r1, u32 r2){
displaylist->length = r2;
displaylist->bottom = r1;
displaylist->curr_cmd = r1;
displaylist->curr_param = (u32 *)r1 + 1;
displaylist->param0_cmd_flg = 0x0;
}
ARM_FUNC s32 G3_EndMakeDL(struct GXDLInfo *displaylist){
if (displaylist->bottom == (u32 *)displaylist->curr_cmd)
return 0;
//pads the buffer with 0 to 4byte alignment if needed
switch((u32)displaylist->curr_cmd & 0x3)
{
case 0:
return displaylist->curr_cmd - (u8 *)displaylist->bottom;
case 1:
*displaylist->curr_cmd++ = 0x0;
case 2:
*displaylist->curr_cmd++ = 0x0;
case 3:
*displaylist->curr_cmd++ = 0x0;
}
if (displaylist->param0_cmd_flg)
{
*displaylist->curr_param++ = 0x0;
displaylist->param0_cmd_flg = 0x0;
}
displaylist->curr_cmd = (u8 *)displaylist->curr_param;
return displaylist->curr_cmd - (u8 *)displaylist->bottom;
}
|