diff options
author | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-04-13 14:36:00 +0000 |
---|---|---|
committer | kaf24@scramble.cl.cam.ac.uk <kaf24@scramble.cl.cam.ac.uk> | 2004-04-13 14:36:00 +0000 |
commit | 6e25afa16902e18cb4bc8549aad5b58a12551136 (patch) | |
tree | 23804a602ac1bc0c1dd1bf1cc099561ff6704859 /xenolinux-2.4.25-sparse/arch | |
parent | 15c5cad57f32a9012541ef00d08f0f10447a1f8c (diff) | |
download | xen-6e25afa16902e18cb4bc8549aad5b58a12551136.tar.gz xen-6e25afa16902e18cb4bc8549aad5b58a12551136.tar.bz2 xen-6e25afa16902e18cb4bc8549aad5b58a12551136.zip |
bitkeeper revision 1.862 (407bfad05PmdmZtBnhfJMLp1dqPBYQ)
Various cleanups. Also fix a bug in Xenolinux timer interrupt.
Diffstat (limited to 'xenolinux-2.4.25-sparse/arch')
-rw-r--r-- | xenolinux-2.4.25-sparse/arch/xen/kernel/entry.S | 26 | ||||
-rw-r--r-- | xenolinux-2.4.25-sparse/arch/xen/kernel/time.c | 3 |
2 files changed, 14 insertions, 15 deletions
diff --git a/xenolinux-2.4.25-sparse/arch/xen/kernel/entry.S b/xenolinux-2.4.25-sparse/arch/xen/kernel/entry.S index b78c74fd9c..305bd42c70 100644 --- a/xenolinux-2.4.25-sparse/arch/xen/kernel/entry.S +++ b/xenolinux-2.4.25-sparse/arch/xen/kernel/entry.S @@ -15,7 +15,7 @@ * I changed all the .align's to 4 (16 byte alignment), as that's faster * on a 486. * - * Stack layout in 'ret_from_system_call': + * Stack layout in 'ret_to_user': * ptrace needs to have all regs on the stack. * if the order here is changed, it needs to be * updated in fork.c:copy_process, signal.c:do_signal, @@ -157,7 +157,7 @@ ENTRY(lcall7) call *%edx addl $4, %esp popl %eax - jmp ret_from_sys_call + jmp ret_to_user ENTRY(lcall27) pushfl # We get a different stack layout with call @@ -181,7 +181,7 @@ ENTRY(lcall27) call *%edx addl $4, %esp popl %eax - jmp ret_from_sys_call + jmp ret_to_user ENTRY(ret_from_fork) pushl %ebx @@ -190,7 +190,7 @@ ENTRY(ret_from_fork) GET_CURRENT(%ebx) testb $0x02,tsk_ptrace(%ebx) # PT_TRACESYS jne tracesys_exit - jmp ret_from_sys_call + jmp ret_to_user /* * Return to user mode is not as complex as all this looks, @@ -208,15 +208,15 @@ ENTRY(system_call) jae badsys call *SYMBOL_NAME(sys_call_table)(,%eax,4) movl %eax,EAX(%esp) # save the return value -ENTRY(ret_from_sys_call) +ret_to_user: movl SYMBOL_NAME(HYPERVISOR_shared_info),%esi movb $1,evtchn_upcall_mask(%esi) # make tests atomic -ret_syscall_tests: +ret_to_user_nocli: cmpl $0,need_resched(%ebx) - jne reschedule + jne reschedule cmpl $0,sigpending(%ebx) je safesti # ensure need_resched updates are seen -signal_return: +/*signal_return:*/ movb $0,evtchn_upcall_mask(%esi) # reenable event callbacks movl %esp,%eax xorl %edx,%edx @@ -238,10 +238,10 @@ tracesys: movl %eax,EAX(%esp) # save the return value tracesys_exit: call SYMBOL_NAME(syscall_trace) - jmp ret_from_sys_call + jmp ret_to_user badsys: movl $-ENOSYS,EAX(%esp) - jmp ret_from_sys_call + jmp ret_to_user ALIGN ENTRY(ret_from_intr) @@ -249,14 +249,14 @@ ENTRY(ret_from_intr) ret_from_exception: movb CS(%esp),%al testl $2,%eax - jne ret_from_sys_call + jne ret_to_user jmp restore_all ALIGN reschedule: movb $0,evtchn_upcall_mask(%esi) # reenable event callbacks call SYMBOL_NAME(schedule) # test - jmp ret_from_sys_call + jmp ret_to_user ENTRY(divide_error) pushl $0 # no error code @@ -316,7 +316,7 @@ ENTRY(hypervisor_callback) movl SYMBOL_NAME(HYPERVISOR_shared_info),%esi movb CS(%esp),%cl test $2,%cl # slow return to ring 2 or 3 - jne ret_syscall_tests + jne ret_to_user_nocli safesti:movb $0,evtchn_upcall_mask(%esi) # reenable event callbacks scrit: /**** START OF CRITICAL REGION ****/ testb $0xFF,evtchn_upcall_pending(%esi) diff --git a/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c b/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c index 3674aef2ef..52920cd0fc 100644 --- a/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c +++ b/xenolinux-2.4.25-sparse/arch/xen/kernel/time.c @@ -492,8 +492,7 @@ static inline void do_timer_interrupt(int irq, void *dev_id, static void timer_interrupt(int irq, void *dev_id, struct pt_regs *regs) { write_lock(&xtime_lock); - while ( !TIME_VALUES_UP_TO_DATE ) - do_timer_interrupt(irq, NULL, regs); + do_timer_interrupt(irq, NULL, regs); write_unlock(&xtime_lock); } |