From owner-p4-projects@FreeBSD.ORG Sat May 10 23:49:43 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8AE4937B404; Sat, 10 May 2003 23:49:42 -0700 (PDT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2BED037B401 for ; Sat, 10 May 2003 23:49:42 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C7A9A43FBF for ; Sat, 10 May 2003 23:49:41 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h4B6nf0U047601 for ; Sat, 10 May 2003 23:49:41 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h4B6nfIP047598 for perforce@freebsd.org; Sat, 10 May 2003 23:49:41 -0700 (PDT) Date: Sat, 10 May 2003 23:49:41 -0700 (PDT) Message-Id: <200305110649.h4B6nfIP047598@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 30939 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 May 2003 06:49:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=30939 Change 30939 by marcel@marcel_nfs on 2003/05/10 23:48:58 Add support for swithing to ia32. We need to restore the scratch registers as they hold the ia32 state and jump to userland not with a regular branch, but with br.ia. That's about it here... Affected files ... .. //depot/projects/ia64_epc/sys/ia64/ia64/syscall.s#18 edit Differences ... ==== //depot/projects/ia64_epc/sys/ia64/ia64/syscall.s#18 (text+ko) ==== @@ -92,6 +92,13 @@ br.sptk b6 ;; } +gw_ret_ia32: + mov ar.rnat=r0 + mov ar.rsc=0xc + mov ar.pfs=r0 + ;; + br.ia.sptk b6 + ;; ENTRY(break_sigtramp, 0) { .mib @@ -432,10 +439,10 @@ mov ar.pfs=r20 ;; } -{ .mmb +{ .mmi ld8 gp=[r15],16 // gp ld8 r27=[r14],16 // ndirty - nop 0 + tbit.z p14,p15=r26,34 // p14=ia64, p15=ia32 ;; } { .mmi @@ -450,10 +457,10 @@ nop 0 ;; } -{ .mmi - ld8 r9=[r14] // r9 - ld8 r10=[r15] // r10 - dep r26=-1,r26,19,1 // Set psr.dfh +{ .mmb + ld8 r9=[r14],40 // r9 + ld8 r10=[r15],40 // r10 +(p15) br.spnt epc_syscall_setup_ia32 ;; } { .mmi @@ -487,4 +494,64 @@ br.ret.sptk b7 ;; } +epc_syscall_setup_ia32: +{ .mmi + loadrs + mov ar.k7=r31 + mov sp=r16 + ;; +} +{ .mmi + mov r30=ar.bspstore + ;; + mov ar.bspstore=r21 + dep r30=0,r30,0,9 + ;; +} +{ .mmi + mov ar.k6=r30 + mov ar.unat=r17 + mov r11=r26 + ;; +} + + ld8 r16=[r14],16 + ld8 r17=[r15],16 + ;; + ld8 r18=[r14],16 + ld8 r19=[r15],16 + ;; + ld8 r20=[r14],16 + ld8 r21=[r15],16 + ;; + ld8 r22=[r14],16 + ld8 r23=[r15],16 + ;; + ld8 r24=[r14],16 + ld8 r25=[r15],16 + ;; + ld8 r26=[r14],16 + ld8 r27=[r15],16 + ;; + ld8 r28=[r14],16 + ld8 r29=[r15],16 + ;; + ld8 r30=[r14],40 + ld8 r31=[r15],40 + ;; + ld8 r2=[r14],16 + ld8 r3=[r15],8 + ;; + mov ar.csd=r2 + mov ar.ssd=r3 + ;; + mov r2=ar.k5 + mov psr.l=r11 + ;; + srlz.d + add r2=gw_ret_ia32-ia64_gateway_page,r2 + ;; + mov b7=r2 + br.ret.sptk b7 + ;; END(epc_syscall)