2976 lines
90 KiB
Plaintext
2976 lines
90 KiB
Plaintext
|
||
gfar_tst-mrs.ko: file format elf32-powerpc
|
||
|
||
|
||
Disassembly of section .text:
|
||
|
||
00000000 <GetValueBase>:
|
||
int i = 0;
|
||
int strLen = strlen(pBuf);
|
||
|
||
if(pBuf)
|
||
{
|
||
if(pBuf[0] == '0' && pBuf[1] == 'x')
|
||
0: 94 21 ff f0 stwu r1,-16(r1)
|
||
4: 7c 08 02 a6 mflr r0
|
||
8: 93 e1 00 0c stw r31,12(r1)
|
||
{
|
||
return 16;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
c: 7c 7f 1b 78 mr r31,r3
|
||
return 16;
|
||
}
|
||
}
|
||
}
|
||
|
||
return 10;
|
||
10: 90 01 00 14 stw r0,20(r1)
|
||
if(pBuf[0] == '0' && pBuf[1] == 'x')
|
||
{
|
||
return 16;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
14: 48 00 00 01 bl 14 <GetValueBase+0x14>
|
||
{
|
||
if(TOLOWER(pBuf[i]) >= 'a' && TOLOWER(pBuf[i]) <= 'f')
|
||
18: 2f 9f 00 00 cmpwi cr7,r31,0
|
||
{
|
||
return 16;
|
||
1c: 38 00 00 0a li r0,10
|
||
return 16;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
{
|
||
if(TOLOWER(pBuf[i]) >= 'a' && TOLOWER(pBuf[i]) <= 'f')
|
||
20: 41 9e 00 64 beq- cr7,84 <GetValueBase+0x84>
|
||
24: 89 3f 00 00 lbz r9,0(r31)
|
||
28: 2f 89 00 30 cmpwi cr7,r9,48
|
||
2c: 41 9e 00 8c beq- cr7,b8 <GetValueBase+0xb8>
|
||
30: 2f 83 00 00 cmpwi cr7,r3,0
|
||
34: 38 00 00 0a li r0,10
|
||
38: 40 9d 00 4c ble- cr7,84 <GetValueBase+0x84>
|
||
3c: 61 29 00 20 ori r9,r9,32
|
||
40: 38 00 00 10 li r0,16
|
||
44: 39 29 ff 9f addi r9,r9,-97
|
||
48: 55 29 06 3e clrlwi r9,r9,24
|
||
4c: 2b 89 00 05 cmplwi cr7,r9,5
|
||
50: 40 9d 00 34 ble- cr7,84 <GetValueBase+0x84>
|
||
if(pBuf[0] == '0' && pBuf[1] == 'x')
|
||
{
|
||
return 16;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
54: 39 20 00 00 li r9,0
|
||
58: 7c 69 03 a6 mtctr r3
|
||
return 16;
|
||
}
|
||
}
|
||
}
|
||
|
||
return 10;
|
||
5c: 48 00 00 1c b 78 <GetValueBase+0x78>
|
||
}
|
||
60: 7d 7f 48 ae lbzx r11,r31,r9
|
||
64: 61 6b 00 20 ori r11,r11,32
|
||
68: 38 0b ff 9f addi r0,r11,-97
|
||
6c: 54 00 06 3e clrlwi r0,r0,24
|
||
70: 2b 80 00 05 cmplwi cr7,r0,5
|
||
74: 40 9d 00 28 ble- cr7,9c <GetValueBase+0x9c>
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
{
|
||
if(TOLOWER(pBuf[i]) >= 'a' && TOLOWER(pBuf[i]) <= 'f')
|
||
{
|
||
return 16;
|
||
78: 39 29 00 01 addi r9,r9,1
|
||
}
|
||
}
|
||
}
|
||
|
||
return 10;
|
||
}
|
||
7c: 42 00 ff e4 bdnz+ 60 <GetValueBase+0x60>
|
||
80: 38 00 00 0a li r0,10
|
||
84: 7c 03 03 78 mr r3,r0
|
||
88: 80 01 00 14 lwz r0,20(r1)
|
||
8c: 83 e1 00 0c lwz r31,12(r1)
|
||
90: 38 21 00 10 addi r1,r1,16
|
||
int i = 0;
|
||
int strLen = strlen(pBuf);
|
||
|
||
if(pBuf)
|
||
{
|
||
if(pBuf[0] == '0' && pBuf[1] == 'x')
|
||
94: 7c 08 03 a6 mtlr r0
|
||
{
|
||
return 16;
|
||
98: 4e 80 00 20 blr
|
||
int i = 0;
|
||
int strLen = strlen(pBuf);
|
||
|
||
if(pBuf)
|
||
{
|
||
if(pBuf[0] == '0' && pBuf[1] == 'x')
|
||
9c: 38 00 00 10 li r0,16
|
||
a0: 83 e1 00 0c lwz r31,12(r1)
|
||
a4: 7c 03 03 78 mr r3,r0
|
||
PDBGFS_PRIV priv = (PDBGFS_PRIV)(PDE(inode)->data);
|
||
return single_open(file, priv->show, priv);
|
||
}
|
||
|
||
static int DbgSeqRelease(struct inode* inode, struct file* file)
|
||
{
|
||
a8: 80 01 00 14 lwz r0,20(r1)
|
||
ac: 38 21 00 10 addi r1,r1,16
|
||
b0: 7c 08 03 a6 mtlr r0
|
||
return single_release(inode, file);
|
||
b4: 4e 80 00 20 blr
|
||
}
|
||
b8: 89 7f 00 01 lbz r11,1(r31)
|
||
bc: 38 00 00 10 li r0,16
|
||
c0: 2f 8b 00 78 cmpwi cr7,r11,120
|
||
c4: 40 9e ff 6c bne+ cr7,30 <GetValueBase+0x30>
|
||
|
||
return ERR_DBGFS_UNREGISTER;
|
||
}
|
||
|
||
static int DbgSeqOpen(struct inode* inode, struct file* file)
|
||
{
|
||
c8: 4b ff ff bc b 84 <GetValueBase+0x84>
|
||
|
||
000000cc <DbgSeqRelease>:
|
||
cc: 94 21 ff f0 stwu r1,-16(r1)
|
||
d0: 7c 08 02 a6 mflr r0
|
||
PDBGFS_PRIV priv = (PDBGFS_PRIV)(PDE(inode)->data);
|
||
d4: 90 01 00 14 stw r0,20(r1)
|
||
return single_open(file, priv->show, priv);
|
||
d8: 48 00 00 01 bl d8 <DbgSeqRelease+0xc>
|
||
return ERR_DBGFS_UNREGISTER;
|
||
}
|
||
|
||
static int DbgSeqOpen(struct inode* inode, struct file* file)
|
||
{
|
||
PDBGFS_PRIV priv = (PDBGFS_PRIV)(PDE(inode)->data);
|
||
dc: 80 01 00 14 lwz r0,20(r1)
|
||
return single_open(file, priv->show, priv);
|
||
e0: 38 21 00 10 addi r1,r1,16
|
||
e4: 7c 08 03 a6 mtlr r0
|
||
}
|
||
e8: 4e 80 00 20 blr
|
||
|
||
000000ec <DbgSeqOpen>:
|
||
ec: 94 21 ff f0 stwu r1,-16(r1)
|
||
f0: 7c 08 02 a6 mflr r0
|
||
f4: 90 01 00 14 stw r0,20(r1)
|
||
|
||
return -1;
|
||
}
|
||
|
||
static int ProcessInputContent(struct seq_file* seq, PCHAR pBuf, PDBGFS_PRIV pv)
|
||
{
|
||
f8: 81 23 ff f4 lwz r9,-12(r3)
|
||
fc: 7c 83 23 78 mr r3,r4
|
||
100: 80 a9 00 3c lwz r5,60(r9)
|
||
104: 80 85 00 2c lwz r4,44(r5)
|
||
int strLen = strlen(pBuf) - 1;
|
||
108: 48 00 00 01 bl 108 <DbgSeqOpen+0x1c>
|
||
|
||
return -1;
|
||
}
|
||
|
||
static int ProcessInputContent(struct seq_file* seq, PCHAR pBuf, PDBGFS_PRIV pv)
|
||
{
|
||
10c: 80 01 00 14 lwz r0,20(r1)
|
||
110: 38 21 00 10 addi r1,r1,16
|
||
int strLen = strlen(pBuf) - 1;
|
||
CHAR tmpBuf[MAX_CMD_LEN], cmdBuf[32], paramBuf[64];
|
||
int i = 0;
|
||
BOOL bIsCmd = FALSE;
|
||
|
||
memset(tmpBuf, 0, MAX_CMD_LEN);
|
||
114: 7c 08 03 a6 mtlr r0
|
||
|
||
return -1;
|
||
}
|
||
|
||
static int ProcessInputContent(struct seq_file* seq, PCHAR pBuf, PDBGFS_PRIV pv)
|
||
{
|
||
118: 4e 80 00 20 blr
|
||
|
||
0000011c <ProcessInputContent>:
|
||
int strLen = strlen(pBuf) - 1;
|
||
11c: 94 21 ff 00 stwu r1,-256(r1)
|
||
120: 7c 08 02 a6 mflr r0
|
||
CHAR tmpBuf[MAX_CMD_LEN], cmdBuf[32], paramBuf[64];
|
||
int i = 0;
|
||
BOOL bIsCmd = FALSE;
|
||
|
||
memset(tmpBuf, 0, MAX_CMD_LEN);
|
||
124: bf 41 00 e8 stmw r26,232(r1)
|
||
128: 7c 7a 1b 78 mr r26,r3
|
||
12c: 7c 83 23 78 mr r3,r4
|
||
130: 7c 9f 23 78 mr r31,r4
|
||
memset(cmdBuf, 0, 32);
|
||
134: 90 01 01 04 stw r0,260(r1)
|
||
memset(paramBuf, 0, 64);
|
||
138: 3b a1 00 68 addi r29,r1,104
|
||
CHAR tmpBuf[MAX_CMD_LEN], cmdBuf[32], paramBuf[64];
|
||
int i = 0;
|
||
BOOL bIsCmd = FALSE;
|
||
|
||
memset(tmpBuf, 0, MAX_CMD_LEN);
|
||
memset(cmdBuf, 0, 32);
|
||
13c: 7c bb 2b 78 mr r27,r5
|
||
memset(paramBuf, 0, 64);
|
||
140: 48 00 00 01 bl 140 <ProcessInputContent+0x24>
|
||
144: 7c 7e 1b 78 mr r30,r3
|
||
CHAR tmpBuf[MAX_CMD_LEN], cmdBuf[32], paramBuf[64];
|
||
int i = 0;
|
||
BOOL bIsCmd = FALSE;
|
||
|
||
memset(tmpBuf, 0, MAX_CMD_LEN);
|
||
memset(cmdBuf, 0, 32);
|
||
148: 38 80 00 00 li r4,0
|
||
14c: 38 a0 00 80 li r5,128
|
||
150: 7f a3 eb 78 mr r3,r29
|
||
154: 48 00 00 01 bl 154 <ProcessInputContent+0x38>
|
||
158: 38 00 00 00 li r0,0
|
||
15c: 38 a0 00 40 li r5,64
|
||
160: 90 01 00 08 stw r0,8(r1)
|
||
memset(paramBuf, 0, 64);
|
||
164: 38 80 00 00 li r4,0
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
168: 38 61 00 28 addi r3,r1,40
|
||
16c: 90 01 00 0c stw r0,12(r1)
|
||
170: 90 01 00 10 stw r0,16(r1)
|
||
|
||
if(pBuf == NULL && pv == NULL)
|
||
174: 90 01 00 14 stw r0,20(r1)
|
||
178: 90 01 00 18 stw r0,24(r1)
|
||
{
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
17c: 90 01 00 1c stw r0,28(r1)
|
||
180: 90 01 00 20 stw r0,32(r1)
|
||
{
|
||
if(tmpBuf[i] == ' ')
|
||
184: 90 01 00 24 stw r0,36(r1)
|
||
188: 48 00 00 01 bl 188 <ProcessInputContent+0x6c>
|
||
18c: 7f a3 eb 78 mr r3,r29
|
||
190: 7f e4 fb 78 mr r4,r31
|
||
194: 48 00 00 01 bl 194 <ProcessInputContent+0x78>
|
||
198: 2f 9f 00 00 cmpwi cr7,r31,0
|
||
19c: 41 9e 00 c0 beq- cr7,25c <ProcessInputContent+0x140>
|
||
1a0: 37 9e ff ff addic. r28,r30,-1
|
||
1a4: 40 81 00 30 ble- 1d4 <ProcessInputContent+0xb8>
|
||
if(pBuf == NULL && pv == NULL)
|
||
{
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
1a8: 88 01 00 68 lbz r0,104(r1)
|
||
1ac: 3b c0 00 00 li r30,0
|
||
}
|
||
}
|
||
|
||
if(!bIsCmd)
|
||
{
|
||
if(strict_strtoul(pBuf, GetValueBase(pBuf), (long unsigned int*)&pv->params))
|
||
1b0: 7f 89 03 a6 mtctr r28
|
||
1b4: 2f 80 00 20 cmpwi cr7,r0,32
|
||
1b8: 40 be 00 14 bne+ cr7,1cc <ProcessInputContent+0xb0>
|
||
1bc: 48 00 00 f0 b 2ac <ProcessInputContent+0x190>
|
||
1c0: 7c 1d f0 ae lbzx r0,r29,r30
|
||
1c4: 2f 80 00 20 cmpwi cr7,r0,32
|
||
1c8: 41 9e 00 44 beq- cr7,20c <ProcessInputContent+0xf0>
|
||
1cc: 3b de 00 01 addi r30,r30,1
|
||
{
|
||
pv->ioctl(seq, cmdBuf, paramBuf);
|
||
}
|
||
}
|
||
|
||
return ERR_PARA_OUTOFRANGE;
|
||
1d0: 42 00 ff f0 bdnz+ 1c0 <ProcessInputContent+0xa4>
|
||
}
|
||
1d4: 7f e3 fb 78 mr r3,r31
|
||
1d8: 4b ff fe 29 bl 0 <GetValueBase>
|
||
1dc: 38 bb 00 20 addi r5,r27,32
|
||
1e0: 7c 64 1b 78 mr r4,r3
|
||
1e4: 7f e3 fb 78 mr r3,r31
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
{
|
||
if(tmpBuf[i] == ' ')
|
||
1e8: 48 00 00 01 bl 1e8 <ProcessInputContent+0xcc>
|
||
1ec: 2f 83 00 00 cmpwi cr7,r3,0
|
||
{
|
||
strncpy(cmdBuf, tmpBuf, i);
|
||
1f0: 40 9e 00 7c bne- cr7,26c <ProcessInputContent+0x150>
|
||
1f4: 38 60 00 01 li r3,1
|
||
1f8: 80 01 01 04 lwz r0,260(r1)
|
||
strncpy(paramBuf, &tmpBuf[i + 1], MAX(strLen - i - 1, 0));
|
||
1fc: bb 41 00 e8 lmw r26,232(r1)
|
||
200: 38 21 01 00 addi r1,r1,256
|
||
204: 7c 08 03 a6 mtlr r0
|
||
208: 4e 80 00 20 blr
|
||
20c: 7f c5 f3 78 mr r5,r30
|
||
210: 3b fe 00 01 addi r31,r30,1
|
||
return -ERR_DBGFS_WRITEOPTS;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if(pv->ioctl != NULL)
|
||
214: 7f a4 eb 78 mr r4,r29
|
||
218: 38 61 00 08 addi r3,r1,8
|
||
21c: 48 00 00 01 bl 21c <ProcessInputContent+0x100>
|
||
{
|
||
pv->ioctl(seq, cmdBuf, paramBuf);
|
||
220: 38 bc ff ff addi r5,r28,-1
|
||
224: 7c be 28 51 subf. r5,r30,r5
|
||
228: 7c a0 28 1e .long 0x7ca0281e
|
||
22c: 38 61 00 28 addi r3,r1,40
|
||
230: 7c 9d fa 14 add r4,r29,r31
|
||
234: 48 00 00 01 bl 234 <ProcessInputContent+0x118>
|
||
memset(cmdBuf, 0, 32);
|
||
memset(paramBuf, 0, 64);
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
if(pBuf == NULL && pv == NULL)
|
||
238: 80 1b 00 30 lwz r0,48(r27)
|
||
{
|
||
return ERR_PARA_OUTOFRANGE;
|
||
23c: 2f 80 00 00 cmpwi cr7,r0,0
|
||
memset(cmdBuf, 0, 32);
|
||
memset(paramBuf, 0, 64);
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
if(pBuf == NULL && pv == NULL)
|
||
240: 41 be ff b4 beq- cr7,1f4 <ProcessInputContent+0xd8>
|
||
244: 7f 43 d3 78 mr r3,r26
|
||
|
||
if(!bIsCmd)
|
||
{
|
||
if(strict_strtoul(pBuf, GetValueBase(pBuf), (long unsigned int*)&pv->params))
|
||
{
|
||
LOG_EX(LOG_Error, "strict_strtoul [%s] base %d Error\n", pBuf, GetValueBase(pBuf));
|
||
248: 38 81 00 08 addi r4,r1,8
|
||
24c: 38 a1 00 28 addi r5,r1,40
|
||
250: 7c 09 03 a6 mtctr r0
|
||
254: 4e 80 04 21 bctrl
|
||
258: 4b ff ff 9c b 1f4 <ProcessInputContent+0xd8>
|
||
25c: 2f 9b 00 00 cmpwi cr7,r27,0
|
||
260: 38 60 00 01 li r3,1
|
||
264: 40 9e ff 3c bne+ cr7,1a0 <ProcessInputContent+0x84>
|
||
268: 4b ff ff 90 b 1f8 <ProcessInputContent+0xdc>
|
||
26c: 7f e3 fb 78 mr r3,r31
|
||
270: 4b ff fd 91 bl 0 <GetValueBase>
|
||
274: 3c 80 00 00 lis r4,0
|
||
278: 3c a0 00 00 lis r5,0
|
||
27c: 3c c0 00 00 lis r6,0
|
||
return -ERR_DBGFS_WRITEOPTS;
|
||
280: 7c 69 1b 78 mr r9,r3
|
||
284: 38 84 00 00 addi r4,r4,0
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
for(i = 0; i < strLen; i++)
|
||
{
|
||
if(tmpBuf[i] == ' ')
|
||
288: 38 60 00 02 li r3,2
|
||
28c: 38 a5 00 03 addi r5,r5,3
|
||
290: 38 c6 00 00 addi r6,r6,0
|
||
294: 38 e0 00 d7 li r7,215
|
||
}
|
||
|
||
|
||
static ssize_t DgbSeqOptionsWrite(struct file* file, const char __user* userbuf,
|
||
size_t count, loff_t* data)
|
||
{
|
||
298: 7f e8 fb 78 mr r8,r31
|
||
29c: 4c c6 31 82 crclr 4*cr1+eq
|
||
char buf[64];
|
||
struct seq_file* seq = (struct seq_file*)file->private_data;
|
||
PDBGFS_PRIV pv = (PDBGFS_PRIV)seq->private;
|
||
|
||
if(count >= sizeof(buf))
|
||
2a0: 48 00 00 01 bl 2a0 <ProcessInputContent+0x184>
|
||
}
|
||
|
||
|
||
static ssize_t DgbSeqOptionsWrite(struct file* file, const char __user* userbuf,
|
||
size_t count, loff_t* data)
|
||
{
|
||
2a4: 38 60 ff fb li r3,-5
|
||
2a8: 4b ff ff 50 b 1f8 <ProcessInputContent+0xdc>
|
||
2ac: 3b e0 00 01 li r31,1
|
||
2b0: 38 a0 00 00 li r5,0
|
||
char buf[64];
|
||
struct seq_file* seq = (struct seq_file*)file->private_data;
|
||
2b4: 3b c0 00 00 li r30,0
|
||
PDBGFS_PRIV pv = (PDBGFS_PRIV)seq->private;
|
||
2b8: 4b ff ff 5c b 214 <ProcessInputContent+0xf8>
|
||
|
||
000002bc <DgbSeqOptionsWrite>:
|
||
|
||
if(count >= sizeof(buf))
|
||
2bc: 94 21 ff a0 stwu r1,-96(r1)
|
||
static inline unsigned long copy_from_user(void *to,
|
||
const void __user *from, unsigned long n)
|
||
{
|
||
unsigned long over;
|
||
|
||
if (access_ok(VERIFY_READ, from, n))
|
||
2c0: 7c 08 02 a6 mflr r0
|
||
2c4: 2b 85 00 3f cmplwi cr7,r5,63
|
||
2c8: bf 61 00 4c stmw r27,76(r1)
|
||
2cc: 7c 7d 1b 78 mr r29,r3
|
||
2d0: 90 01 00 64 stw r0,100(r1)
|
||
2d4: 7c bf 2b 78 mr r31,r5
|
||
2d8: 83 c3 00 68 lwz r30,104(r3)
|
||
2dc: 83 9e 00 38 lwz r28,56(r30)
|
||
2e0: 41 9d 01 28 bgt- cr7,408 <DgbSeqOptionsWrite+0x14c>
|
||
return __copy_tofrom_user((__force void __user *)to, from, n);
|
||
2e4: 80 02 01 ec lwz r0,492(r2)
|
||
2e8: 7f 84 00 40 cmplw cr7,r4,r0
|
||
2ec: 41 9d 00 a8 bgt- cr7,394 <DgbSeqOptionsWrite+0xd8>
|
||
LOG_EX(LOG_Error, "Input Params Error:count = %d, max size = %d\n", count,
|
||
sizeof(buf));
|
||
return -ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
if(copy_from_user(buf, userbuf, count))
|
||
2f0: 2f 85 00 00 cmpwi cr7,r5,0
|
||
2f4: 41 9e 00 14 beq- cr7,308 <DgbSeqOptionsWrite+0x4c>
|
||
{
|
||
LOG_EX(LOG_Error, "Copy Data To Kernel Error\n");
|
||
return -ERR_DBGFS_WRITEOPTS;
|
||
}
|
||
|
||
if(buf[0] == 'h' &&
|
||
2f8: 39 25 ff ff addi r9,r5,-1
|
||
2fc: 7c 04 00 50 subf r0,r4,r0
|
||
300: 7f 89 00 40 cmplw cr7,r9,r0
|
||
}
|
||
|
||
return count;
|
||
}
|
||
|
||
buf[count] = 0x00;
|
||
304: 41 9d 00 90 bgt- cr7,394 <DgbSeqOptionsWrite+0xd8>
|
||
308: 38 61 00 08 addi r3,r1,8
|
||
30c: 7f e5 fb 78 mr r5,r31
|
||
|
||
if(ProcessInputContent(seq, buf, pv) == ERR_PARA_OUTOFRANGE)
|
||
310: 48 00 00 01 bl 310 <DgbSeqOptionsWrite+0x54>
|
||
314: 2f 83 00 00 cmpwi cr7,r3,0
|
||
318: 40 9e 01 2c bne- cr7,444 <DgbSeqOptionsWrite+0x188>
|
||
31c: 88 01 00 08 lbz r0,8(r1)
|
||
320: 2f 80 00 68 cmpwi cr7,r0,104
|
||
324: 41 9e 00 a0 beq- cr7,3c4 <DgbSeqOptionsWrite+0x108>
|
||
// (strlen(pv->cmd) <= 0) ? "NA" : pv->cmd,
|
||
// pv->params, pv->params);
|
||
}
|
||
else
|
||
{
|
||
LOG_EX(LOG_Error, "Input [%s] Process Error\n", buf);
|
||
328: 7d 21 fa 14 add r9,r1,r31
|
||
32c: 38 00 00 00 li r0,0
|
||
330: 98 09 00 08 stb r0,8(r9)
|
||
334: 7f c3 f3 78 mr r3,r30
|
||
338: 38 81 00 08 addi r4,r1,8
|
||
33c: 7f 85 e3 78 mr r5,r28
|
||
340: 4b ff fd dd bl 11c <ProcessInputContent>
|
||
344: 2f 83 00 01 cmpwi cr7,r3,1
|
||
348: 41 9e 00 34 beq- cr7,37c <DgbSeqOptionsWrite+0xc0>
|
||
34c: 3c c0 00 00 lis r6,0
|
||
350: 3c 80 00 00 lis r4,0
|
||
354: 3c a0 00 00 lis r5,0
|
||
}
|
||
|
||
return count;
|
||
358: 38 c6 00 00 addi r6,r6,0
|
||
}
|
||
35c: 38 60 00 02 li r3,2
|
||
360: 38 84 00 ac addi r4,r4,172
|
||
364: 38 a5 00 03 addi r5,r5,3
|
||
368: 38 c6 00 14 addi r6,r6,20
|
||
36c: 38 e0 01 13 li r7,275
|
||
if ((unsigned long)from < TASK_SIZE) {
|
||
370: 39 01 00 08 addi r8,r1,8
|
||
374: 4c c6 31 82 crclr 4*cr1+eq
|
||
378: 48 00 00 01 bl 378 <DgbSeqOptionsWrite+0xbc>
|
||
37c: 7f e3 fb 78 mr r3,r31
|
||
380: 80 01 00 64 lwz r0,100(r1)
|
||
over = (unsigned long)from + n - TASK_SIZE;
|
||
384: bb 61 00 4c lmw r27,76(r1)
|
||
return __copy_tofrom_user((__force void __user *)to, from,
|
||
388: 38 21 00 60 addi r1,r1,96
|
||
unsigned long over;
|
||
|
||
if (access_ok(VERIFY_READ, from, n))
|
||
return __copy_tofrom_user((__force void __user *)to, from, n);
|
||
if ((unsigned long)from < TASK_SIZE) {
|
||
over = (unsigned long)from + n - TASK_SIZE;
|
||
38c: 7c 08 03 a6 mtlr r0
|
||
return __copy_tofrom_user((__force void __user *)to, from,
|
||
390: 4e 80 00 20 blr
|
||
394: 3c 00 bf ff lis r0,-16385
|
||
398: 7f e3 fb 78 mr r3,r31
|
||
39c: 60 00 ff ff ori r0,r0,65535
|
||
{
|
||
LOG_EX(LOG_Error, "Copy Data To Kernel Error\n");
|
||
return -ERR_DBGFS_WRITEOPTS;
|
||
}
|
||
|
||
if(buf[0] == 'h' &&
|
||
3a0: 7f 84 00 40 cmplw cr7,r4,r0
|
||
3a4: 41 9d ff 70 bgt+ cr7,314 <DgbSeqOptionsWrite+0x58>
|
||
3a8: 7f 64 fa 14 add r27,r4,r31
|
||
buf[1] == 'e' &&
|
||
3ac: 38 61 00 08 addi r3,r1,8
|
||
3b0: 3f 7b 40 00 addis r27,r27,16384
|
||
3b4: 7c bb f8 50 subf r5,r27,r31
|
||
buf[2] == 'l' &&
|
||
3b8: 48 00 00 01 bl 3b8 <DgbSeqOptionsWrite+0xfc>
|
||
3bc: 7c 63 da 14 add r3,r3,r27
|
||
3c0: 4b ff ff 54 b 314 <DgbSeqOptionsWrite+0x58>
|
||
buf[3] == 'p')
|
||
{
|
||
if(pv->help != NULL)
|
||
3c4: 88 01 00 09 lbz r0,9(r1)
|
||
3c8: 2f 80 00 65 cmpwi cr7,r0,101
|
||
3cc: 40 9e ff 5c bne+ cr7,328 <DgbSeqOptionsWrite+0x6c>
|
||
{
|
||
pv->help((struct seq_file*)file->private_data, pv);
|
||
3d0: 88 01 00 0a lbz r0,10(r1)
|
||
3d4: 2f 80 00 6c cmpwi cr7,r0,108
|
||
3d8: 40 9e ff 50 bne+ cr7,328 <DgbSeqOptionsWrite+0x6c>
|
||
3dc: 88 01 00 0b lbz r0,11(r1)
|
||
3e0: 2f 80 00 70 cmpwi cr7,r0,112
|
||
struct seq_file* seq = (struct seq_file*)file->private_data;
|
||
PDBGFS_PRIV pv = (PDBGFS_PRIV)seq->private;
|
||
|
||
if(count >= sizeof(buf))
|
||
{
|
||
LOG_EX(LOG_Error, "Input Params Error:count = %d, max size = %d\n", count,
|
||
3e4: 40 9e ff 44 bne+ cr7,328 <DgbSeqOptionsWrite+0x6c>
|
||
3e8: 80 1c 00 34 lwz r0,52(r28)
|
||
3ec: 2f 80 00 00 cmpwi cr7,r0,0
|
||
3f0: 41 be ff 8c beq- cr7,37c <DgbSeqOptionsWrite+0xc0>
|
||
3f4: 80 7d 00 68 lwz r3,104(r29)
|
||
3f8: 7f 84 e3 78 mr r4,r28
|
||
3fc: 7c 09 03 a6 mtctr r0
|
||
400: 4e 80 04 21 bctrl
|
||
404: 4b ff ff 78 b 37c <DgbSeqOptionsWrite+0xc0>
|
||
408: 3c c0 00 00 lis r6,0
|
||
40c: 3c 80 00 00 lis r4,0
|
||
410: 3c a0 00 00 lis r5,0
|
||
414: 38 c6 00 00 addi r6,r6,0
|
||
sizeof(buf));
|
||
return -ERR_PARA_OUTOFRANGE;
|
||
418: 38 60 00 02 li r3,2
|
||
41c: 38 84 00 44 addi r4,r4,68
|
||
}
|
||
|
||
if(copy_from_user(buf, userbuf, count))
|
||
{
|
||
LOG_EX(LOG_Error, "Copy Data To Kernel Error\n");
|
||
420: 38 a5 00 03 addi r5,r5,3
|
||
424: 38 c6 00 14 addi r6,r6,20
|
||
428: 38 e0 00 f1 li r7,241
|
||
42c: 7f e8 fb 78 mr r8,r31
|
||
430: 39 20 00 40 li r9,64
|
||
434: 4c c6 31 82 crclr 4*cr1+eq
|
||
438: 48 00 00 01 bl 438 <DgbSeqOptionsWrite+0x17c>
|
||
43c: 38 60 ff ff li r3,-1
|
||
440: 4b ff ff 40 b 380 <DgbSeqOptionsWrite+0xc4>
|
||
444: 3c c0 00 00 lis r6,0
|
||
448: 3c 80 00 00 lis r4,0
|
||
return -ERR_DBGFS_WRITEOPTS;
|
||
44c: 3c a0 00 00 lis r5,0
|
||
450: 38 c6 00 00 addi r6,r6,0
|
||
static const struct file_operations g_DbgSeq_fops;
|
||
|
||
static struct proc_dir_entry* g_DebugProcFS;
|
||
|
||
INT32 InitDebugInfoProc(const char* proc_dir_name)
|
||
{
|
||
454: 38 60 00 02 li r3,2
|
||
458: 38 84 00 80 addi r4,r4,128
|
||
if(proc_dir_name)
|
||
45c: 38 a5 00 03 addi r5,r5,3
|
||
static const struct file_operations g_DbgSeq_fops;
|
||
|
||
static struct proc_dir_entry* g_DebugProcFS;
|
||
|
||
INT32 InitDebugInfoProc(const char* proc_dir_name)
|
||
{
|
||
460: 38 c6 00 14 addi r6,r6,20
|
||
{
|
||
return ERR_DBGFS_NO_ERROR;
|
||
}
|
||
}
|
||
|
||
return ERR_DBGFS_INIT;
|
||
464: 38 e0 00 f7 li r7,247
|
||
|
||
static struct proc_dir_entry* g_DebugProcFS;
|
||
|
||
INT32 InitDebugInfoProc(const char* proc_dir_name)
|
||
{
|
||
if(proc_dir_name)
|
||
468: 4c c6 31 82 crclr 4*cr1+eq
|
||
{
|
||
g_DebugProcFS = proc_mkdir(proc_dir_name, NULL);
|
||
46c: 48 00 00 01 bl 46c <DgbSeqOptionsWrite+0x1b0>
|
||
470: 38 60 ff fb li r3,-5
|
||
474: 4b ff ff 0c b 380 <DgbSeqOptionsWrite+0xc4>
|
||
|
||
00000478 <InitDebugInfoProc>:
|
||
478: 94 21 ff f0 stwu r1,-16(r1)
|
||
|
||
if(g_DebugProcFS != NULL)
|
||
47c: 7c 08 02 a6 mflr r0
|
||
{
|
||
return ERR_DBGFS_NO_ERROR;
|
||
}
|
||
}
|
||
|
||
return ERR_DBGFS_INIT;
|
||
480: 2f 83 00 00 cmpwi cr7,r3,0
|
||
484: 90 01 00 14 stw r0,20(r1)
|
||
488: 38 00 00 02 li r0,2
|
||
}
|
||
48c: 41 9e 00 24 beq- cr7,4b0 <InitDebugInfoProc+0x38>
|
||
490: 38 80 00 00 li r4,0
|
||
494: 48 00 00 01 bl 494 <InitDebugInfoProc+0x1c>
|
||
498: 3d 20 00 00 lis r9,0
|
||
49c: 90 69 00 00 stw r3,0(r9)
|
||
|
||
void DeInitDebugInfoProc(void)
|
||
{
|
||
4a0: 2f 83 00 00 cmpwi cr7,r3,0
|
||
4a4: 38 00 00 00 li r0,0
|
||
remove_proc_entry(g_DebugProcFS->name, NULL);
|
||
4a8: 39 20 00 02 li r9,2
|
||
4ac: 7c 09 07 9e .long 0x7c09079e
|
||
4b0: 7c 03 03 78 mr r3,r0
|
||
|
||
return ERR_DBGFS_INIT;
|
||
}
|
||
|
||
void DeInitDebugInfoProc(void)
|
||
{
|
||
4b4: 80 01 00 14 lwz r0,20(r1)
|
||
remove_proc_entry(g_DebugProcFS->name, NULL);
|
||
4b8: 38 21 00 10 addi r1,r1,16
|
||
4bc: 7c 08 03 a6 mtlr r0
|
||
}
|
||
4c0: 4e 80 00 20 blr
|
||
|
||
000004c4 <DeInitDebugInfoProc>:
|
||
4c4: 94 21 ff f0 stwu r1,-16(r1)
|
||
4c8: 7c 08 02 a6 mflr r0
|
||
4cc: 3d 20 00 00 lis r9,0
|
||
|
||
INT32 DebugFsRegister(PDBGFS_PRIV pv)
|
||
{
|
||
4d0: 38 80 00 00 li r4,0
|
||
4d4: 81 29 00 00 lwz r9,0(r9)
|
||
4d8: 90 01 00 14 stw r0,20(r1)
|
||
struct proc_dir_entry* file;
|
||
|
||
if(pv == NULL)
|
||
4dc: 80 69 00 08 lwz r3,8(r9)
|
||
{
|
||
remove_proc_entry(g_DebugProcFS->name, NULL);
|
||
}
|
||
|
||
INT32 DebugFsRegister(PDBGFS_PRIV pv)
|
||
{
|
||
4e0: 48 00 00 01 bl 4e0 <DeInitDebugInfoProc+0x1c>
|
||
struct proc_dir_entry* file;
|
||
|
||
if(pv == NULL)
|
||
{
|
||
return ERR_PARA_OUTOFRANGE;
|
||
4e4: 80 01 00 14 lwz r0,20(r1)
|
||
|
||
INT32 DebugFsRegister(PDBGFS_PRIV pv)
|
||
{
|
||
struct proc_dir_entry* file;
|
||
|
||
if(pv == NULL)
|
||
4e8: 38 21 00 10 addi r1,r1,16
|
||
{
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
file = create_proc_entry(pv->name, 0, g_DebugProcFS);
|
||
4ec: 7c 08 03 a6 mtlr r0
|
||
4f0: 4e 80 00 20 blr
|
||
|
||
000004f4 <DebugFsRegister>:
|
||
4f4: 94 21 ff f0 stwu r1,-16(r1)
|
||
4f8: 7c 08 02 a6 mflr r0
|
||
|
||
if(!file)
|
||
{
|
||
return ERR_DBGFS_REGISTER;
|
||
4fc: 93 e1 00 0c stw r31,12(r1)
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
file = create_proc_entry(pv->name, 0, g_DebugProcFS);
|
||
|
||
if(!file)
|
||
500: 7c 7f 1b 79 mr. r31,r3
|
||
504: 90 01 00 14 stw r0,20(r1)
|
||
{
|
||
return ERR_DBGFS_REGISTER;
|
||
}
|
||
else
|
||
{
|
||
file->proc_fops = &g_DbgSeq_fops;
|
||
508: 38 00 00 01 li r0,1
|
||
file->data = pv;
|
||
50c: 41 82 00 38 beq- 544 <DebugFsRegister+0x50>
|
||
{
|
||
return ERR_DBGFS_REGISTER;
|
||
}
|
||
else
|
||
{
|
||
file->proc_fops = &g_DbgSeq_fops;
|
||
510: 3d 20 00 00 lis r9,0
|
||
514: 38 80 00 00 li r4,0
|
||
518: 80 a9 00 00 lwz r5,0(r9)
|
||
file->data = pv;
|
||
}
|
||
|
||
return ERR_DBGFS_NO_ERROR;
|
||
51c: 48 00 00 01 bl 51c <DebugFsRegister+0x28>
|
||
}
|
||
520: 38 00 00 03 li r0,3
|
||
524: 2c 03 00 00 cmpwi r3,0
|
||
528: 41 82 00 1c beq- 544 <DebugFsRegister+0x50>
|
||
52c: 3d 20 00 00 lis r9,0
|
||
530: 93 e3 00 3c stw r31,60(r3)
|
||
534: 39 29 00 00 addi r9,r9,0
|
||
|
||
INT32 DebugFsUnRegister(PDBGFS_PRIV pv)
|
||
{
|
||
538: 38 09 00 28 addi r0,r9,40
|
||
53c: 90 03 00 2c stw r0,44(r3)
|
||
540: 38 00 00 00 li r0,0
|
||
{
|
||
remove_proc_entry(pv->name, g_DebugProcFS);
|
||
return ERR_DBGFS_NO_ERROR;
|
||
}
|
||
|
||
return ERR_DBGFS_UNREGISTER;
|
||
544: 7c 03 03 78 mr r3,r0
|
||
}
|
||
|
||
INT32 DebugFsUnRegister(PDBGFS_PRIV pv)
|
||
{
|
||
|
||
if(strlen(pv->name) > 0)
|
||
548: 80 01 00 14 lwz r0,20(r1)
|
||
54c: 83 e1 00 0c lwz r31,12(r1)
|
||
550: 38 21 00 10 addi r1,r1,16
|
||
{
|
||
remove_proc_entry(pv->name, g_DebugProcFS);
|
||
554: 7c 08 03 a6 mtlr r0
|
||
558: 4e 80 00 20 blr
|
||
|
||
0000055c <DebugFsUnRegister>:
|
||
55c: 94 21 ff f0 stwu r1,-16(r1)
|
||
return ERR_DBGFS_NO_ERROR;
|
||
560: 7c 08 02 a6 mflr r0
|
||
}
|
||
|
||
return ERR_DBGFS_UNREGISTER;
|
||
}
|
||
564: 90 01 00 14 stw r0,20(r1)
|
||
568: 38 00 00 04 li r0,4
|
||
56c: 89 23 00 00 lbz r9,0(r3)
|
||
570: 2f 89 00 00 cmpwi cr7,r9,0
|
||
574: 41 be 00 14 beq+ cr7,588 <DebugFsUnRegister+0x2c>
|
||
|
||
return 10;
|
||
}
|
||
|
||
int GetStringParamValue(PCHAR pBuf, int index, PCHAR pValue, UINT32 maxBytes)
|
||
{
|
||
578: 3d 20 00 00 lis r9,0
|
||
57c: 80 89 00 00 lwz r4,0(r9)
|
||
580: 48 00 00 01 bl 580 <DebugFsUnRegister+0x24>
|
||
584: 38 00 00 00 li r0,0
|
||
CHAR tmpBuf[128];
|
||
char* token;
|
||
char* s = tmpBuf;
|
||
588: 7c 03 03 78 mr r3,r0
|
||
int paramIndex = 0;
|
||
|
||
if(pBuf == NULL || index < 0 || pValue == NULL)
|
||
58c: 80 01 00 14 lwz r0,20(r1)
|
||
|
||
return 10;
|
||
}
|
||
|
||
int GetStringParamValue(PCHAR pBuf, int index, PCHAR pValue, UINT32 maxBytes)
|
||
{
|
||
590: 38 21 00 10 addi r1,r1,16
|
||
594: 7c 08 03 a6 mtlr r0
|
||
598: 4e 80 00 20 blr
|
||
|
||
0000059c <GetStringParamValue>:
|
||
59c: 94 21 ff 50 stwu r1,-176(r1)
|
||
CHAR tmpBuf[128];
|
||
char* token;
|
||
char* s = tmpBuf;
|
||
5a0: 7d 80 00 26 mfcr r12
|
||
int paramIndex = 0;
|
||
|
||
if(pBuf == NULL || index < 0 || pValue == NULL)
|
||
{
|
||
return ERR_PARA_OUTOFRANGE;
|
||
5a4: 7c 08 02 a6 mflr r0
|
||
CHAR tmpBuf[128];
|
||
char* token;
|
||
char* s = tmpBuf;
|
||
int paramIndex = 0;
|
||
|
||
if(pBuf == NULL || index < 0 || pValue == NULL)
|
||
5a8: bf 81 00 a0 stmw r28,160(r1)
|
||
5ac: 3b a1 00 0c addi r29,r1,12
|
||
5b0: 7c 7c 1b 79 mr. r28,r3
|
||
5b4: 90 01 00 b4 stw r0,180(r1)
|
||
5b8: 91 81 00 9c stw r12,156(r1)
|
||
{
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
memset(pValue, 0, maxBytes);
|
||
5bc: 7c 9f 23 78 mr r31,r4
|
||
5c0: 7c be 2b 78 mr r30,r5
|
||
5c4: 93 a1 00 08 stw r29,8(r1)
|
||
5c8: 38 60 00 01 li r3,1
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
5cc: 41 82 00 80 beq- 64c <GetStringParamValue+0xb0>
|
||
|
||
for(token = strsep(&s, " ");
|
||
5d0: 2e 04 00 00 cmpwi cr4,r4,0
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
memset(pValue, 0, maxBytes);
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
5d4: 41 90 00 78 blt- cr4,64c <GetStringParamValue+0xb0>
|
||
|
||
for(token = strsep(&s, " ");
|
||
5d8: 2f 85 00 00 cmpwi cr7,r5,0
|
||
return ERR_PARA_OUTOFRANGE;
|
||
}
|
||
|
||
memset(pValue, 0, maxBytes);
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
5dc: 41 9e 00 70 beq- cr7,64c <GetStringParamValue+0xb0>
|
||
|
||
for(token = strsep(&s, " ");
|
||
5e0: 7c c5 33 78 mr r5,r6
|
||
5e4: 38 80 00 00 li r4,0
|
||
5e8: 7f c3 f3 78 mr r3,r30
|
||
5ec: 48 00 00 01 bl 5ec <GetStringParamValue+0x50>
|
||
5f0: 7f 84 e3 78 mr r4,r28
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
5f4: 3f 80 00 00 lis r28,0
|
||
5f8: 7f a3 eb 78 mr r3,r29
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
for(token = strsep(&s, " ");
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
5fc: 3b 9c 00 d4 addi r28,r28,212
|
||
600: 48 00 00 01 bl 600 <GetStringParamValue+0x64>
|
||
604: 7f 84 e3 78 mr r4,r28
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
{
|
||
paramIndex += 1;
|
||
608: 38 61 00 08 addi r3,r1,8
|
||
|
||
memset(pValue, 0, maxBytes);
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
for(token = strsep(&s, " ");
|
||
60c: 48 00 00 01 bl 60c <GetStringParamValue+0x70>
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
610: 7c 64 1b 79 mr. r4,r3
|
||
|
||
memset(pValue, 0, maxBytes);
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
for(token = strsep(&s, " ");
|
||
614: 41 82 00 54 beq- 668 <GetStringParamValue+0xcc>
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
618: 41 92 00 28 beq- cr4,640 <GetStringParamValue+0xa4>
|
||
{
|
||
paramIndex += 1;
|
||
continue;
|
||
}
|
||
|
||
strcpy(pValue, token);
|
||
61c: 3b a0 00 00 li r29,0
|
||
620: 7f 84 e3 78 mr r4,r28
|
||
|
||
return ERR_DBGFS_NO_ERROR;
|
||
624: 38 61 00 08 addi r3,r1,8
|
||
}
|
||
}
|
||
|
||
return ERR_DBGFS_WRITEOPTS;
|
||
}
|
||
628: 48 00 00 01 bl 628 <GetStringParamValue+0x8c>
|
||
62c: 3b bd 00 01 addi r29,r29,1
|
||
630: 7c 64 1b 79 mr. r4,r3
|
||
634: 7f 9f e8 00 cmpw cr7,r31,r29
|
||
638: 41 82 00 30 beq- 668 <GetStringParamValue+0xcc>
|
||
63c: 40 9e ff e4 bne+ cr7,620 <GetStringParamValue+0x84>
|
||
640: 7f c3 f3 78 mr r3,r30
|
||
644: 48 00 00 01 bl 644 <GetStringParamValue+0xa8>
|
||
|
||
return ERR_DBGFS_NO_ERROR;
|
||
}
|
||
}
|
||
|
||
return ERR_DBGFS_WRITEOPTS;
|
||
648: 38 60 00 00 li r3,0
|
||
}
|
||
64c: 80 01 00 b4 lwz r0,180(r1)
|
||
650: 81 81 00 9c lwz r12,156(r1)
|
||
654: bb 81 00 a0 lmw r28,160(r1)
|
||
658: 38 21 00 b0 addi r1,r1,176
|
||
65c: 7c 08 03 a6 mtlr r0
|
||
660: 7d 80 81 20 mtcrf 8,r12
|
||
|
||
|
||
int GetIntParamValue(PCHAR pBuf, int index)
|
||
{
|
||
664: 4e 80 00 20 blr
|
||
668: 80 01 00 b4 lwz r0,180(r1)
|
||
66c: 38 60 00 05 li r3,5
|
||
CHAR tmpBuf[128];
|
||
char* token;
|
||
char* s = tmpBuf;
|
||
int paramIndex = 0;
|
||
int paramValue = -1;
|
||
670: 81 81 00 9c lwz r12,156(r1)
|
||
|
||
if(pBuf == NULL || index < 0)
|
||
674: bb 81 00 a0 lmw r28,160(r1)
|
||
return ERR_DBGFS_WRITEOPTS;
|
||
}
|
||
|
||
|
||
int GetIntParamValue(PCHAR pBuf, int index)
|
||
{
|
||
678: 38 21 00 b0 addi r1,r1,176
|
||
CHAR tmpBuf[128];
|
||
char* token;
|
||
char* s = tmpBuf;
|
||
67c: 7c 08 03 a6 mtlr r0
|
||
return ERR_DBGFS_WRITEOPTS;
|
||
}
|
||
|
||
|
||
int GetIntParamValue(PCHAR pBuf, int index)
|
||
{
|
||
680: 7d 80 81 20 mtcrf 8,r12
|
||
684: 4e 80 00 20 blr
|
||
|
||
00000688 <GetIntParamValue>:
|
||
688: 94 21 ff 50 stwu r1,-176(r1)
|
||
int paramIndex = 0;
|
||
int paramValue = -1;
|
||
|
||
if(pBuf == NULL || index < 0)
|
||
{
|
||
return -1;
|
||
68c: 7c 08 02 a6 mflr r0
|
||
|
||
int GetIntParamValue(PCHAR pBuf, int index)
|
||
{
|
||
CHAR tmpBuf[128];
|
||
char* token;
|
||
char* s = tmpBuf;
|
||
690: 7d 80 00 26 mfcr r12
|
||
int paramIndex = 0;
|
||
int paramValue = -1;
|
||
694: 39 20 ff ff li r9,-1
|
||
|
||
if(pBuf == NULL || index < 0)
|
||
698: 2c 03 00 00 cmpwi r3,0
|
||
}
|
||
}
|
||
}
|
||
|
||
return -1;
|
||
}
|
||
69c: 90 01 00 b4 stw r0,180(r1)
|
||
6a0: 38 01 00 10 addi r0,r1,16
|
||
6a4: bf 81 00 a0 stmw r28,160(r1)
|
||
6a8: 7c 9d 23 78 mr r29,r4
|
||
6ac: 91 81 00 9c stw r12,156(r1)
|
||
6b0: 3b c0 ff ff li r30,-1
|
||
6b4: 90 01 00 08 stw r0,8(r1)
|
||
6b8: 91 21 00 0c stw r9,12(r1)
|
||
char* token;
|
||
char* s = tmpBuf;
|
||
int paramIndex = 0;
|
||
int paramValue = -1;
|
||
|
||
if(pBuf == NULL || index < 0)
|
||
6bc: 40 82 00 24 bne- 6e0 <GetIntParamValue+0x58>
|
||
6c0: 80 01 00 b4 lwz r0,180(r1)
|
||
return -1;
|
||
}
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
for(token = strsep(&s, " ");
|
||
6c4: 7f c3 f3 78 mr r3,r30
|
||
if(pBuf == NULL || index < 0)
|
||
{
|
||
return -1;
|
||
}
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
6c8: 81 81 00 9c lwz r12,156(r1)
|
||
|
||
for(token = strsep(&s, " ");
|
||
6cc: bb 81 00 a0 lmw r28,160(r1)
|
||
if(pBuf == NULL || index < 0)
|
||
{
|
||
return -1;
|
||
}
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
6d0: 38 21 00 b0 addi r1,r1,176
|
||
6d4: 7c 08 03 a6 mtlr r0
|
||
|
||
for(token = strsep(&s, " ");
|
||
6d8: 7d 80 81 20 mtcrf 8,r12
|
||
6dc: 4e 80 00 20 blr
|
||
6e0: 2e 04 00 00 cmpwi cr4,r4,0
|
||
6e4: 41 90 ff dc blt+ cr4,6c0 <GetIntParamValue+0x38>
|
||
6e8: 3f 80 00 00 lis r28,0
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
6ec: 7c 64 1b 78 mr r4,r3
|
||
{
|
||
paramIndex += 1;
|
||
continue;
|
||
}
|
||
|
||
if(strict_strtol(token, GetValueBase(token), (long*)¶mValue))
|
||
6f0: 3b 9c 00 d4 addi r28,r28,212
|
||
6f4: 7c 03 03 78 mr r3,r0
|
||
6f8: 48 00 00 01 bl 6f8 <GetIntParamValue+0x70>
|
||
6fc: 38 61 00 08 addi r3,r1,8
|
||
700: 7f 84 e3 78 mr r4,r28
|
||
704: 48 00 00 01 bl 704 <GetIntParamValue+0x7c>
|
||
708: 7c 7f 1b 79 mr. r31,r3
|
||
70c: 41 a2 ff b4 beq- 6c0 <GetIntParamValue+0x38>
|
||
LOG_EX(LOG_Error, "strict_strtol [%s] Error\n", token);
|
||
return -1;
|
||
}
|
||
else
|
||
{
|
||
return paramValue;
|
||
710: 40 92 00 2c bne- cr4,73c <GetIntParamValue+0xb4>
|
||
714: 7f e3 fb 78 mr r3,r31
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
718: 4b ff f8 e9 bl 0 <GetValueBase>
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
for(token = strsep(&s, " ");
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
71c: 38 a1 00 0c addi r5,r1,12
|
||
720: 7c 64 1b 78 mr r4,r3
|
||
724: 7f e3 fb 78 mr r3,r31
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
{
|
||
paramIndex += 1;
|
||
728: 48 00 00 01 bl 728 <GetIntParamValue+0xa0>
|
||
return -1;
|
||
}
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
for(token = strsep(&s, " ");
|
||
72c: 2f 83 00 00 cmpwi cr7,r3,0
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
730: 40 9e 00 34 bne- cr7,764 <GetIntParamValue+0xdc>
|
||
return -1;
|
||
}
|
||
|
||
strcpy(tmpBuf, pBuf);
|
||
|
||
for(token = strsep(&s, " ");
|
||
734: 83 c1 00 0c lwz r30,12(r1)
|
||
token != NULL;
|
||
token = strsep(&s, " "))
|
||
{
|
||
if(token != NULL)
|
||
{
|
||
if(index != paramIndex)
|
||
738: 4b ff ff 88 b 6c0 <GetIntParamValue+0x38>
|
||
73c: 3b c0 00 00 li r30,0
|
||
continue;
|
||
}
|
||
|
||
if(strict_strtol(token, GetValueBase(token), (long*)¶mValue))
|
||
{
|
||
LOG_EX(LOG_Error, "strict_strtol [%s] Error\n", token);
|
||
740: 38 61 00 08 addi r3,r1,8
|
||
744: 7f 84 e3 78 mr r4,r28
|
||
748: 48 00 00 01 bl 748 <GetIntParamValue+0xc0>
|
||
74c: 3b de 00 01 addi r30,r30,1
|
||
750: 7c 7f 1b 79 mr. r31,r3
|
||
754: 7f 9d f0 00 cmpw cr7,r29,r30
|
||
758: 41 82 00 3c beq- 794 <GetIntParamValue+0x10c>
|
||
75c: 41 9e ff b8 beq+ cr7,714 <GetIntParamValue+0x8c>
|
||
760: 4b ff ff e0 b 740 <GetIntParamValue+0xb8>
|
||
764: 3c c0 00 00 lis r6,0
|
||
768: 3c 80 00 00 lis r4,0
|
||
76c: 3c a0 00 00 lis r5,0
|
||
return -1;
|
||
770: 38 c6 00 00 addi r6,r6,0
|
||
774: 38 60 00 02 li r3,2
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_RFC2833TestShow(struct seq_file* seq, void* token)
|
||
{
|
||
778: 38 84 00 d8 addi r4,r4,216
|
||
77c: 38 a5 00 03 addi r5,r5,3
|
||
unsigned int ch = g_DbgFSConfig[2].params;
|
||
780: 38 c6 00 90 addi r6,r6,144
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
784: 38 e0 00 a9 li r7,169
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_RFC2833TestShow(struct seq_file* seq, void* token)
|
||
{
|
||
unsigned int ch = g_DbgFSConfig[2].params;
|
||
788: 7f e8 fb 78 mr r8,r31
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_RFC2833TestShow(struct seq_file* seq, void* token)
|
||
{
|
||
78c: 4c c6 31 82 crclr 4*cr1+eq
|
||
790: 48 00 00 01 bl 790 <GetIntParamValue+0x108>
|
||
794: 3b c0 ff ff li r30,-1
|
||
unsigned int ch = g_DbgFSConfig[2].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
798: 4b ff ff 28 b 6c0 <GetIntParamValue+0x38>
|
||
|
||
0000079c <DbgFS_RFC2833TestShow>:
|
||
seq_printf(seq, "Recv RFC2833 : %d\n", g_RcvDTMF);
|
||
seq_printf(seq, "Recv RFC2833 Error : %d\n", g_RcvDTMFError);
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
79c: 94 21 ff f0 stwu r1,-16(r1)
|
||
7a0: 7c 08 02 a6 mflr r0
|
||
7a4: 3d 20 00 00 lis r9,0
|
||
7a8: 2f 84 00 01 cmpwi cr7,r4,1
|
||
7ac: 80 a9 00 90 lwz r5,144(r9)
|
||
7b0: bf c1 00 08 stmw r30,8(r1)
|
||
{
|
||
unsigned int ch = g_DbgFSConfig[2].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "RTP Ch %d RFC2833 Test:\n", ch);
|
||
7b4: 7c 7f 1b 78 mr r31,r3
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
seq_printf(seq, "Recv RFC2833 : %d\n", g_RcvDTMF);
|
||
7b8: 90 01 00 14 stw r0,20(r1)
|
||
{
|
||
unsigned int ch = g_DbgFSConfig[2].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "RTP Ch %d RFC2833 Test:\n", ch);
|
||
7bc: 41 9e 00 1c beq- cr7,7d8 <DbgFS_RFC2833TestShow+0x3c>
|
||
7c0: 80 01 00 14 lwz r0,20(r1)
|
||
7c4: 38 60 00 00 li r3,0
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
7c8: bb c1 00 08 lmw r30,8(r1)
|
||
7cc: 38 21 00 10 addi r1,r1,16
|
||
7d0: 7c 08 03 a6 mtlr r0
|
||
7d4: 4e 80 00 20 blr
|
||
7d8: 3c 80 00 00 lis r4,0
|
||
seq_printf(seq, "Recv RFC2833 : %d\n", g_RcvDTMF);
|
||
7dc: 3f c0 00 00 lis r30,0
|
||
7e0: 38 84 00 00 addi r4,r4,0
|
||
7e4: 4c c6 31 82 crclr 4*cr1+eq
|
||
7e8: 48 00 00 01 bl 7e8 <DbgFS_RFC2833TestShow+0x4c>
|
||
7ec: 3c 80 00 00 lis r4,0
|
||
7f0: 38 84 00 1c addi r4,r4,28
|
||
7f4: 7f e3 fb 78 mr r3,r31
|
||
seq_printf(seq, "Recv RFC2833 Error : %d\n", g_RcvDTMFError);
|
||
7f8: 4c c6 31 82 crclr 4*cr1+eq
|
||
7fc: 48 00 00 01 bl 7fc <DbgFS_RFC2833TestShow+0x60>
|
||
800: 80 be 00 00 lwz r5,0(r30)
|
||
804: 3c 80 00 00 lis r4,0
|
||
808: 3b de 00 00 addi r30,r30,0
|
||
80c: 38 84 00 54 addi r4,r4,84
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
810: 7f e3 fb 78 mr r3,r31
|
||
814: 4c c6 31 82 crclr 4*cr1+eq
|
||
818: 48 00 00 01 bl 818 <DbgFS_RFC2833TestShow+0x7c>
|
||
81c: 80 be 00 04 lwz r5,4(r30)
|
||
820: 3c 80 00 00 lis r4,0
|
||
824: 7f e3 fb 78 mr r3,r31
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_FPGAInfoShow(struct seq_file* seq, void* token)
|
||
{
|
||
828: 38 84 00 78 addi r4,r4,120
|
||
82c: 4c c6 31 82 crclr 4*cr1+eq
|
||
if(token == SEQ_START_TOKEN)
|
||
830: 48 00 00 01 bl 830 <DbgFS_RFC2833TestShow+0x94>
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_FPGAInfoShow(struct seq_file* seq, void* token)
|
||
{
|
||
834: 80 01 00 14 lwz r0,20(r1)
|
||
838: 38 60 00 00 li r3,0
|
||
83c: bb c1 00 08 lmw r30,8(r1)
|
||
if(token == SEQ_START_TOKEN)
|
||
840: 38 21 00 10 addi r1,r1,16
|
||
seq_printf(seq, "Slot : 0x%04X\n", fpga_GetSlot());
|
||
seq_printf(seq, "Chassis Serial : 0x%08X\n", fpga_GetChassisSn());
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
844: 7c 08 03 a6 mtlr r0
|
||
848: 4e 80 00 20 blr
|
||
|
||
0000084c <DbgFS_FPGAInfoShow>:
|
||
84c: 94 21 ff f0 stwu r1,-16(r1)
|
||
850: 7c 08 02 a6 mflr r0
|
||
854: 2f 84 00 01 cmpwi cr7,r4,1
|
||
858: 93 e1 00 0c stw r31,12(r1)
|
||
|
||
static int DbgFS_FPGAInfoShow(struct seq_file* seq, void* token)
|
||
{
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "CardType : 0x%04X\n", fpga_GetCardType());
|
||
85c: 7c 7f 1b 78 mr r31,r3
|
||
860: 90 01 00 14 stw r0,20(r1)
|
||
864: 41 9e 00 1c beq- cr7,880 <DbgFS_FPGAInfoShow+0x34>
|
||
868: 80 01 00 14 lwz r0,20(r1)
|
||
86c: 38 60 00 00 li r3,0
|
||
870: 83 e1 00 0c lwz r31,12(r1)
|
||
874: 38 21 00 10 addi r1,r1,16
|
||
seq_printf(seq, "FPGA Version : 0x%04X\n", fpga_GetFPGAVer());
|
||
878: 7c 08 03 a6 mtlr r0
|
||
87c: 4e 80 00 20 blr
|
||
880: 48 00 00 01 bl 880 <DbgFS_FPGAInfoShow+0x34>
|
||
884: 3c 80 00 00 lis r4,0
|
||
888: 7c 65 1b 78 mr r5,r3
|
||
88c: 38 84 00 9c addi r4,r4,156
|
||
890: 7f e3 fb 78 mr r3,r31
|
||
seq_printf(seq, "User Id : 0x%08X\n", fpga_GetUserId());
|
||
894: 4c c6 31 82 crclr 4*cr1+eq
|
||
898: 48 00 00 01 bl 898 <DbgFS_FPGAInfoShow+0x4c>
|
||
89c: 48 00 00 01 bl 89c <DbgFS_FPGAInfoShow+0x50>
|
||
8a0: 3c 80 00 00 lis r4,0
|
||
8a4: 7c 65 1b 78 mr r5,r3
|
||
8a8: 38 84 00 c0 addi r4,r4,192
|
||
8ac: 7f e3 fb 78 mr r3,r31
|
||
seq_printf(seq, "Slot : 0x%04X\n", fpga_GetSlot());
|
||
8b0: 4c c6 31 82 crclr 4*cr1+eq
|
||
8b4: 48 00 00 01 bl 8b4 <DbgFS_FPGAInfoShow+0x68>
|
||
8b8: 48 00 00 01 bl 8b8 <DbgFS_FPGAInfoShow+0x6c>
|
||
8bc: 3c 80 00 00 lis r4,0
|
||
8c0: 7c 65 1b 78 mr r5,r3
|
||
8c4: 38 84 00 e4 addi r4,r4,228
|
||
8c8: 7f e3 fb 78 mr r3,r31
|
||
seq_printf(seq, "Chassis Serial : 0x%08X\n", fpga_GetChassisSn());
|
||
8cc: 4c c6 31 82 crclr 4*cr1+eq
|
||
8d0: 48 00 00 01 bl 8d0 <DbgFS_FPGAInfoShow+0x84>
|
||
8d4: 48 00 00 01 bl 8d4 <DbgFS_FPGAInfoShow+0x88>
|
||
8d8: 3c 80 00 00 lis r4,0
|
||
8dc: 7c 65 1b 78 mr r5,r3
|
||
8e0: 38 84 01 08 addi r4,r4,264
|
||
8e4: 7f e3 fb 78 mr r3,r31
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
8e8: 4c c6 31 82 crclr 4*cr1+eq
|
||
8ec: 48 00 00 01 bl 8ec <DbgFS_FPGAInfoShow+0xa0>
|
||
8f0: 48 00 00 01 bl 8f0 <DbgFS_FPGAInfoShow+0xa4>
|
||
8f4: 3c 80 00 00 lis r4,0
|
||
8f8: 7c 65 1b 78 mr r5,r3
|
||
8fc: 38 84 01 2c addi r4,r4,300
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_LedCtrlShow(struct seq_file* seq, void* token)
|
||
{
|
||
900: 7f e3 fb 78 mr r3,r31
|
||
904: 4c c6 31 82 crclr 4*cr1+eq
|
||
unsigned int opt = g_DbgFSConfig[5].params;
|
||
908: 48 00 00 01 bl 908 <DbgFS_FPGAInfoShow+0xbc>
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
90c: 80 01 00 14 lwz r0,20(r1)
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_LedCtrlShow(struct seq_file* seq, void* token)
|
||
{
|
||
unsigned int opt = g_DbgFSConfig[5].params;
|
||
910: 38 60 00 00 li r3,0
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_LedCtrlShow(struct seq_file* seq, void* token)
|
||
{
|
||
914: 83 e1 00 0c lwz r31,12(r1)
|
||
unsigned int opt = g_DbgFSConfig[5].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
918: 38 21 00 10 addi r1,r1,16
|
||
|
||
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
91c: 7c 08 03 a6 mtlr r0
|
||
920: 4e 80 00 20 blr
|
||
|
||
00000924 <DbgFS_LedCtrlShow>:
|
||
924: 94 21 ff f0 stwu r1,-16(r1)
|
||
928: 7c 08 02 a6 mflr r0
|
||
92c: 3d 20 00 00 lis r9,0
|
||
{
|
||
unsigned int opt = g_DbgFSConfig[5].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
switch(opt)
|
||
930: 2f 84 00 01 cmpwi cr7,r4,1
|
||
934: 80 a9 01 38 lwz r5,312(r9)
|
||
938: 90 01 00 14 stw r0,20(r1)
|
||
93c: 41 9e 00 18 beq- cr7,954 <DbgFS_LedCtrlShow+0x30>
|
||
{
|
||
case 0:
|
||
seq_printf(seq, "RUN Led On......\n");
|
||
940: 80 01 00 14 lwz r0,20(r1)
|
||
944: 38 60 00 00 li r3,0
|
||
948: 38 21 00 10 addi r1,r1,16
|
||
94c: 7c 08 03 a6 mtlr r0
|
||
fpga_GreenLedCtrl(1);
|
||
950: 4e 80 00 20 blr
|
||
954: 2f 85 00 01 cmpwi cr7,r5,1
|
||
break;
|
||
958: 41 9e 00 4c beq- cr7,9a4 <DbgFS_LedCtrlShow+0x80>
|
||
{
|
||
unsigned int opt = g_DbgFSConfig[5].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
switch(opt)
|
||
95c: 2b 85 00 01 cmplwi cr7,r5,1
|
||
960: 40 9c 00 20 bge- cr7,980 <DbgFS_LedCtrlShow+0x5c>
|
||
964: 3c 80 00 00 lis r4,0
|
||
968: 38 84 01 50 addi r4,r4,336
|
||
case 3:
|
||
seq_printf(seq, "ALM Led On......\n");
|
||
fpga_RedLedCtrl(0);
|
||
break;
|
||
default:
|
||
seq_printf(seq, "Unknown Ctrl Code %d\n", opt);
|
||
96c: 4c c6 31 82 crclr 4*cr1+eq
|
||
970: 48 00 00 01 bl 970 <DbgFS_LedCtrlShow+0x4c>
|
||
974: 38 60 00 01 li r3,1
|
||
978: 48 00 00 01 bl 978 <DbgFS_LedCtrlShow+0x54>
|
||
break;
|
||
97c: 4b ff ff c4 b 940 <DbgFS_LedCtrlShow+0x1c>
|
||
case 0:
|
||
seq_printf(seq, "RUN Led On......\n");
|
||
fpga_GreenLedCtrl(1);
|
||
break;
|
||
case 1:
|
||
seq_printf(seq, "RUN Led Off......\n");
|
||
980: 2f 85 00 02 cmpwi cr7,r5,2
|
||
984: 41 9e 00 58 beq- cr7,9dc <DbgFS_LedCtrlShow+0xb8>
|
||
988: 2f 85 00 03 cmpwi cr7,r5,3
|
||
98c: 41 9e 00 34 beq- cr7,9c0 <DbgFS_LedCtrlShow+0x9c>
|
||
fpga_GreenLedCtrl(0);
|
||
990: 3c 80 00 00 lis r4,0
|
||
994: 38 84 01 8c addi r4,r4,396
|
||
break;
|
||
998: 4c c6 31 82 crclr 4*cr1+eq
|
||
case 2:
|
||
seq_printf(seq, "ALM Led On......\n");
|
||
fpga_RedLedCtrl(1);
|
||
break;
|
||
case 3:
|
||
seq_printf(seq, "ALM Led On......\n");
|
||
99c: 48 00 00 01 bl 99c <DbgFS_LedCtrlShow+0x78>
|
||
9a0: 4b ff ff a0 b 940 <DbgFS_LedCtrlShow+0x1c>
|
||
9a4: 3c 80 00 00 lis r4,0
|
||
9a8: 38 84 01 64 addi r4,r4,356
|
||
fpga_RedLedCtrl(0);
|
||
9ac: 4c c6 31 82 crclr 4*cr1+eq
|
||
9b0: 48 00 00 01 bl 9b0 <DbgFS_LedCtrlShow+0x8c>
|
||
break;
|
||
9b4: 38 60 00 00 li r3,0
|
||
case 1:
|
||
seq_printf(seq, "RUN Led Off......\n");
|
||
fpga_GreenLedCtrl(0);
|
||
break;
|
||
case 2:
|
||
seq_printf(seq, "ALM Led On......\n");
|
||
9b8: 48 00 00 01 bl 9b8 <DbgFS_LedCtrlShow+0x94>
|
||
9bc: 4b ff ff 84 b 940 <DbgFS_LedCtrlShow+0x1c>
|
||
9c0: 3c 80 00 00 lis r4,0
|
||
9c4: 38 84 01 78 addi r4,r4,376
|
||
fpga_RedLedCtrl(1);
|
||
9c8: 4c c6 31 82 crclr 4*cr1+eq
|
||
9cc: 48 00 00 01 bl 9cc <DbgFS_LedCtrlShow+0xa8>
|
||
break;
|
||
9d0: 38 60 00 00 li r3,0
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_IrqInfoShow(struct seq_file* seq, void* token)
|
||
{
|
||
9d4: 48 00 00 01 bl 9d4 <DbgFS_LedCtrlShow+0xb0>
|
||
9d8: 4b ff ff 68 b 940 <DbgFS_LedCtrlShow+0x1c>
|
||
if(token == SEQ_START_TOKEN)
|
||
9dc: 3c 80 00 00 lis r4,0
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_IrqInfoShow(struct seq_file* seq, void* token)
|
||
{
|
||
9e0: 38 84 01 78 addi r4,r4,376
|
||
9e4: 4c c6 31 82 crclr 4*cr1+eq
|
||
9e8: 48 00 00 01 bl 9e8 <DbgFS_LedCtrlShow+0xc4>
|
||
if(token == SEQ_START_TOKEN)
|
||
9ec: 38 60 00 01 li r3,1
|
||
|
||
seq_printf(seq, "1ms IRQ Total Count: %d(0x%08X)\n", irqCnt, irqCnt);
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
9f0: 48 00 00 01 bl 9f0 <DbgFS_LedCtrlShow+0xcc>
|
||
9f4: 4b ff ff 4c b 940 <DbgFS_LedCtrlShow+0x1c>
|
||
|
||
000009f8 <DbgFS_IrqInfoShow>:
|
||
9f8: 94 21 ff f0 stwu r1,-16(r1)
|
||
9fc: 7c 08 02 a6 mflr r0
|
||
a00: 2f 84 00 01 cmpwi cr7,r4,1
|
||
a04: 93 e1 00 0c stw r31,12(r1)
|
||
|
||
static int DbgFS_IrqInfoShow(struct seq_file* seq, void* token)
|
||
{
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
unsigned int irqCnt = FPGA_Get1msIrqCnt();
|
||
a08: 7c 7f 1b 78 mr r31,r3
|
||
|
||
seq_printf(seq, "1ms IRQ Total Count: %d(0x%08X)\n", irqCnt, irqCnt);
|
||
a0c: 90 01 00 14 stw r0,20(r1)
|
||
|
||
static int DbgFS_IrqInfoShow(struct seq_file* seq, void* token)
|
||
{
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
unsigned int irqCnt = FPGA_Get1msIrqCnt();
|
||
a10: 41 9e 00 1c beq- cr7,a2c <DbgFS_IrqInfoShow+0x34>
|
||
|
||
seq_printf(seq, "1ms IRQ Total Count: %d(0x%08X)\n", irqCnt, irqCnt);
|
||
a14: 80 01 00 14 lwz r0,20(r1)
|
||
a18: 38 60 00 00 li r3,0
|
||
a1c: 83 e1 00 0c lwz r31,12(r1)
|
||
a20: 38 21 00 10 addi r1,r1,16
|
||
a24: 7c 08 03 a6 mtlr r0
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
a28: 4e 80 00 20 blr
|
||
a2c: 48 00 00 01 bl a2c <DbgFS_IrqInfoShow+0x34>
|
||
a30: 3c 80 00 00 lis r4,0
|
||
a34: 7c 65 1b 78 mr r5,r3
|
||
a38: 38 84 01 a4 addi r4,r4,420
|
||
a3c: 7f e3 fb 78 mr r3,r31
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_UnLinkShow(struct seq_file* seq, void* token)
|
||
{
|
||
a40: 7c a6 2b 78 mr r6,r5
|
||
a44: 4c c6 31 82 crclr 4*cr1+eq
|
||
unsigned int ch = g_DbgFSConfig[1].params;
|
||
a48: 48 00 00 01 bl a48 <DbgFS_IrqInfoShow+0x50>
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
a4c: 80 01 00 14 lwz r0,20(r1)
|
||
|
||
return 0;
|
||
}
|
||
|
||
static int DbgFS_UnLinkShow(struct seq_file* seq, void* token)
|
||
{
|
||
a50: 38 60 00 00 li r3,0
|
||
a54: 83 e1 00 0c lwz r31,12(r1)
|
||
a58: 38 21 00 10 addi r1,r1,16
|
||
unsigned int ch = g_DbgFSConfig[1].params;
|
||
a5c: 7c 08 03 a6 mtlr r0
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
a60: 4e 80 00 20 blr
|
||
|
||
00000a64 <DbgFS_UnLinkShow>:
|
||
eth_unlink(ch, PORT_TYPE_B2B);
|
||
eth_unlink(ch, PORT_TYPE_SIPRTP);
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
a64: 94 21 ff f0 stwu r1,-16(r1)
|
||
a68: 7c 08 02 a6 mflr r0
|
||
a6c: 3d 20 00 00 lis r9,0
|
||
a70: 2f 84 00 01 cmpwi cr7,r4,1
|
||
a74: bf c1 00 08 stmw r30,8(r1)
|
||
a78: 7c 7e 1b 78 mr r30,r3
|
||
{
|
||
unsigned int ch = g_DbgFSConfig[1].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "UnLink RTP Ch %d:\n", ch);
|
||
a7c: 90 01 00 14 stw r0,20(r1)
|
||
a80: 83 e9 00 58 lwz r31,88(r9)
|
||
a84: 41 9e 00 1c beq- cr7,aa0 <DbgFS_UnLinkShow+0x3c>
|
||
a88: 80 01 00 14 lwz r0,20(r1)
|
||
a8c: 38 60 00 00 li r3,0
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
a90: bb c1 00 08 lmw r30,8(r1)
|
||
a94: 38 21 00 10 addi r1,r1,16
|
||
a98: 7c 08 03 a6 mtlr r0
|
||
a9c: 4e 80 00 20 blr
|
||
aa0: 3c 80 00 00 lis r4,0
|
||
|
||
eth_unlink(ch, PORT_TYPE_B2B);
|
||
aa4: 7f e5 fb 78 mr r5,r31
|
||
aa8: 38 84 01 c8 addi r4,r4,456
|
||
aac: 4c c6 31 82 crclr 4*cr1+eq
|
||
eth_unlink(ch, PORT_TYPE_SIPRTP);
|
||
ab0: 48 00 00 01 bl ab0 <DbgFS_UnLinkShow+0x4c>
|
||
ab4: 3c 80 00 00 lis r4,0
|
||
ab8: 38 84 00 1c addi r4,r4,28
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
abc: 7f c3 f3 78 mr r3,r30
|
||
ac0: 4c c6 31 82 crclr 4*cr1+eq
|
||
ac4: 48 00 00 01 bl ac4 <DbgFS_UnLinkShow+0x60>
|
||
ac8: 7f e3 fb 78 mr r3,r31
|
||
acc: 38 80 00 06 li r4,6
|
||
ad0: 48 00 00 01 bl ad0 <DbgFS_UnLinkShow+0x6c>
|
||
return 0;
|
||
}
|
||
|
||
|
||
static int DbgFS_LinkShow(struct seq_file* seq, void* token)
|
||
{
|
||
ad4: 7f e3 fb 78 mr r3,r31
|
||
ad8: 38 80 00 08 li r4,8
|
||
unsigned int ch = g_DbgFSConfig[0].params;
|
||
adc: 48 00 00 01 bl adc <DbgFS_UnLinkShow+0x78>
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
ae0: 80 01 00 14 lwz r0,20(r1)
|
||
return 0;
|
||
}
|
||
|
||
|
||
static int DbgFS_LinkShow(struct seq_file* seq, void* token)
|
||
{
|
||
ae4: 38 60 00 00 li r3,0
|
||
ae8: bb c1 00 08 lmw r30,8(r1)
|
||
aec: 38 21 00 10 addi r1,r1,16
|
||
unsigned int ch = g_DbgFSConfig[0].params;
|
||
af0: 7c 08 03 a6 mtlr r0
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
af4: 4e 80 00 20 blr
|
||
|
||
00000af8 <DbgFS_LinkShow>:
|
||
eth_sip_link(ch, sip_ipaddr, sip_port + ch, 0);
|
||
eth_link(ch, PORT_TYPE_B2B, spbx_ipaddr, spbx_port + (ch * 3));
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
af8: 94 21 ff f0 stwu r1,-16(r1)
|
||
afc: 7c 08 02 a6 mflr r0
|
||
b00: 3d 20 00 00 lis r9,0
|
||
b04: 2f 84 00 01 cmpwi cr7,r4,1
|
||
b08: bf c1 00 08 stmw r30,8(r1)
|
||
b0c: 7c 7e 1b 78 mr r30,r3
|
||
{
|
||
unsigned int ch = g_DbgFSConfig[0].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "Link RTP Ch %d:\n", ch);
|
||
b10: 90 01 00 14 stw r0,20(r1)
|
||
b14: 83 e9 00 20 lwz r31,32(r9)
|
||
b18: 41 9e 00 1c beq- cr7,b34 <DbgFS_LinkShow+0x3c>
|
||
b1c: 80 01 00 14 lwz r0,20(r1)
|
||
b20: 38 60 00 00 li r3,0
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
b24: bb c1 00 08 lmw r30,8(r1)
|
||
b28: 38 21 00 10 addi r1,r1,16
|
||
|
||
eth_sip_link(ch, sip_ipaddr, sip_port + ch, 0);
|
||
b2c: 7c 08 03 a6 mtlr r0
|
||
unsigned int ch = g_DbgFSConfig[0].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "Link RTP Ch %d:\n", ch);
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
b30: 4e 80 00 20 blr
|
||
|
||
eth_sip_link(ch, sip_ipaddr, sip_port + ch, 0);
|
||
b34: 3c 80 00 00 lis r4,0
|
||
unsigned int ch = g_DbgFSConfig[0].params;
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "Link RTP Ch %d:\n", ch);
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
b38: 7f e5 fb 78 mr r5,r31
|
||
b3c: 38 84 01 dc addi r4,r4,476
|
||
|
||
eth_sip_link(ch, sip_ipaddr, sip_port + ch, 0);
|
||
b40: 4c c6 31 82 crclr 4*cr1+eq
|
||
b44: 48 00 00 01 bl b44 <DbgFS_LinkShow+0x4c>
|
||
b48: 7f c3 f3 78 mr r3,r30
|
||
b4c: 3c 80 00 00 lis r4,0
|
||
b50: 3f c0 00 00 lis r30,0
|
||
b54: 38 84 00 1c addi r4,r4,28
|
||
eth_link(ch, PORT_TYPE_B2B, spbx_ipaddr, spbx_port + (ch * 3));
|
||
b58: 3b de 00 00 addi r30,r30,0
|
||
b5c: 4c c6 31 82 crclr 4*cr1+eq
|
||
b60: 48 00 00 01 bl b60 <DbgFS_LinkShow+0x68>
|
||
b64: 80 9e 00 08 lwz r4,8(r30)
|
||
b68: 38 bf 27 10 addi r5,r31,10000
|
||
b6c: 54 a5 04 3e clrlwi r5,r5,16
|
||
b70: 38 c0 00 00 li r6,0
|
||
b74: 7f e3 fb 78 mr r3,r31
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
b78: 48 00 00 01 bl b78 <DbgFS_LinkShow+0x80>
|
||
b7c: 57 e6 08 3c rlwinm r6,r31,1,0,30
|
||
b80: 7c c6 fa 14 add r6,r6,r31
|
||
b84: 80 be 00 0c lwz r5,12(r30)
|
||
b88: 38 c6 17 70 addi r6,r6,6000
|
||
b8c: 7f e3 fb 78 mr r3,r31
|
||
eth_link(i, PORT_TYPE_B2B, spbx_ipaddr, spbx_port + (i * 3));
|
||
}
|
||
}
|
||
|
||
int Rfc2833TaskThreadProc(void* data)
|
||
{
|
||
b90: 38 80 00 06 li r4,6
|
||
b94: 54 c6 04 3e clrlwi r6,r6,16
|
||
b98: 48 00 00 01 bl b98 <DbgFS_LinkShow+0xa0>
|
||
int value = -1;
|
||
char dtmf = -1;
|
||
char next_dtmf = -1;
|
||
while(g_pWorkTask != NULL && g_WorkRcvRFC2833 && !kthread_should_stop())
|
||
b9c: 80 01 00 14 lwz r0,20(r1)
|
||
ba0: 38 60 00 00 li r3,0
|
||
eth_link(i, PORT_TYPE_B2B, spbx_ipaddr, spbx_port + (i * 3));
|
||
}
|
||
}
|
||
|
||
int Rfc2833TaskThreadProc(void* data)
|
||
{
|
||
ba4: bb c1 00 08 lmw r30,8(r1)
|
||
int value = -1;
|
||
char dtmf = -1;
|
||
char next_dtmf = -1;
|
||
while(g_pWorkTask != NULL && g_WorkRcvRFC2833 && !kthread_should_stop())
|
||
ba8: 38 21 00 10 addi r1,r1,16
|
||
bac: 7c 08 03 a6 mtlr r0
|
||
bb0: 4e 80 00 20 blr
|
||
|
||
00000bb4 <Rfc2833TaskThreadProc>:
|
||
bb4: 94 21 ff e0 stwu r1,-32(r1)
|
||
bb8: 7c 08 02 a6 mflr r0
|
||
bbc: bf a1 00 14 stmw r29,20(r1)
|
||
bc0: 3f c0 00 00 lis r30,0
|
||
bc4: 3b de 00 00 addi r30,r30,0
|
||
bc8: 90 01 00 24 stw r0,36(r1)
|
||
bcc: 80 1e 00 10 lwz r0,16(r30)
|
||
{
|
||
udelay(10);
|
||
}
|
||
}
|
||
|
||
schedule();
|
||
bd0: 2f 80 00 00 cmpwi cr7,r0,0
|
||
int Rfc2833TaskThreadProc(void* data)
|
||
{
|
||
int value = -1;
|
||
char dtmf = -1;
|
||
char next_dtmf = -1;
|
||
while(g_pWorkTask != NULL && g_WorkRcvRFC2833 && !kthread_should_stop())
|
||
bd4: 41 9e 00 c8 beq- cr7,c9c <Rfc2833TaskThreadProc+0xe8>
|
||
bd8: 3f e0 00 00 lis r31,0
|
||
bdc: 3b a0 00 ff li r29,255
|
||
be0: 3b ff 00 00 addi r31,r31,0
|
||
be4: 80 1f 01 88 lwz r0,392(r31)
|
||
be8: 2f 80 00 00 cmpwi cr7,r0,0
|
||
bec: 40 be 00 24 bne+ cr7,c10 <Rfc2833TaskThreadProc+0x5c>
|
||
bf0: 48 00 00 ac b c9c <Rfc2833TaskThreadProc+0xe8>
|
||
bf4: 48 00 00 01 bl bf4 <Rfc2833TaskThreadProc+0x40>
|
||
{
|
||
if(g_WorkRcvRFC2833)
|
||
bf8: 80 1e 00 10 lwz r0,16(r30)
|
||
bfc: 2f 80 00 00 cmpwi cr7,r0,0
|
||
c00: 41 9e 00 9c beq- cr7,c9c <Rfc2833TaskThreadProc+0xe8>
|
||
{
|
||
value = sip_recv_dtmf(0);
|
||
c04: 80 1f 01 88 lwz r0,392(r31)
|
||
|
||
dtmf = value & 0xFF;
|
||
c08: 2f 80 00 00 cmpwi cr7,r0,0
|
||
|
||
if(dtmf != 255)
|
||
c0c: 41 9e 00 90 beq- cr7,c9c <Rfc2833TaskThreadProc+0xe8>
|
||
c10: 48 00 00 01 bl c10 <Rfc2833TaskThreadProc+0x5c>
|
||
{
|
||
g_RcvDTMF++;
|
||
c14: 2f 83 00 00 cmpwi cr7,r3,0
|
||
|
||
if(dtmf >= '0' && dtmf < '9')
|
||
c18: 40 9e 00 84 bne- cr7,c9c <Rfc2833TaskThreadProc+0xe8>
|
||
c1c: 80 1f 01 88 lwz r0,392(r31)
|
||
c20: 2f 80 00 00 cmpwi cr7,r0,0
|
||
|
||
dtmf = value & 0xFF;
|
||
|
||
if(dtmf != 255)
|
||
{
|
||
g_RcvDTMF++;
|
||
c24: 41 9e ff d0 beq+ cr7,bf4 <Rfc2833TaskThreadProc+0x40>
|
||
c28: 48 00 00 01 bl c28 <Rfc2833TaskThreadProc+0x74>
|
||
|
||
if(dtmf >= '0' && dtmf < '9')
|
||
c2c: 54 63 06 3e clrlwi r3,r3,24
|
||
{
|
||
next_dtmf = dtmf + 1;
|
||
c30: 2f 83 00 ff cmpwi cr7,r3,255
|
||
c34: 41 9e 00 50 beq- cr7,c84 <Rfc2833TaskThreadProc+0xd0>
|
||
c38: 81 7e 00 00 lwz r11,0(r30)
|
||
else if(dtmf == '#')
|
||
{
|
||
next_dtmf = '0';
|
||
}
|
||
|
||
if(g_ChkDTMF == -1)
|
||
c3c: 39 23 ff d0 addi r9,r3,-48
|
||
c40: 55 29 06 3e clrlwi r9,r9,24
|
||
c44: 2b 89 00 08 cmplwi cr7,r9,8
|
||
{
|
||
g_ChkDTMF = next_dtmf;
|
||
}
|
||
else
|
||
{
|
||
if(dtmf != g_ChkDTMF)
|
||
c48: 38 0b 00 01 addi r0,r11,1
|
||
c4c: 90 1e 00 00 stw r0,0(r30)
|
||
{
|
||
g_RcvDTMFError++;
|
||
c50: 41 9d 00 54 bgt- cr7,ca4 <Rfc2833TaskThreadProc+0xf0>
|
||
c54: 3b a3 00 01 addi r29,r3,1
|
||
c58: 57 bd 06 3e clrlwi r29,r29,24
|
||
}
|
||
|
||
g_ChkDTMF = next_dtmf;
|
||
c5c: 7f a9 eb 78 mr r9,r29
|
||
|
||
udelay(10);
|
||
}
|
||
else
|
||
{
|
||
udelay(10);
|
||
c60: 80 1f 01 8c lwz r0,396(r31)
|
||
c64: 2f 80 ff ff cmpwi cr7,r0,-1
|
||
}
|
||
}
|
||
|
||
schedule();
|
||
c68: 41 9e 00 18 beq- cr7,c80 <Rfc2833TaskThreadProc+0xcc>
|
||
int Rfc2833TaskThreadProc(void* data)
|
||
{
|
||
int value = -1;
|
||
char dtmf = -1;
|
||
char next_dtmf = -1;
|
||
while(g_pWorkTask != NULL && g_WorkRcvRFC2833 && !kthread_should_stop())
|
||
c6c: 7f 80 18 00 cmpw cr7,r0,r3
|
||
c70: 41 9e 00 10 beq- cr7,c80 <Rfc2833TaskThreadProc+0xcc>
|
||
c74: 81 7e 00 04 lwz r11,4(r30)
|
||
}
|
||
|
||
schedule();
|
||
}
|
||
|
||
do_exit(0);
|
||
c78: 38 0b 00 01 addi r0,r11,1
|
||
c7c: 90 1e 00 04 stw r0,4(r30)
|
||
|
||
if(dtmf >= '0' && dtmf < '9')
|
||
{
|
||
next_dtmf = dtmf + 1;
|
||
}
|
||
else if(dtmf == '9')
|
||
c80: 91 3f 01 8c stw r9,396(r31)
|
||
c84: 38 60 00 0a li r3,10
|
||
{
|
||
next_dtmf = '*';
|
||
}
|
||
else if(dtmf == '*')
|
||
c88: 48 00 00 01 bl c88 <Rfc2833TaskThreadProc+0xd4>
|
||
c8c: 48 00 00 01 bl c8c <Rfc2833TaskThreadProc+0xd8>
|
||
{
|
||
next_dtmf = '#';
|
||
}
|
||
else if(dtmf == '#')
|
||
c90: 80 1e 00 10 lwz r0,16(r30)
|
||
c94: 2f 80 00 00 cmpwi cr7,r0,0
|
||
c98: 40 9e ff 6c bne+ cr7,c04 <Rfc2833TaskThreadProc+0x50>
|
||
c9c: 38 60 00 00 li r3,0
|
||
ca0: 48 00 00 01 bl ca0 <Rfc2833TaskThreadProc+0xec>
|
||
|
||
if(dtmf >= '0' && dtmf < '9')
|
||
{
|
||
next_dtmf = dtmf + 1;
|
||
}
|
||
else if(dtmf == '9')
|
||
ca4: 2f 83 00 39 cmpwi cr7,r3,57
|
||
{
|
||
next_dtmf = '*';
|
||
ca8: 41 9e 00 20 beq- cr7,cc8 <Rfc2833TaskThreadProc+0x114>
|
||
cac: 2f 83 00 2a cmpwi cr7,r3,42
|
||
}
|
||
else if(dtmf == '*')
|
||
cb0: 41 9e 00 24 beq- cr7,cd4 <Rfc2833TaskThreadProc+0x120>
|
||
{
|
||
next_dtmf = '#';
|
||
cb4: 39 20 00 30 li r9,48
|
||
cb8: 2f 83 00 23 cmpwi cr7,r3,35
|
||
|
||
#if 1
|
||
static char* g_IpString[64];
|
||
|
||
char* get_ip_string(int ipaddr)
|
||
{
|
||
cbc: 7f a9 ef 9e .long 0x7fa9ef9e
|
||
cc0: 7f a9 eb 78 mr r9,r29
|
||
sprintf(g_IpString, "%d.%d.%d.%d",
|
||
cc4: 4b ff ff 9c b c60 <Rfc2833TaskThreadProc+0xac>
|
||
|
||
#if 1
|
||
static char* g_IpString[64];
|
||
|
||
char* get_ip_string(int ipaddr)
|
||
{
|
||
cc8: 39 20 00 2a li r9,42
|
||
sprintf(g_IpString, "%d.%d.%d.%d",
|
||
ccc: 3b a0 00 2a li r29,42
|
||
|
||
#if 1
|
||
static char* g_IpString[64];
|
||
|
||
char* get_ip_string(int ipaddr)
|
||
{
|
||
cd0: 4b ff ff 90 b c60 <Rfc2833TaskThreadProc+0xac>
|
||
sprintf(g_IpString, "%d.%d.%d.%d",
|
||
cd4: 39 20 00 23 li r9,35
|
||
cd8: 3b a0 00 23 li r29,35
|
||
cdc: 4b ff ff 84 b c60 <Rfc2833TaskThreadProc+0xac>
|
||
|
||
00000ce0 <get_ip_string>:
|
||
ce0: 94 21 ff f0 stwu r1,-16(r1)
|
||
|
||
#if 1
|
||
static char* g_IpString[64];
|
||
|
||
char* get_ip_string(int ipaddr)
|
||
{
|
||
ce4: 7c 68 1b 78 mr r8,r3
|
||
sprintf(g_IpString, "%d.%d.%d.%d",
|
||
ce8: 3c 80 00 00 lis r4,0
|
||
cec: 7c 08 02 a6 mflr r0
|
||
cf0: 55 05 46 3e rlwinm r5,r8,8,24,31
|
||
cf4: 93 e1 00 0c stw r31,12(r1)
|
||
cf8: 3f e0 00 00 lis r31,0
|
||
cfc: 3b ff 00 00 addi r31,r31,0
|
||
(ipaddr >> 16) & 0xFF,
|
||
(ipaddr >> 8) & 0xFF,
|
||
ipaddr & 0xFF);
|
||
|
||
return g_IpString;
|
||
}
|
||
d00: 55 06 86 3e rlwinm r6,r8,16,24,31
|
||
d04: 3b ff 00 14 addi r31,r31,20
|
||
d08: 90 01 00 14 stw r0,20(r1)
|
||
d0c: 7f e3 fb 78 mr r3,r31
|
||
d10: 55 07 c6 3e rlwinm r7,r8,24,24,31
|
||
d14: 38 84 01 f0 addi r4,r4,496
|
||
}
|
||
|
||
#endif
|
||
|
||
static int DbgFS_ArpTestShow(struct seq_file* seq, void* token)
|
||
{
|
||
d18: 55 08 06 3e clrlwi r8,r8,24
|
||
d1c: 4c c6 31 82 crclr 4*cr1+eq
|
||
d20: 48 00 00 01 bl d20 <get_ip_string+0x40>
|
||
d24: 80 01 00 14 lwz r0,20(r1)
|
||
// unsigned int ch = g_DbgFSConfig[3].params;
|
||
unsigned char haddr[24];
|
||
__be32 ipaddr = in_aton("192.168.0.60");
|
||
d28: 7f e3 fb 78 mr r3,r31
|
||
}
|
||
|
||
#endif
|
||
|
||
static int DbgFS_ArpTestShow(struct seq_file* seq, void* token)
|
||
{
|
||
d2c: 83 e1 00 0c lwz r31,12(r1)
|
||
// unsigned int ch = g_DbgFSConfig[3].params;
|
||
unsigned char haddr[24];
|
||
__be32 ipaddr = in_aton("192.168.0.60");
|
||
d30: 38 21 00 10 addi r1,r1,16
|
||
}
|
||
|
||
#endif
|
||
|
||
static int DbgFS_ArpTestShow(struct seq_file* seq, void* token)
|
||
{
|
||
d34: 7c 08 03 a6 mtlr r0
|
||
// unsigned int ch = g_DbgFSConfig[3].params;
|
||
unsigned char haddr[24];
|
||
__be32 ipaddr = in_aton("192.168.0.60");
|
||
d38: 4e 80 00 20 blr
|
||
|
||
00000d3c <DbgFS_ArpTestShow>:
|
||
|
||
memset(haddr, 0, 24);
|
||
d3c: 94 21 ff c0 stwu r1,-64(r1)
|
||
d40: 7c 08 02 a6 mflr r0
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
d44: bf 41 00 28 stmw r26,40(r1)
|
||
|
||
static int DbgFS_ArpTestShow(struct seq_file* seq, void* token)
|
||
{
|
||
// unsigned int ch = g_DbgFSConfig[3].params;
|
||
unsigned char haddr[24];
|
||
__be32 ipaddr = in_aton("192.168.0.60");
|
||
d48: 7c 7e 1b 78 mr r30,r3
|
||
|
||
memset(haddr, 0, 24);
|
||
d4c: 3c 60 00 00 lis r3,0
|
||
d50: 7c 9d 23 78 mr r29,r4
|
||
d54: 38 63 01 fc addi r3,r3,508
|
||
d58: 90 01 00 44 stw r0,68(r1)
|
||
d5c: 48 00 00 01 bl d5c <DbgFS_ArpTestShow+0x20>
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
d60: 38 00 00 00 li r0,0
|
||
6, false);
|
||
#endif
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
d64: 90 01 00 0c stw r0,12(r1)
|
||
d68: 2f 9d 00 01 cmpwi cr7,r29,1
|
||
d6c: 7c 7f 1b 78 mr r31,r3
|
||
d70: 90 01 00 10 stw r0,16(r1)
|
||
d74: 90 01 00 14 stw r0,20(r1)
|
||
d78: 90 01 00 18 stw r0,24(r1)
|
||
|
||
memset(haddr, 0, 24);
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "Get Mac From Arp Table Test\n");
|
||
d7c: 90 01 00 1c stw r0,28(r1)
|
||
d80: 90 01 00 20 stw r0,32(r1)
|
||
d84: 41 9e 00 1c beq- cr7,da0 <DbgFS_ArpTestShow+0x64>
|
||
}
|
||
|
||
static inline struct neighbour *
|
||
__neigh_lookup(struct neigh_table *tbl, const void *pkey, struct net_device *dev, int creat)
|
||
{
|
||
struct neighbour *n = neigh_lookup(tbl, pkey, dev);
|
||
d88: 80 01 00 44 lwz r0,68(r1)
|
||
d8c: 38 60 00 00 li r3,0
|
||
d90: bb 41 00 28 lmw r26,40(r1)
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
d94: 38 21 00 40 addi r1,r1,64
|
||
d98: 7c 08 03 a6 mtlr r0
|
||
d9c: 4e 80 00 20 blr
|
||
}
|
||
//memset(haddr, 0xFF, ETH_ALEN);
|
||
|
||
if(id == 4 || id == 3)
|
||
{
|
||
printk("eth %d ipaddr %s arp call by %d\n",
|
||
da0: 3c 80 00 00 lis r4,0
|
||
memset(haddr, 0, 24);
|
||
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "Get Mac From Arp Table Test\n");
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
da4: 7f c3 f3 78 mr r3,r30
|
||
da8: 38 84 02 0c addi r4,r4,524
|
||
|
||
printk("++++++++ get ip 0x%08X MacAddress\n", ipaddr);
|
||
dac: 3f a0 00 00 lis r29,0
|
||
db0: 4c c6 31 82 crclr 4*cr1+eq
|
||
db4: 48 00 00 01 bl db4 <DbgFS_ArpTestShow+0x78>
|
||
db8: 3c 80 00 00 lis r4,0
|
||
dbc: 38 84 00 1c addi r4,r4,28
|
||
dc0: 7f c3 f3 78 mr r3,r30
|
||
{
|
||
dev = dev_get_by_name(&init_net, "eth0");
|
||
}
|
||
else if(ethId == 2)
|
||
{
|
||
dev = dev_get_by_name(&init_net, "eth2");
|
||
dc4: 7c 3e 0b 78 mr r30,r1
|
||
dc8: 4c c6 31 82 crclr 4*cr1+eq
|
||
if(token == SEQ_START_TOKEN)
|
||
{
|
||
seq_printf(seq, "Get Mac From Arp Table Test\n");
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
|
||
printk("++++++++ get ip 0x%08X MacAddress\n", ipaddr);
|
||
dcc: 48 00 00 01 bl dcc <DbgFS_ArpTestShow+0x90>
|
||
{
|
||
dev = dev_get_by_name(&init_net, "eth0");
|
||
}
|
||
else if(ethId == 2)
|
||
{
|
||
dev = dev_get_by_name(&init_net, "eth2");
|
||
dd0: 3c 60 00 00 lis r3,0
|
||
dd4: 7f e4 fb 78 mr r4,r31
|
||
dd8: 38 63 02 2c addi r3,r3,556
|
||
}
|
||
// ipaddr = htonl(ipaddr);
|
||
|
||
if(id == 4 || id == 3)
|
||
{
|
||
printk("ethId = %d, ipaddr = 0x%08X\n", ethId, ipaddr);
|
||
ddc: 3b bd 00 00 addi r29,r29,0
|
||
{
|
||
dev = dev_get_by_name(&init_net, "eth0");
|
||
}
|
||
else if(ethId == 2)
|
||
{
|
||
dev = dev_get_by_name(&init_net, "eth2");
|
||
de0: 4c c6 31 82 crclr 4*cr1+eq
|
||
}
|
||
// ipaddr = htonl(ipaddr);
|
||
|
||
if(id == 4 || id == 3)
|
||
{
|
||
printk("ethId = %d, ipaddr = 0x%08X\n", ethId, ipaddr);
|
||
de4: 48 00 00 01 bl de4 <DbgFS_ArpTestShow+0xa8>
|
||
de8: 3c 80 00 00 lis r4,0
|
||
dec: 3c 60 00 00 lis r3,0
|
||
df0: 93 e1 00 08 stw r31,8(r1)
|
||
df4: 38 84 02 50 addi r4,r4,592
|
||
}
|
||
//memset(haddr, 0xFF, ETH_ALEN);
|
||
|
||
if(id == 4 || id == 3)
|
||
{
|
||
printk("eth %d ipaddr %s arp call by %d\n",
|
||
df8: 38 63 00 00 addi r3,r3,0
|
||
dfc: 48 00 00 01 bl dfc <DbgFS_ArpTestShow+0xc0>
|
||
e00: 80 a1 00 08 lwz r5,8(r1)
|
||
e04: 7c 7a 1b 78 mr r26,r3
|
||
e08: 3c 60 00 00 lis r3,0
|
||
e0c: 38 80 00 02 li r4,2
|
||
e10: 38 63 02 58 addi r3,r3,600
|
||
e14: 4c c6 31 82 crclr 4*cr1+eq
|
||
e18: 48 00 00 01 bl e18 <DbgFS_ArpTestShow+0xdc>
|
||
e1c: 84 7e 00 08 lwzu r3,8(r30)
|
||
e20: 48 00 00 01 bl e20 <DbgFS_ArpTestShow+0xe4>
|
||
e24: 38 80 00 02 li r4,2
|
||
e28: 7c 65 1b 78 mr r5,r3
|
||
|
||
if (n || !creat)
|
||
e2c: 3c 60 00 00 lis r3,0
|
||
e30: 38 c0 00 03 li r6,3
|
||
{
|
||
n = __neigh_lookup(&arp_tbl, &ipaddr, dev, 1);
|
||
|
||
if(n != NULL)
|
||
{
|
||
n->used = jiffies;
|
||
e34: 38 63 02 78 addi r3,r3,632
|
||
|
||
DEBUG_CODE_LINE();
|
||
e38: 4c c6 31 82 crclr 4*cr1+eq
|
||
{
|
||
n = __neigh_lookup(&arp_tbl, &ipaddr, dev, 1);
|
||
|
||
if(n != NULL)
|
||
{
|
||
n->used = jiffies;
|
||
e3c: 48 00 00 01 bl e3c <DbgFS_ArpTestShow+0x100>
|
||
|
||
DEBUG_CODE_LINE();
|
||
e40: 7f a3 eb 78 mr r3,r29
|
||
e44: 7f c4 f3 78 mr r4,r30
|
||
e48: 7f 45 d3 78 mr r5,r26
|
||
e4c: 48 00 00 01 bl e4c <DbgFS_ArpTestShow+0x110>
|
||
{
|
||
n = __neigh_lookup(&arp_tbl, &ipaddr, dev, 1);
|
||
|
||
if(n != NULL)
|
||
{
|
||
n->used = jiffies;
|
||
e50: 7c 7f 1b 79 mr. r31,r3
|
||
|
||
DEBUG_CODE_LINE();
|
||
e54: 41 82 01 58 beq- fac <DbgFS_ArpTestShow+0x270>
|
||
e58: 3d 20 00 00 lis r9,0
|
||
e5c: 3f 60 00 00 lis r27,0
|
||
e60: 80 09 00 00 lwz r0,0(r9)
|
||
e64: 3f 80 00 00 lis r28,0
|
||
e68: 3f a0 00 00 lis r29,0
|
||
e6c: 3f c0 00 00 lis r30,0
|
||
e70: 3b 7b 02 9c addi r27,r27,668
|
||
e74: 90 1f 00 10 stw r0,16(r31)
|
||
e78: 3b 9c 02 b0 addi r28,r28,688
|
||
e7c: 3b bd 02 b4 addi r29,r29,692
|
||
if(n->nud_state & NUD_VALID)
|
||
e80: 3b de 00 00 addi r30,r30,0
|
||
e84: 38 60 00 08 li r3,8
|
||
e88: 7f 64 db 78 mr r4,r27
|
||
{
|
||
DEBUG_CODE_LINE();
|
||
e8c: 7f 85 e3 78 mr r5,r28
|
||
e90: 7f a6 eb 78 mr r6,r29
|
||
e94: 7f c7 f3 78 mr r7,r30
|
||
e98: 39 00 00 a4 li r8,164
|
||
e9c: 4c c6 31 82 crclr 4*cr1+eq
|
||
ea0: 48 00 00 01 bl ea0 <DbgFS_ArpTestShow+0x164>
|
||
ea4: 88 1f 00 1d lbz r0,29(r31)
|
||
ea8: 70 09 00 de andi. r9,r0,222
|
||
read_lock_bh(&n->lock);
|
||
eac: 41 82 00 94 beq- f40 <DbgFS_ArpTestShow+0x204>
|
||
memcpy(haddr, n->ha, dev->addr_len);
|
||
eb0: 7f a6 eb 78 mr r6,r29
|
||
eb4: 7f c7 f3 78 mr r7,r30
|
||
eb8: 39 00 00 a7 li r8,167
|
||
ebc: 7f 64 db 78 mr r4,r27
|
||
read_unlock_bh(&n->lock);
|
||
ec0: 7f 85 e3 78 mr r5,r28
|
||
PPC405_ERR77(0,%1)
|
||
" stwcx. %0,0,%1\n\
|
||
bne- 1b"
|
||
PPC_ACQUIRE_BARRIER
|
||
: "=&r" (t)
|
||
: "r" (&v->counter)
|
||
ec4: 38 60 00 08 li r3,8
|
||
|
||
static __inline__ int atomic_dec_return(atomic_t *v)
|
||
{
|
||
int t;
|
||
|
||
__asm__ __volatile__(
|
||
ec8: 4c c6 31 82 crclr 4*cr1+eq
|
||
ecc: 48 00 00 01 bl ecc <DbgFS_ArpTestShow+0x190>
|
||
ed0: 48 00 00 01 bl ed0 <DbgFS_ArpTestShow+0x194>
|
||
ed4: 88 ba 01 00 lbz r5,256(r26)
|
||
* Neighbour references
|
||
*/
|
||
|
||
static inline void neigh_release(struct neighbour *neigh)
|
||
{
|
||
if (atomic_dec_and_test(&neigh->refcnt))
|
||
ed8: 38 9f 00 24 addi r4,r31,36
|
||
edc: 38 61 00 0c addi r3,r1,12
|
||
seq_printf(seq, "---------------------------------------------------\n");
|
||
|
||
printk("++++++++ get ip 0x%08X MacAddress\n", ipaddr);
|
||
get_mac_form_ipv2(haddr, 2, (ipaddr), 3);
|
||
|
||
print_hex_dump(KERN_ERR, "haddrV1_", DUMP_PREFIX_ADDRESS, 16, 1,
|
||
ee0: 48 00 00 01 bl ee0 <DbgFS_ArpTestShow+0x1a4>
|
||
ee4: 48 00 00 01 bl ee4 <DbgFS_ArpTestShow+0x1a8>
|
||
ee8: 39 3f 00 48 addi r9,r31,72
|
||
eec: 7c 00 48 28 lwarx r0,0,r9
|
||
ef0: 30 00 ff ff addic r0,r0,-1
|
||
ef4: 7c 00 49 2d stwcx. r0,0,r9
|
||
ef8: 40 a2 ff f4 bne- eec <DbgFS_ArpTestShow+0x1b0>
|
||
efc: 2f 80 00 00 cmpwi cr7,r0,0
|
||
f00: 41 9e 00 34 beq- cr7,f34 <DbgFS_ArpTestShow+0x1f8>
|
||
f04: 3c 60 00 00 lis r3,0
|
||
f08: 3c 80 00 00 lis r4,0
|
||
f0c: 38 63 03 00 addi r3,r3,768
|
||
neigh_destroy(neigh);
|
||
f10: 38 84 03 04 addi r4,r4,772
|
||
f14: 38 a0 00 01 li r5,1
|
||
f18: 38 c0 00 10 li r6,16
|
||
neigh_release(n);
|
||
return 0;
|
||
}
|
||
else
|
||
{
|
||
DEBUG_CODE_LINE();
|
||
f1c: 38 e0 00 01 li r7,1
|
||
f20: 39 01 00 0c addi r8,r1,12
|
||
f24: 39 20 00 06 li r9,6
|
||
f28: 39 40 00 00 li r10,0
|
||
f2c: 48 00 00 01 bl f2c <DbgFS_ArpTestShow+0x1f0>
|
||
f30: 4b ff fe 58 b d88 <DbgFS_ArpTestShow+0x4c>
|
||
f34: 7f e3 fb 78 mr r3,r31
|
||
f38: 48 00 00 01 bl f38 <DbgFS_ArpTestShow+0x1fc>
|
||
PPC405_ERR77(0,%1)
|
||
" stwcx. %0,0,%1\n\
|
||
bne- 1b"
|
||
PPC_ACQUIRE_BARRIER
|
||
: "=&r" (t)
|
||
: "r" (&v->counter)
|
||
f3c: 4b ff ff c8 b f04 <DbgFS_ArpTestShow+0x1c8>
|
||
|
||
static __inline__ int atomic_dec_return(atomic_t *v)
|
||
{
|
||
int t;
|
||
|
||
__asm__ __volatile__(
|
||
f40: 38 60 00 08 li r3,8
|
||
f44: 7f 64 db 78 mr r4,r27
|
||
f48: 7f 85 e3 78 mr r5,r28
|
||
f4c: 7f a6 eb 78 mr r6,r29
|
||
* Neighbour references
|
||
*/
|
||
|
||
static inline void neigh_release(struct neighbour *neigh)
|
||
{
|
||
if (atomic_dec_and_test(&neigh->refcnt))
|
||
f50: 7f c7 f3 78 mr r7,r30
|
||
f54: 39 00 00 b0 li r8,176
|
||
neigh_destroy(neigh);
|
||
f58: 4c c6 31 82 crclr 4*cr1+eq
|
||
f5c: 48 00 00 01 bl f5c <DbgFS_ArpTestShow+0x220>
|
||
}
|
||
}
|
||
|
||
if(id == 4 || id == 3)
|
||
{
|
||
printk("eth %d ipaddr %s arp call by %d Error\n",
|
||
f60: 39 3f 00 48 addi r9,r31,72
|
||
f64: 7c 00 48 28 lwarx r0,0,r9
|
||
f68: 30 00 ff ff addic r0,r0,-1
|
||
f6c: 7c 00 49 2d stwcx. r0,0,r9
|
||
f70: 40 a2 ff f4 bne- f64 <DbgFS_ArpTestShow+0x228>
|
||
f74: 2f 80 00 00 cmpwi cr7,r0,0
|
||
f78: 40 be 00 0c bne+ cr7,f84 <DbgFS_ArpTestShow+0x248>
|
||
f7c: 7f e3 fb 78 mr r3,r31
|
||
f80: 48 00 00 01 bl f80 <DbgFS_ArpTestShow+0x244>
|
||
f84: 80 61 00 08 lwz r3,8(r1)
|
||
struct neighbour *n = neigh_lookup(tbl, pkey, dev);
|
||
|
||
if (n || !creat)
|
||
return n;
|
||
|
||
n = neigh_create(tbl, pkey, dev);
|
||
f88: 48 00 00 01 bl f88 <DbgFS_ArpTestShow+0x24c>
|
||
f8c: 38 80 00 02 li r4,2
|
||
f90: 7c 65 1b 78 mr r5,r3
|
||
f94: 3c 60 00 00 lis r3,0
|
||
return IS_ERR(n) ? NULL : n;
|
||
f98: 38 c0 00 03 li r6,3
|
||
f9c: 38 63 02 d8 addi r3,r3,728
|
||
struct neighbour *n = neigh_lookup(tbl, pkey, dev);
|
||
|
||
if (n || !creat)
|
||
return n;
|
||
|
||
n = neigh_create(tbl, pkey, dev);
|
||
fa0: 4c c6 31 82 crclr 4*cr1+eq
|
||
return IS_ERR(n) ? NULL : n;
|
||
fa4: 48 00 00 01 bl fa4 <DbgFS_ArpTestShow+0x268>
|
||
|
||
if(haddr != NULL)
|
||
{
|
||
n = __neigh_lookup(&arp_tbl, &ipaddr, dev, 1);
|
||
|
||
if(n != NULL)
|
||
fa8: 4b ff ff 5c b f04 <DbgFS_ArpTestShow+0x1c8>
|
||
fac: 7f a3 eb 78 mr r3,r29
|
||
neigh_release(n);
|
||
}
|
||
}
|
||
else if(id == 4 || id == 3)
|
||
{
|
||
printk("__neigh_lookup is null\n");
|
||
fb0: 7f c4 f3 78 mr r4,r30
|
||
fb4: 7f 45 d3 78 mr r5,r26
|
||
fb8: 48 00 00 01 bl fb8 <DbgFS_ArpTestShow+0x27c>
|
||
fbc: 38 00 f0 00 li r0,-4096
|
||
fc0: 7f 83 00 40 cmplw cr7,r3,r0
|
||
* @details <20><><EFBFBD><EFBFBD> \a cFlag <20>ĵȼ<C4B5><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ \a pMsg
|
||
* @param cFlag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
*/
|
||
static void HD_PRINTF(LOG_LEVEL level, const char* pMsg)
|
||
{
|
||
fc4: 7c 7f 1b 78 mr r31,r3
|
||
fc8: 41 9d 00 0c bgt- cr7,fd4 <DbgFS_ArpTestShow+0x298>
|
||
fcc: 2f 83 00 00 cmpwi cr7,r3,0
|
||
fd0: 40 be fe 88 bne- cr7,e58 <DbgFS_ArpTestShow+0x11c>
|
||
struct timeval tv;
|
||
struct tm wtm;
|
||
|
||
do_gettimeofday(&tv);
|
||
fd4: 3c 60 00 00 lis r3,0
|
||
* @details <20><><EFBFBD><EFBFBD> \a cFlag <20>ĵȼ<C4B5><C8BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ \a pMsg
|
||
* @param cFlag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
*/
|
||
static void HD_PRINTF(LOG_LEVEL level, const char* pMsg)
|
||
{
|
||
fd8: 38 63 02 c0 addi r3,r3,704
|
||
fdc: 4c c6 31 82 crclr 4*cr1+eq
|
||
struct timeval tv;
|
||
struct tm wtm;
|
||
|
||
do_gettimeofday(&tv);
|
||
fe0: 48 00 00 01 bl fe0 <DbgFS_ArpTestShow+0x2a4>
|
||
|
||
time_to_tm(tv.tv_sec, 0, &wtm);
|
||
fe4: 4b ff ff a0 b f84 <DbgFS_ArpTestShow+0x248>
|
||
|
||
00000fe8 <HD_PRINTF>:
|
||
fe8: 94 21 ff b0 stwu r1,-80(r1)
|
||
fec: 7c 08 02 a6 mflr r0
|
||
ff0: bf a1 00 44 stmw r29,68(r1)
|
||
wtm.tm_yday = tv.tv_usec / 1000;
|
||
ff4: 7c 7d 1b 78 mr r29,r3
|
||
ff8: 38 61 00 08 addi r3,r1,8
|
||
ffc: 90 01 00 54 stw r0,84(r1)
|
||
1000: 7c 9e 23 78 mr r30,r4
|
||
1004: 48 00 00 01 bl 1004 <HD_PRINTF+0x1c>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param dt Log <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
*/
|
||
static void HD_LinuxPrintf(LOG_LEVEL level, struct tm* dt, const char* pMsg)
|
||
{
|
||
char* pDebugMsg = (char*)kmalloc(strlen(pMsg) + 64, GFP_KERNEL);
|
||
1008: 80 61 00 08 lwz r3,8(r1)
|
||
struct tm wtm;
|
||
|
||
do_gettimeofday(&tv);
|
||
|
||
time_to_tm(tv.tv_sec, 0, &wtm);
|
||
wtm.tm_yday = tv.tv_usec / 1000;
|
||
100c: 38 80 00 00 li r4,0
|
||
1010: 38 a1 00 10 addi r5,r1,16
|
||
1014: 48 00 00 01 bl 1014 <HD_PRINTF+0x2c>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param dt Log <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
|
||
*/
|
||
static void HD_LinuxPrintf(LOG_LEVEL level, struct tm* dt, const char* pMsg)
|
||
{
|
||
char* pDebugMsg = (char*)kmalloc(strlen(pMsg) + 64, GFP_KERNEL);
|
||
1018: 81 21 00 0c lwz r9,12(r1)
|
||
trace_kmalloc(_THIS_IP_, ret, size, s->size, flags);
|
||
|
||
return ret;
|
||
}
|
||
}
|
||
return __kmalloc(size, flags);
|
||
101c: 3c 00 10 62 lis r0,4194
|
||
1020: 60 00 4d d3 ori r0,r0,19923
|
||
1024: 7c 09 00 96 mulhw r0,r9,r0
|
||
|
||
if(pDebugMsg == NULL)
|
||
1028: 7d 29 fe 70 srawi r9,r9,31
|
||
102c: 7f c3 f3 78 mr r3,r30
|
||
printk("Log Malloc Memory Error\n");
|
||
printk("%s", pMsg);
|
||
return;
|
||
}
|
||
|
||
sprintf(pDebugMsg, "[%02d:%02d:%02d:%03d] [%s] %s",
|
||
1030: 7c 00 36 70 srawi r0,r0,6
|
||
1034: 7c 09 00 50 subf r0,r9,r0
|
||
1038: 90 01 00 2c stw r0,44(r1)
|
||
103c: 48 00 00 01 bl 103c <HD_PRINTF+0x54>
|
||
1040: 38 63 00 40 addi r3,r3,64
|
||
1044: 38 80 00 d0 li r4,208
|
||
1048: 48 00 00 01 bl 1048 <HD_PRINTF+0x60>
|
||
104c: 7c 7f 1b 79 mr. r31,r3
|
||
1050: 41 82 00 7c beq- 10cc <HD_PRINTF+0xe4>
|
||
1054: 3b bd ff ff addi r29,r29,-1
|
||
1058: 80 a1 00 18 lwz r5,24(r1)
|
||
105c: 2b 9d 00 3f cmplwi cr7,r29,63
|
||
1060: 80 c1 00 14 lwz r6,20(r1)
|
||
1064: 80 e1 00 10 lwz r7,16(r1)
|
||
1068: 81 01 00 2c lwz r8,44(r1)
|
||
106c: 41 9d 00 54 bgt- cr7,10c0 <HD_PRINTF+0xd8>
|
||
1070: 3d 20 00 00 lis r9,0
|
||
dt->tm_hour, dt->tm_min, dt->tm_sec, dt->tm_yday,
|
||
LogLevelToStr(level), pMsg);
|
||
|
||
printk(pDebugMsg);
|
||
1074: 57 bd 10 3a rlwinm r29,r29,2,0,29
|
||
1078: 39 29 00 00 addi r9,r9,0
|
||
107c: 7d 29 e8 2e lwzx r9,r9,r29
|
||
|
||
kfree(pDebugMsg);
|
||
1080: 3c 80 00 00 lis r4,0
|
||
1084: 7f ca f3 78 mr r10,r30
|
||
|
||
time_to_tm(tv.tv_sec, 0, &wtm);
|
||
wtm.tm_yday = tv.tv_usec / 1000;
|
||
|
||
HD_LinuxPrintf(level, &wtm, pMsg);
|
||
}
|
||
1088: 38 84 00 24 addi r4,r4,36
|
||
108c: 7f e3 fb 78 mr r3,r31
|
||
1090: 4c c6 31 82 crclr 4*cr1+eq
|
||
1094: 48 00 00 01 bl 1094 <HD_PRINTF+0xac>
|
||
1098: 7f e3 fb 78 mr r3,r31
|
||
109c: 4c c6 31 82 crclr 4*cr1+eq
|
||
10a0: 48 00 00 01 bl 10a0 <HD_PRINTF+0xb8>
|
||
10a4: 7f e3 fb 78 mr r3,r31
|
||
{
|
||
char* pDebugMsg = (char*)kmalloc(strlen(pMsg) + 64, GFP_KERNEL);
|
||
|
||
if(pDebugMsg == NULL)
|
||
{
|
||
printk("Log Malloc Memory Error\n");
|
||
10a8: 48 00 00 01 bl 10a8 <HD_PRINTF+0xc0>
|
||
10ac: 80 01 00 54 lwz r0,84(r1)
|
||
10b0: bb a1 00 44 lmw r29,68(r1)
|
||
10b4: 38 21 00 50 addi r1,r1,80
|
||
printk("%s", pMsg);
|
||
10b8: 7c 08 03 a6 mtlr r0
|
||
10bc: 4e 80 00 20 blr
|
||
10c0: 3d 20 00 00 lis r9,0
|
||
10c4: 39 29 00 00 addi r9,r9,0
|
||
10c8: 4b ff ff b8 b 1080 <HD_PRINTF+0x98>
|
||
10cc: 3c 60 00 00 lis r3,0
|
||
* @param level <20><><EFBFBD>Եȼ<D4B5>
|
||
* @param iEnable 1 <20><EFBFBD><F2BFAAB5>Եȼ<D4B5><C8BC><EFBFBD> 0 <20>رյ<D8B1><D5B5>Եȼ<D4B5>
|
||
*/
|
||
void HD_EnableLogLevel(LOG_LEVEL level, int iEnable)
|
||
{
|
||
if(iEnable > 0)
|
||
10d0: 38 63 00 04 addi r3,r3,4
|
||
10d4: 4c c6 31 82 crclr 4*cr1+eq
|
||
{
|
||
g_iMinLevel |= level;
|
||
10d8: 48 00 00 01 bl 10d8 <HD_PRINTF+0xf0>
|
||
10dc: 3c 60 00 00 lis r3,0
|
||
10e0: 7f c4 f3 78 mr r4,r30
|
||
10e4: 38 63 00 20 addi r3,r3,32
|
||
10e8: 4c c6 31 82 crclr 4*cr1+eq
|
||
}
|
||
else
|
||
{
|
||
g_iMinLevel &= ~(level);
|
||
10ec: 48 00 00 01 bl 10ec <HD_PRINTF+0x104>
|
||
10f0: 4b ff ff bc b 10ac <HD_PRINTF+0xc4>
|
||
|
||
000010f4 <HD_EnableLogLevel>:
|
||
10f4: 2f 84 00 00 cmpwi cr7,r4,0
|
||
10f8: 40 9d 00 18 ble- cr7,1110 <HD_EnableLogLevel+0x1c>
|
||
10fc: 3d 20 00 00 lis r9,0
|
||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||
* @param cFlag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
*/
|
||
void HD_LOG(LOG_LEVEL level, const char* pMsg, ...)
|
||
{
|
||
1100: 80 09 00 00 lwz r0,0(r9)
|
||
1104: 7c 63 03 78 or r3,r3,r0
|
||
int iMsgLen = 0;
|
||
char buf[512];
|
||
char* pMsgBuf = NULL;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Եȼ<D4B5>
|
||
if(!(g_iMinLevel & level))
|
||
1108: 90 69 00 00 stw r3,0(r9)
|
||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||
* @param cFlag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
*/
|
||
void HD_LOG(LOG_LEVEL level, const char* pMsg, ...)
|
||
{
|
||
110c: 4e 80 00 20 blr
|
||
int iMsgLen = 0;
|
||
char buf[512];
|
||
char* pMsgBuf = NULL;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Եȼ<D4B5>
|
||
if(!(g_iMinLevel & level))
|
||
1110: 3d 20 00 00 lis r9,0
|
||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||
* @param cFlag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
*/
|
||
void HD_LOG(LOG_LEVEL level, const char* pMsg, ...)
|
||
{
|
||
1114: 80 09 00 00 lwz r0,0(r9)
|
||
1118: 7c 03 18 78 andc r3,r0,r3
|
||
111c: 90 69 00 00 stw r3,0(r9)
|
||
1120: 4e 80 00 20 blr
|
||
|
||
00001124 <HD_LOG>:
|
||
int iMsgLen = 0;
|
||
char buf[512];
|
||
char* pMsgBuf = NULL;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Եȼ<D4B5>
|
||
if(!(g_iMinLevel & level))
|
||
1124: 94 21 fd b0 stwu r1,-592(r1)
|
||
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
||
* @param cFlag <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
* @param pMsg <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>
|
||
*/
|
||
void HD_LOG(LOG_LEVEL level, const char* pMsg, ...)
|
||
{
|
||
1128: 7c 08 02 a6 mflr r0
|
||
112c: 3d 60 00 00 lis r11,0
|
||
1130: 90 01 02 54 stw r0,596(r1)
|
||
1134: 80 0b 00 00 lwz r0,0(r11)
|
||
1138: bf 01 02 30 stmw r24,560(r1)
|
||
int iMsgLen = 0;
|
||
char buf[512];
|
||
char* pMsgBuf = NULL;
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Եȼ<D4B5>
|
||
if(!(g_iMinLevel & level))
|
||
113c: 7c 7f 1b 78 mr r31,r3
|
||
}
|
||
else
|
||
{
|
||
HD_PRINTF(level, buf);
|
||
}
|
||
}
|
||
1140: 90 a1 02 18 stw r5,536(r1)
|
||
1144: 7c 9e 23 78 mr r30,r4
|
||
1148: 7c 6b 00 39 and. r11,r3,r0
|
||
114c: 90 c1 02 1c stw r6,540(r1)
|
||
1150: 90 e1 02 20 stw r7,544(r1)
|
||
if(!(g_iMinLevel & level))
|
||
{
|
||
return;
|
||
}
|
||
|
||
memset(buf, 0, sizeof(buf));
|
||
1154: 91 01 02 24 stw r8,548(r1)
|
||
1158: 91 21 02 28 stw r9,552(r1)
|
||
115c: 91 41 02 2c stw r10,556(r1)
|
||
|
||
va_start(arg_ptr, pMsg);
|
||
1160: 40 82 00 18 bne- 1178 <HD_LOG+0x54>
|
||
if(!(g_iMinLevel & level))
|
||
{
|
||
return;
|
||
}
|
||
|
||
memset(buf, 0, sizeof(buf));
|
||
1164: 80 01 02 54 lwz r0,596(r1)
|
||
|
||
va_start(arg_ptr, pMsg);
|
||
1168: bb 01 02 30 lmw r24,560(r1)
|
||
116c: 38 21 02 50 addi r1,r1,592
|
||
1170: 7c 08 03 a6 mtlr r0
|
||
1174: 4e 80 00 20 blr
|
||
iMsgLen = __builtin_vsnprintf(buf, sizeof(buf), pMsg, arg_ptr);
|
||
1178: 38 80 00 00 li r4,0
|
||
117c: 38 a0 02 00 li r5,512
|
||
return;
|
||
}
|
||
|
||
memset(buf, 0, sizeof(buf));
|
||
|
||
va_start(arg_ptr, pMsg);
|
||
1180: 38 61 00 14 addi r3,r1,20
|
||
iMsgLen = __builtin_vsnprintf(buf, sizeof(buf), pMsg, arg_ptr);
|
||
1184: 3b 81 02 58 addi r28,r1,600
|
||
1188: 48 00 00 01 bl 1188 <HD_LOG+0x64>
|
||
return;
|
||
}
|
||
|
||
memset(buf, 0, sizeof(buf));
|
||
|
||
va_start(arg_ptr, pMsg);
|
||
118c: 3b 40 00 02 li r26,2
|
||
1190: 3b 60 00 00 li r27,0
|
||
iMsgLen = __builtin_vsnprintf(buf, sizeof(buf), pMsg, arg_ptr);
|
||
1194: 9b 41 00 08 stb r26,8(r1)
|
||
va_end(arg_ptr);
|
||
|
||
if(iMsgLen > sizeof(buf))
|
||
1198: 3b a1 02 10 addi r29,r1,528
|
||
119c: 38 61 00 14 addi r3,r1,20
|
||
{
|
||
pMsgBuf = (char*)kmalloc(iMsgLen + 1, GFP_KERNEL);
|
||
11a0: 38 80 02 00 li r4,512
|
||
11a4: 9b 61 00 09 stb r27,9(r1)
|
||
11a8: 7f c5 f3 78 mr r5,r30
|
||
11ac: 38 c1 00 08 addi r6,r1,8
|
||
|
||
if(pMsgBuf == NULL)
|
||
11b0: 93 81 00 0c stw r28,12(r1)
|
||
11b4: 93 a1 00 10 stw r29,16(r1)
|
||
{
|
||
return;
|
||
}
|
||
|
||
va_start(arg_ptr, pMsg);
|
||
iMsgLen = __builtin_vsnprintf(pMsgBuf, iMsgLen + 1, pMsg, arg_ptr);
|
||
11b8: 48 00 00 01 bl 11b8 <HD_LOG+0x94>
|
||
11bc: 2b 83 02 00 cmplwi cr7,r3,512
|
||
11c0: 40 9d 00 64 ble- cr7,1224 <HD_LOG+0x100>
|
||
if(pMsgBuf == NULL)
|
||
{
|
||
return;
|
||
}
|
||
|
||
va_start(arg_ptr, pMsg);
|
||
11c4: 3b 23 00 01 addi r25,r3,1
|
||
11c8: 38 80 00 d0 li r4,208
|
||
11cc: 7f 23 cb 78 mr r3,r25
|
||
11d0: 48 00 00 01 bl 11d0 <HD_LOG+0xac>
|
||
iMsgLen = __builtin_vsnprintf(pMsgBuf, iMsgLen + 1, pMsg, arg_ptr);
|
||
11d4: 7c 78 1b 79 mr. r24,r3
|
||
va_end(arg_ptr);
|
||
HD_PRINTF(level, pMsgBuf);
|
||
11d8: 41 a2 ff 8c beq- 1164 <HD_LOG+0x40>
|
||
11dc: 7f c5 f3 78 mr r5,r30
|
||
11e0: 38 c1 00 08 addi r6,r1,8
|
||
kfree(pMsgBuf);
|
||
11e4: 7f 24 cb 78 mr r4,r25
|
||
11e8: 9b 41 00 08 stb r26,8(r1)
|
||
}
|
||
else
|
||
{
|
||
HD_PRINTF(level, buf);
|
||
}
|
||
}
|
||
11ec: 9b 61 00 09 stb r27,9(r1)
|
||
11f0: 93 81 00 0c stw r28,12(r1)
|
||
11f4: 93 a1 00 10 stw r29,16(r1)
|
||
11f8: 48 00 00 01 bl 11f8 <HD_LOG+0xd4>
|
||
11fc: 7f e3 fb 78 mr r3,r31
|
||
HD_PRINTF(level, pMsgBuf);
|
||
kfree(pMsgBuf);
|
||
}
|
||
else
|
||
{
|
||
HD_PRINTF(level, buf);
|
||
1200: 7f 04 c3 78 mr r4,r24
|
||
1204: 4b ff fd e5 bl fe8 <HD_PRINTF>
|
||
1208: 7f 03 c3 78 mr r3,r24
|
||
}
|
||
}
|
||
120c: 48 00 00 01 bl 120c <HD_LOG+0xe8>
|
||
1210: 80 01 02 54 lwz r0,596(r1)
|
||
1214: bb 01 02 30 lmw r24,560(r1)
|
||
1218: 38 21 02 50 addi r1,r1,592
|
||
121c: 7c 08 03 a6 mtlr r0
|
||
1220: 4e 80 00 20 blr
|
||
1224: 7f e3 fb 78 mr r3,r31
|
||
1228: 38 81 00 14 addi r4,r1,20
|
||
122c: 4b ff fd bd bl fe8 <HD_PRINTF>
|
||
1230: 80 01 02 54 lwz r0,596(r1)
|
||
1234: bb 01 02 30 lmw r24,560(r1)
|
||
1238: 38 21 02 50 addi r1,r1,592
|
||
123c: 7c 08 03 a6 mtlr r0
|
||
1240: 4e 80 00 20 blr
|
||
|
||
Disassembly of section .init.text:
|
||
|
||
00000000 <init_module>:
|
||
0: 94 21 ff e0 stwu r1,-32(r1)
|
||
4: 3c 80 00 00 lis r4,0
|
||
8: 3c a0 00 00 lis r5,0
|
||
c: 3c 60 00 00 lis r3,0
|
||
10: 7c 08 02 a6 mflr r0
|
||
14: 38 84 03 34 addi r4,r4,820
|
||
18: 38 a5 03 40 addi r5,r5,832
|
||
1c: 38 63 03 10 addi r3,r3,784
|
||
20: bf 41 00 08 stmw r26,8(r1)
|
||
24: 90 01 00 24 stw r0,36(r1)
|
||
28: 4c c6 31 82 crclr 4*cr1+eq
|
||
2c: 48 00 00 01 bl 2c <init_module+0x2c>
|
||
30: 3c 60 00 00 lis r3,0
|
||
34: 38 63 01 fc addi r3,r3,508
|
||
38: 3f e0 00 00 lis r31,0
|
||
3c: 48 00 00 01 bl 3c <init_module+0x3c>
|
||
40: 3b ff 00 00 addi r31,r31,0
|
||
44: 90 7f 00 0c stw r3,12(r31)
|
||
48: 3c 60 00 00 lis r3,0
|
||
4c: 38 63 03 4c addi r3,r3,844
|
||
50: 3f a0 00 00 lis r29,0
|
||
54: 3f c0 00 00 lis r30,0
|
||
58: 48 00 00 01 bl 58 <init_module+0x58>
|
||
5c: 3f 60 00 00 lis r27,0
|
||
60: 90 7f 00 08 stw r3,8(r31)
|
||
64: 3c 60 00 00 lis r3,0
|
||
68: 38 63 03 5c addi r3,r3,860
|
||
6c: 3f 80 00 00 lis r28,0
|
||
70: 3b bd 00 00 addi r29,r29,0
|
||
74: 48 00 00 01 bl 74 <init_module+0x74>
|
||
78: 3b e0 00 00 li r31,0
|
||
7c: 3b de 00 00 addi r30,r30,0
|
||
80: 3b 7b 03 68 addi r27,r27,872
|
||
84: 3b 9c 02 b4 addi r28,r28,692
|
||
88: 3b bd 00 14 addi r29,r29,20
|
||
8c: 48 00 00 38 b c4 <init_module+0xc4>
|
||
90: 48 00 00 01 bl 90 <init_module+0x90>
|
||
94: 2f 83 00 00 cmpwi cr7,r3,0
|
||
98: 41 be 00 28 beq+ cr7,c0 <init_module+0xc0>
|
||
9c: 7f e8 fb 78 mr r8,r31
|
||
a0: 38 60 00 02 li r3,2
|
||
a4: 7f 64 db 78 mr r4,r27
|
||
a8: 7f 85 e3 78 mr r5,r28
|
||
ac: 7f a6 eb 78 mr r6,r29
|
||
b0: 38 e0 01 ce li r7,462
|
||
b4: 7f 49 d3 78 mr r9,r26
|
||
b8: 4c c6 31 82 crclr 4*cr1+eq
|
||
bc: 48 00 00 01 bl bc <init_module+0xbc>
|
||
c0: 3b ff 00 01 addi r31,r31,1
|
||
c4: 57 e0 18 38 rlwinm r0,r31,3,0,28
|
||
c8: 57 fa 30 32 rlwinm r26,r31,6,0,25
|
||
cc: 7f 40 d0 50 subf r26,r0,r26
|
||
d0: 2f 9f 00 07 cmpwi cr7,r31,7
|
||
d4: 7f 5e d2 14 add r26,r30,r26
|
||
d8: 7f 43 d3 78 mr r3,r26
|
||
dc: 40 9e ff b4 bne+ cr7,90 <init_module+0x90>
|
||
e0: 3c 60 00 00 lis r3,0
|
||
e4: 3f e0 00 00 lis r31,0
|
||
e8: 38 63 03 8c addi r3,r3,908
|
||
ec: 3b ff 03 a8 addi r31,r31,936
|
||
f0: 48 00 00 01 bl f0 <init_module+0xf0>
|
||
f4: 7c 7d 1b 78 mr r29,r3
|
||
f8: 3c 60 00 00 lis r3,0
|
||
fc: 38 63 03 9c addi r3,r3,924
|
||
100: 48 00 00 01 bl 100 <init_module+0x100>
|
||
104: 7c 7e 1b 78 mr r30,r3
|
||
108: 7f e3 fb 78 mr r3,r31
|
||
10c: 48 00 00 01 bl 10c <init_module+0x10c>
|
||
110: 7f a4 eb 78 mr r4,r29
|
||
114: 7c 66 1b 78 mr r6,r3
|
||
118: 7f c5 f3 78 mr r5,r30
|
||
11c: 38 60 00 00 li r3,0
|
||
120: 48 00 00 01 bl 120 <init_module+0x120>
|
||
124: 3c 60 00 00 lis r3,0
|
||
128: 38 63 03 b8 addi r3,r3,952
|
||
12c: 48 00 00 01 bl 12c <init_module+0x12c>
|
||
130: 7c 7d 1b 78 mr r29,r3
|
||
134: 3c 60 00 00 lis r3,0
|
||
138: 38 63 03 c8 addi r3,r3,968
|
||
13c: 48 00 00 01 bl 13c <init_module+0x13c>
|
||
140: 7c 7e 1b 78 mr r30,r3
|
||
144: 7f e3 fb 78 mr r3,r31
|
||
148: 3f e0 00 00 lis r31,0
|
||
14c: 48 00 00 01 bl 14c <init_module+0x14c>
|
||
150: 7f a4 eb 78 mr r4,r29
|
||
154: 7c 66 1b 78 mr r6,r3
|
||
158: 7f c5 f3 78 mr r5,r30
|
||
15c: 38 60 00 02 li r3,2
|
||
160: 48 00 00 01 bl 160 <init_module+0x160>
|
||
164: 38 80 17 70 li r4,6000
|
||
168: 38 a0 00 03 li r5,3
|
||
16c: 38 c0 23 28 li r6,9000
|
||
170: 38 60 00 01 li r3,1
|
||
174: 48 00 00 01 bl 174 <init_module+0x174>
|
||
178: 3b ff 00 00 addi r31,r31,0
|
||
17c: 38 80 00 01 li r4,1
|
||
180: 38 a0 17 70 li r5,6000
|
||
184: 38 c0 23 28 li r6,9000
|
||
188: 38 60 00 00 li r3,0
|
||
18c: 48 00 00 01 bl 18c <init_module+0x18c>
|
||
190: 80 9f 00 08 lwz r4,8(r31)
|
||
194: 38 a0 27 10 li r5,10000
|
||
198: 38 c0 00 00 li r6,0
|
||
19c: 38 60 00 00 li r3,0
|
||
1a0: 48 00 00 01 bl 1a0 <init_module+0x1a0>
|
||
1a4: 80 bf 00 0c lwz r5,12(r31)
|
||
1a8: 38 80 00 06 li r4,6
|
||
1ac: 38 c0 17 70 li r6,6000
|
||
1b0: 38 60 00 00 li r3,0
|
||
1b4: 48 00 00 01 bl 1b4 <init_module+0x1b4>
|
||
1b8: 3c 60 00 00 lis r3,0
|
||
1bc: 3c a0 00 00 lis r5,0
|
||
1c0: 38 63 00 00 addi r3,r3,0
|
||
1c4: 38 80 00 00 li r4,0
|
||
1c8: 38 a5 03 d4 addi r5,r5,980
|
||
1cc: 4c c6 31 82 crclr 4*cr1+eq
|
||
1d0: 48 00 00 01 bl 1d0 <init_module+0x1d0>
|
||
1d4: 39 20 f0 00 li r9,-4096
|
||
1d8: 7f 83 48 40 cmplw cr7,r3,r9
|
||
1dc: 90 7f 00 10 stw r3,16(r31)
|
||
1e0: 41 9d 00 08 bgt- cr7,1e8 <init_module+0x1e8>
|
||
1e4: 48 00 00 01 bl 1e4 <init_module+0x1e4>
|
||
1e8: 80 01 00 24 lwz r0,36(r1)
|
||
1ec: 38 60 00 00 li r3,0
|
||
1f0: bb 41 00 08 lmw r26,8(r1)
|
||
1f4: 38 21 00 20 addi r1,r1,32
|
||
1f8: 7c 08 03 a6 mtlr r0
|
||
1fc: 4e 80 00 20 blr
|
||
|
||
Disassembly of section .exit.text:
|
||
|
||
00000000 <cleanup_module>:
|
||
0: 94 21 ff f0 stwu r1,-16(r1)
|
||
4: 7c 08 02 a6 mflr r0
|
||
8: 3c 60 00 00 lis r3,0
|
||
c: 3c 80 00 00 lis r4,0
|
||
10: 3c a0 00 00 lis r5,0
|
||
14: bf c1 00 08 stmw r30,8(r1)
|
||
18: 3f e0 00 00 lis r31,0
|
||
1c: 90 01 00 14 stw r0,20(r1)
|
||
20: 3b ff 00 00 addi r31,r31,0
|
||
24: 38 00 00 00 li r0,0
|
||
28: 90 1f 01 88 stw r0,392(r31)
|
||
2c: 38 63 03 e4 addi r3,r3,996
|
||
30: 38 84 03 34 addi r4,r4,820
|
||
34: 38 a5 03 40 addi r5,r5,832
|
||
38: 3b c0 00 00 li r30,0
|
||
3c: 4c c6 31 82 crclr 4*cr1+eq
|
||
40: 48 00 00 01 bl 40 <cleanup_module+0x40>
|
||
44: 48 00 00 0c b 50 <cleanup_module+0x50>
|
||
48: 48 00 00 01 bl 48 <cleanup_module+0x48>
|
||
4c: 3b de 00 01 addi r30,r30,1
|
||
50: 57 c0 18 38 rlwinm r0,r30,3,0,28
|
||
54: 57 c3 30 32 rlwinm r3,r30,6,0,25
|
||
58: 7c 60 18 50 subf r3,r0,r3
|
||
5c: 2f 9e 00 07 cmpwi cr7,r30,7
|
||
60: 7c 7f 1a 14 add r3,r31,r3
|
||
64: 40 9e ff e4 bne+ cr7,48 <cleanup_module+0x48>
|
||
68: 48 00 00 01 bl 68 <cleanup_module+0x68>
|
||
6c: 80 01 00 14 lwz r0,20(r1)
|
||
70: bb c1 00 08 lmw r30,8(r1)
|
||
74: 38 21 00 10 addi r1,r1,16
|
||
78: 7c 08 03 a6 mtlr r0
|
||
7c: 4e 80 00 20 blr
|