<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 10pt;
font-family:΢ÈíÑźÚ
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>
Hi experts:<BR> <BR> an user application generates a un-alignment data abort, then in function do_alignment, <BR>kernel read the instruction from the address where data abort occurs by:<BR> fault = __get_user(instr, (u32 *)instrptr);<BR> <BR> after this sentence, instr is the error instruction that generate data abort. <BR> i change this instruction from strict alignment check instruction to not strict alignment<BR>check instruction by:<BR> instr = instr&030;<BR> <BR> at last i write this instruction back to ram, and let cpu execute this instruction again:<BR> *((u32*)instrptr) = instr;<BR> <BR> it works on kernel 2.6.35, but on version 3.0, it failed, the last sentence above generates a Oops:<BR> <BR>[ 58.966552] Unable to handle kernel paging request at virtual address 000084ec<br>[ 58.974029] pgd = db9f4000<br>[ 58.976806] [000084ec] *pgd=1b9db831, *pte=0ae5f59f, *ppte=0ae5fe7e<br>[ 58.986877] Internal error: Oops: 81f [#1] PREEMPT SMP<BR> <BR> 1. it seems that kernel 3.0 can not modify user mode program instructions directly even under<BR>SVC mode.<BR> 2. how can i change the page permisson before write back instruction of user mode application?<BR> for example, find out the page tables of current application, find out the pte which represents<BR>the instruction that generate data abort, then modify pte, write back instruction, restore pte, done.<BR> how to do these?<BR> <BR> please advise, thanks very much.<BR> <BR> <BR>Best Regards<BR>                                            </div></body>
</html>