# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1244109251 -3600
# Node ID 549956f395d444f2a4cdac3830ed2abf750069fa
# Parent be44729000d345b41be1741492619e89f35eb69b
minios: Clean up and remove Linux remnants from x86_64.S
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
xen-unstable changeset: 19711:2e522b843a21
xen-unstable date: Wed Jun 03 18:27:05 2009 +0100
minios: Introduce BSD license COPYING file
Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
xen-unstable changeset: 19712:7a215fae6f1f
xen-unstable date: Thu Jun 04 10:35:03 2009 +0100
---
COPYING | 13 ++-
extras/mini-os/COPYING | 23 ++++++
extras/mini-os/arch/x86/x86_64.S | 131 +++++----------------------------------
3 files changed, 50 insertions(+), 117 deletions(-)
diff -r be44729000d3 -r 549956f395d4 COPYING
--- a/COPYING Thu Jun 04 10:53:21 2009 +0100
+++ b/COPYING Thu Jun 04 10:54:11 2009 +0100
@@ -17,12 +17,13 @@ GPL when distributed separately or inclu
GPL when distributed separately or included in software packages
outside this repository. Instead we specify a much more relaxed
BSD-style license. Affected files include the Xen interface headers
-(xen/include/public/COPYING), and various drivers, support functions
-and header files within the Linux source trees on
-http://xenbits.xensource.com/linux-2.6.X-xen.hg. In all such cases,
-license terms are stated at the top of the file or in a COPYING file
-in the same directory. Note that _any_ file that is modified and then
-distributed within a Linux kernel is still subject to the GNU GPL.
+(xen/include/public/COPYING), MiniOS (extras/mini-os) and various
+drivers, support functions and header files within the Linux source
+trees on http://xenbits.xensource.com/linux-2.6.X-xen.hg.
+In all such cases, license terms are stated at the top of the file or in
+a COPYING file in the same directory. Note that _any_ file that is
+modified and then distributed within a Linux kernel is still subject to
+the GNU GPL.
-- Keir Fraser (on behalf of the Xen team)
diff -r be44729000d3 -r 549956f395d4 extras/mini-os/COPYING
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/extras/mini-os/COPYING Thu Jun 04 10:54:11 2009 +0100
@@ -0,0 +1,23 @@
+Copyright (c) 2009 Citrix Systems, Inc. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
+FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGE.
+
diff -r be44729000d3 -r 549956f395d4 extras/mini-os/arch/x86/x86_64.S
--- a/extras/mini-os/arch/x86/x86_64.S Thu Jun 04 10:53:21 2009 +0100
+++ b/extras/mini-os/arch/x86/x86_64.S Thu Jun 04 10:54:11 2009 +0100
@@ -46,88 +46,21 @@ NMI_MASK = 0x80000000
#define ORIG_RAX 120 /* + error_code */
#define EFLAGS 144
-#define REST_SKIP 6*8
-.macro SAVE_REST
- subq $REST_SKIP,%rsp
-# CFI_ADJUST_CFA_OFFSET REST_SKIP
- movq %rbx,5*8(%rsp)
-# CFI_REL_OFFSET rbx,5*8
- movq %rbp,4*8(%rsp)
-# CFI_REL_OFFSET rbp,4*8
- movq %r12,3*8(%rsp)
-# CFI_REL_OFFSET r12,3*8
- movq %r13,2*8(%rsp)
-# CFI_REL_OFFSET r13,2*8
- movq %r14,1*8(%rsp)
-# CFI_REL_OFFSET r14,1*8
- movq %r15,(%rsp)
-# CFI_REL_OFFSET r15,0*8
-.endm
-
-
-.macro RESTORE_REST
- movq (%rsp),%r15
-# CFI_RESTORE r15
- movq 1*8(%rsp),%r14
-# CFI_RESTORE r14
- movq 2*8(%rsp),%r13
-# CFI_RESTORE r13
- movq 3*8(%rsp),%r12
-# CFI_RESTORE r12
- movq 4*8(%rsp),%rbp
-# CFI_RESTORE rbp
- movq 5*8(%rsp),%rbx
-# CFI_RESTORE rbx
- addq $REST_SKIP,%rsp
-# CFI_ADJUST_CFA_OFFSET -(REST_SKIP)
-.endm
-
-
-#define ARG_SKIP 9*8
-.macro RESTORE_ARGS
skiprax=0,addskip=0,skiprcx=0,skipr11=0,skipr8910=0,skiprdx=0
- .if \skipr11
- .else
+.macro RESTORE_ALL
movq (%rsp),%r11
-# CFI_RESTORE r11
- .endif
- .if \skipr8910
- .else
movq 1*8(%rsp),%r10
-# CFI_RESTORE r10
movq 2*8(%rsp),%r9
-# CFI_RESTORE r9
movq 3*8(%rsp),%r8
-# CFI_RESTORE r8
- .endif
- .if \skiprax
- .else
movq 4*8(%rsp),%rax
-# CFI_RESTORE rax
- .endif
- .if \skiprcx
- .else
movq 5*8(%rsp),%rcx
-# CFI_RESTORE rcx
- .endif
- .if \skiprdx
- .else
movq 6*8(%rsp),%rdx
-# CFI_RESTORE rdx
- .endif
movq 7*8(%rsp),%rsi
-# CFI_RESTORE rsi
movq 8*8(%rsp),%rdi
-# CFI_RESTORE rdi
- .if ARG_SKIP+\addskip > 0
- addq $ARG_SKIP+\addskip,%rsp
-# CFI_ADJUST_CFA_OFFSET -(ARG_SKIP+\addskip)
- .endif
+ addq $9*8+8,%rsp
.endm
.macro HYPERVISOR_IRET flag
-# testb $3,1*8(%rsp) /* Don't need to do that in Mini-os, as */
-# jnz 2f /* there is no userspace? */
testl $NMI_MASK,2*8(%rsp)
jnz 2f
@@ -150,44 +83,25 @@ 2: /* Slow iret via hypervisor. */
* and the exception handler in %rax.
*/
ENTRY(error_entry)
-# _frame RDI
/* rdi slot contains rax, oldrax contains error code */
cld
subq $14*8,%rsp
-# CFI_ADJUST_CFA_OFFSET (14*8)
movq %rsi,13*8(%rsp)
-# CFI_REL_OFFSET rsi,RSI
movq 14*8(%rsp),%rsi /* load rax from rdi slot */
movq %rdx,12*8(%rsp)
-# CFI_REL_OFFSET rdx,RDX
movq %rcx,11*8(%rsp)
-# CFI_REL_OFFSET rcx,RCX
movq %rsi,10*8(%rsp) /* store rax */
-# CFI_REL_OFFSET rax,RAX
movq %r8, 9*8(%rsp)
-# CFI_REL_OFFSET r8,R8
movq %r9, 8*8(%rsp)
-# CFI_REL_OFFSET r9,R9
movq %r10,7*8(%rsp)
-# CFI_REL_OFFSET r10,R10
movq %r11,6*8(%rsp)
-# CFI_REL_OFFSET r11,R11
movq %rbx,5*8(%rsp)
-# CFI_REL_OFFSET rbx,RBX
movq %rbp,4*8(%rsp)
-# CFI_REL_OFFSET rbp,RBP
movq %r12,3*8(%rsp)
-# CFI_REL_OFFSET r12,R12
movq %r13,2*8(%rsp)
-# CFI_REL_OFFSET r13,R13
movq %r14,1*8(%rsp)
-# CFI_REL_OFFSET r14,R14
movq %r15,(%rsp)
-# CFI_REL_OFFSET r15,R15
-#if 0
- cmpl $__KERNEL_CS,CS(%rsp)
- je error_kernelspace
-#endif
+
error_call_handler:
movq %rdi, RDI(%rsp)
movq %rsp,%rdi
@@ -197,29 +111,22 @@ error_call_handler:
jmp error_exit
.macro zeroentry sym
-# INTR_FRAME
movq (%rsp),%rcx
movq 8(%rsp),%r11
addq $0x10,%rsp /* skip rcx and r11 */
pushq $0 /* push error code/oldrax */
-# CFI_ADJUST_CFA_OFFSET 8
pushq %rax /* push real oldrax to the rdi slot */
-# CFI_ADJUST_CFA_OFFSET 8
leaq \sym(%rip),%rax
jmp error_entry
-# CFI_ENDPROC
.endm
.macro errorentry sym
-# XCPT_FRAME
movq (%rsp),%rcx
movq 8(%rsp),%r11
addq $0x10,%rsp /* rsp points to the error code */
pushq %rax
-# CFI_ADJUST_CFA_OFFSET 8
leaq \sym(%rip),%rax
jmp error_entry
-# CFI_ENDPROC
.endm
#define XEN_GET_VCPU_INFO(reg) movq HYPERVISOR_shared_info,reg
@@ -253,7 +160,6 @@ 11: movq %gs:8,%rax
decl %gs:0
jmp error_exit
-# ALIGN
restore_all_enable_events:
XEN_UNBLOCK_EVENTS(%rsi) # %rsi is already set up...
@@ -261,12 +167,18 @@ scrit: /**** START OF CRITICAL REGION **
XEN_TEST_PENDING(%rsi)
jnz 14f # process more events if necessary...
XEN_PUT_VCPU_INFO(%rsi)
- RESTORE_ARGS 0,8,0
+ RESTORE_ALL
HYPERVISOR_IRET 0
14: XEN_LOCKED_BLOCK_EVENTS(%rsi)
XEN_PUT_VCPU_INFO(%rsi)
- SAVE_REST
+ subq $6*8,%rsp
+ movq %rbx,5*8(%rsp)
+ movq %rbp,4*8(%rsp)
+ movq %r12,3*8(%rsp)
+ movq %r13,2*8(%rsp)
+ movq %r14,1*8(%rsp)
+ movq %r15,(%rsp)
movq %rsp,%rdi # set the argument again
jmp 11b
ecrit: /**** END OF CRITICAL REGION ****/
@@ -274,7 +186,7 @@ ecrit: /**** END OF CRITICAL REGION ***
retint_kernel:
retint_restore_args:
- movl EFLAGS-REST_SKIP(%rsp), %eax
+ movl EFLAGS-6*8(%rsp), %eax
shr $9, %eax # EAX[0] == IRET_EFLAGS.IF
XEN_GET_VCPU_INFO(%rsi)
andb evtchn_upcall_mask(%rsi),%al
@@ -282,13 +194,18 @@ retint_restore_args:
jnz restore_all_enable_events # != 0 => enable event delivery
XEN_PUT_VCPU_INFO(%rsi)
- RESTORE_ARGS 0,8,0
+ RESTORE_ALL
HYPERVISOR_IRET 0
error_exit:
- RESTORE_REST
-/* cli */
+ movq (%rsp),%r15
+ movq 1*8(%rsp),%r14
+ movq 2*8(%rsp),%r13
+ movq 3*8(%rsp),%r12
+ movq 4*8(%rsp),%rbp
+ movq 5*8(%rsp),%rbx
+ addq $6*8,%rsp
XEN_BLOCK_EVENTS(%rsi)
jmp retint_kernel
@@ -313,17 +230,11 @@ ENTRY(device_not_available)
ENTRY(debug)
-# INTR_FRAME
-# CFI_ADJUST_CFA_OFFSET 8 */
zeroentry do_debug
-# CFI_ENDPROC
ENTRY(int3)
-# INTR_FRAME
-# CFI_ADJUST_CFA_OFFSET 8 */
zeroentry do_int3
-# CFI_ENDPROC
ENTRY(overflow)
zeroentry do_overflow
@@ -351,9 +262,7 @@ ENTRY(segment_not_present)
/* runs on exception stack */
ENTRY(stack_segment)
-# XCPT_FRAME
errorentry do_stack_segment
-# CFI_ENDPROC
ENTRY(general_protection)
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|