ddwriteint.h
2.54 KB
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
#include <PR/leosp.h>
#include <ddwrite.h>
/*
* Type definitions
*/
typedef struct
{
u32 country;
u32 diskType;
u32 iplSize;
void *loadAddr;
} __SystemInfo_s;
typedef struct
{
u8 defectData1[20];
u8 defectData2[160];
} __DefectInfo_s;
typedef struct
{
u32 inNlbas; /* 指定領域に何ブロックとれるか */
u32 inNbytes; /* inNlbas に対応するバイト数 */
u32 outNlbas; /* 指定領域を書くのに何ブロック必要か */
u32 outNbytes; /* outNlbas に対応するバイト数 */
u32 restBytes;
u32 oneBlockSize; /* startLba + nbytes の含まれるブロックのサイズ */
} __byteInfo_s;
/*
* Global definitions
*/
#define SECPERBLOCK 85
/*
* Macro definitions
*/
#define SAVE_COUNTRY(x) \
{ \
*(u8*)OS_PHYSICAL_TO_K1(0x00000010) = (((u32)(x) & 0xff000000) >> 24); \
*(u8*)OS_PHYSICAL_TO_K1(0x00000090) = (((u32)(x) & 0x00ff0000) >> 16); \
*(u8*)OS_PHYSICAL_TO_K1(0x00000110) = (((u32)(x) & 0x0000ff00) >> 8); \
*(u8*)OS_PHYSICAL_TO_K1(0x00000190) = ( (u32)(x) & 0x000000ff ); \
}
/*
* Prototypes
*/
extern void __ddFormatDisk(DDCmd *command);
extern void __ddSetID(DDCmd *command);
extern void __ddDummyRead(void);
extern void __ddDoDiskWrite(DDCmd *command);
extern void __ddInit(void);
/* from system.c */
extern u32 __ddWriteSystemBlock(__SystemInfo_s *sys,
__DefectInfo_s *def, u32 formatType);
extern u32 __ddReadSystemBlock(__SystemInfo_s *sys,
__DefectInfo_s *def, u32 *formatType);
extern u32 __ddWriteIDBlock(LEODiskID *id);
extern u32 __ddReadIDBlock(LEODiskID *id);
extern u32 __ddReadDefectBlock(__DefectInfo_s *def, u32 *formatType);
extern u32 __ddWriteErrorECC(void);
extern u32 __ddUnformatUserArea(void *buffer, u32 bufSize);
extern u32 __ddUnformatSystemArea(void *buffer, u32 bufSize);
/* from util.c */
extern u32 __ddGetnBlksInAreaLong(u32 diskType, s32 startLba, u32 areaSize);
extern u32 __ddLba2Byte(u32 type, s32 startLBA, u32 nlbas);
extern void __ddBfill(void *vaddr, u32 nbytes, u32 filldata);
extern u32 __ddGetnBlksInArea(__byteInfo_s *byteInfo,
u32 diskType, s32 startLba, u32 nbytes);
/*
* extern variables
*/
extern u32 LEO_country_code;
extern u32 __ddWriteActive;
extern s32 __ddWriteError;
extern OSMesgQueue __ddDiskQ; /* post queue */
extern DDInfo __ddInfo;
/* exports from init.c */
extern void *__ddBufp1;
extern void *__ddBufp2;