I use the message to implement it
I had two system task and three user process
the user process are mostly same, just like this
Code: Select all
void TestA()
{
while(1){
printf("A");
milli_delay(200);
}
}
the first user process (TestA) can't call any function that really do something,but other process can do it well
when I use printf() in TestA ,the exception says " #UD Unvaliable Operate eip 0x10b cs 0x5"
I use bochs to unassemble the code ,got the information below
Code: Select all
0000010b: ( ): lock pop edx ; f05a
0000010d: ( ): and eax, 0xff53c000 ; 2500c053ff
00000112: ( ): add al, dh ; 00f0
00000114: ( ): push ebx ; 53
00000115: ( ): inc dword ptr ds:[eax] ; ff00
00000117: ( ): lock dec ebp ; f04d
00000119: ( ): add al, al ; 00c0
0000011b: ( ): lahf ; 9f
0000011c: ( ): push ebx ; 53
0000011d: ( ): inc dword ptr ds:[eax] ; ff00
Code: Select all
00019680650i[CPU0 ] LOCK prefix unallowed (op1=0x5a, modrm=0x00)
00019681939i[CPU0 ] WARNING: HLT instruction with IF=0!
anyone has met this problem before?