I just remove the statement "msr cpsr_c,r7". But It just doesn't Work. And If I change the code to the following: I set the vcpu_state_t registers as following : vcpu->r()->r[6]=(l4_umword_t)exit_map_addr; vcpu->r()->r[4]=(l4_umword_t)(idle_stack+sizeof(idle_stack)-1); vcpu->r()->ip =(l4_umword_t)super_code_map_addr; vcpu->r()->r[5] = (l4_umword_t)idle_code_map_addr; vcpu->r()->sp = (l4_umword_t)0x30000; and I change the my_super_code : asm ( ".pushsection .text\n" ".p2align 12 \t\n" ".global my_super_code \t\n" "my_super_code: \t\n" " swi 0 \t\n" " mov sp, r4 \t\n"" mov lr, r6 \t\n"" mov pc, r5 \t\n"".popsection"); and still, it doesn't work.And The vcpu upcall function will be called again and again.
2012-08-03
raylei0825ssdut
发件人:l4-hackers-request 发送时间:2012-08-03 18:00 主题:l4-hackers Digest, Vol 112, Issue 3 收件人:"l4-hackers"l4-hackers@os.inf.tu-dresden.de 抄送:
Send l4-hackers mailing list submissions to l4-hackers@os.inf.tu-dresden.de
To subscribe or unsubscribe via the World Wide Web, visit http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers or, via email, send a message with subject or body 'help' to l4-hackers-request@os.inf.tu-dresden.de
You can reach the person managing the list at l4-hackers-owner@os.inf.tu-dresden.de
When replying, please edit your Subject line so it is more specific than "Re: Contents of l4-hackers digest..."
Today's Topics:
1. Re: vcpu example problem (Adam Lackorzynski)
----------------------------------------------------------------------
Message: 1 Date: Thu, 2 Aug 2012 22:14:21 +0200 From: Adam Lackorzynski adam@os.inf.tu-dresden.de To: l4-hackers@os.inf.tu-dresden.de Subject: Re: vcpu example problem Message-ID: 20120802201421.GA7129@os.inf.tu-dresden.de Content-Type: text/plain; charset=iso-8859-1
Hi,
On Thu Aug 02, 2012 at 11:14:34 +0800, ?????? wrote:
Hi, I am trying to modify the vcpu example of l4re-snapshot to switch registers to execute my C function.But It doesn't work. I have read some papers about l4linux tranplantion.and follow it . To switch the process, I fill the vcpu_state_t structure with its registers.and call vcpu_resume_commit action.Then Jump to the ASM Code. But problem arises when I want to jump from asm code to C function. What's the Problem? The Code is as following:
#define SVC_MODE 0x00000013 #define USR_MODE 0x00000010
asm volatile ( ".pushsection .text\n" ".p2align 12 \t\n" ".global my_super_code \t\n" "my_super_code: \t\n" " msr cpsr_c, r7\t\n" " mov lr, r6 \t\n" " mov pc, r5 \t\n" //" b my_super_code \t\n" ".popsection" );
I think the problem is not the jump but the msr, which you cannot do in user-land and which you probably can safely remove.
Adam -- Adam adam@os.inf.tu-dresden.de Lackorzynski http://os.inf.tu-dresden.de/~adam/
------------------------------
_______________________________________________ l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
End of l4-hackers Digest, Vol 112, Issue 3 ******************************************