dc61dc38d2
- Remove ia64 from ExclusiveArch since it can't build...
239 lines
7.6 KiB
Diff
239 lines
7.6 KiB
Diff
diff -up gnu-efi-3.0d/lib/ia64/palproc.h.license gnu-efi-3.0d/lib/ia64/palproc.h
|
|
--- gnu-efi-3.0d/lib/ia64/palproc.h.license 2007-05-09 14:37:27.000000000 -0400
|
|
+++ gnu-efi-3.0d/lib/ia64/palproc.h 2008-07-28 12:00:28.000000000 -0400
|
|
@@ -1,60 +0,0 @@
|
|
-//
|
|
-//
|
|
-// Copyright (c) 1996-99 Intel Corp.
|
|
-// All Rights Reserved
|
|
-//
|
|
-// INTEL CORPORATION PROPRIETARY INFORMATION
|
|
-//
|
|
-// This software is supplied under the terms of a license
|
|
-// agreement or nondisclosure agreement with Intel Corpo-
|
|
-// ration and may not be copied or disclosed except in
|
|
-// accordance with the terms of that agreement.
|
|
-//
|
|
-//
|
|
-//
|
|
-//Module Name:
|
|
-//
|
|
-// palproc.h
|
|
-//
|
|
-//Abstract:
|
|
-//
|
|
-// This module contains generic macros for an IA64 assembly writer.
|
|
-//
|
|
-//
|
|
-//Revision History
|
|
-//
|
|
-
|
|
-#ifndef _PALPROC_H
|
|
-#define _PALPROC_H
|
|
-
|
|
-#define PROCEDURE_ENTRY(name) .##text; \
|
|
- .##type name, @function; \
|
|
- .##global name; \
|
|
- .##proc name; \
|
|
-name:
|
|
-
|
|
-#define PROCEDURE_EXIT(name) .##endp name
|
|
-
|
|
-// Note: use of NESTED_SETUP requires number of locals (l) >= 3
|
|
-
|
|
-#define NESTED_SETUP(i,l,o,r) \
|
|
- alloc loc1=ar##.##pfs,i,l,o,r ;\
|
|
- mov loc0=b0
|
|
-
|
|
-#define NESTED_RETURN \
|
|
- mov b0=loc0 ;\
|
|
- mov ar##.##pfs=loc1 ;;\
|
|
- br##.##ret##.##dpnt b0;;
|
|
-
|
|
-
|
|
-// defines needed in palproc.s
|
|
-
|
|
-#define PAL_MC_CLEAR_LOG 0x0015
|
|
-#define PAL_MC_DRAIN 0x0016
|
|
-#define PAL_MC_EXPECTED 0x0017
|
|
-#define PAL_MC_DYNAMIC_STATE 0x0018
|
|
-#define PAL_MC_ERROR_INFO 0x0019
|
|
-#define PAL_MC_RESUME 0x001a
|
|
-#define PAL_MC_REGISTER_MEM 0x001b
|
|
-
|
|
-#endif // _PALPROC_H
|
|
diff -up gnu-efi-3.0d/lib/ia64/palproc.S.license gnu-efi-3.0d/lib/ia64/palproc.S
|
|
--- gnu-efi-3.0d/lib/ia64/palproc.S.license 2007-05-09 14:37:27.000000000 -0400
|
|
+++ gnu-efi-3.0d/lib/ia64/palproc.S 2008-07-28 12:00:30.000000000 -0400
|
|
@@ -1,170 +0,0 @@
|
|
-//++
|
|
-// Copyright (c) 1996-99 Intel Corp.
|
|
-// All Rights Reserved
|
|
-//
|
|
-// INTEL CORPORATION PROPRIETARY INFORMATION
|
|
-//
|
|
-// This software is supplied under the terms of a license
|
|
-// agreement or nondisclosure agreement with Intel Corpo-
|
|
-// ration and may not be copied or disclosed except in
|
|
-// accordance with the terms of that agreement.
|
|
-//
|
|
-//
|
|
-//
|
|
-// Module Name:
|
|
-//
|
|
-// palproc.s
|
|
-//
|
|
-// Abstract:
|
|
-//
|
|
-// Contains an implementation for making PAL PROC calls on
|
|
-// IA-64 architecture.
|
|
-//
|
|
-//
|
|
-//
|
|
-// Revision History:
|
|
-//
|
|
-//--
|
|
-
|
|
- .file "palproc.s"
|
|
-
|
|
-#include "palproc.h"
|
|
-
|
|
-
|
|
-//-----------------------------------------------------------------------------
|
|
-//++
|
|
-// MakeStaticPALCall
|
|
-//
|
|
-// This routine is called whenever an architected static calling convention
|
|
-// based PAL call is to be made. This call does use RSE actually, but our policy
|
|
-// in making static PAL calls before memory is available is to make sure that
|
|
-// we do not nest too deep and allocate beyond 96 banked registers. In other
|
|
-// words we carefully code calls and control flow before memory is available.
|
|
-//
|
|
-// Arguments : All parameters set up to do static PAL call.
|
|
-//
|
|
-// On Entry :
|
|
-//
|
|
-// Return Value:
|
|
-//
|
|
-// As per static calling conventions.
|
|
-//
|
|
-//--
|
|
-//---------------------------------------------------------------------------
|
|
-PROCEDURE_ENTRY(MakeStaticPALCall)
|
|
-
|
|
- NESTED_SETUP (5,8,0,0)
|
|
- mov loc3 = b5
|
|
- mov loc4 = r2
|
|
- mov loc7 = r1;;
|
|
-
|
|
- movl loc6 = PAL_MC_CLEAR_LOG
|
|
- mov r2 = psr;;
|
|
- mov loc5 = r2
|
|
-
|
|
- cmp.eq p6,p7 = r28,loc6;;
|
|
- (p7)movl loc6 = PAL_MC_DYNAMIC_STATE;;
|
|
- (p7)cmp.eq p6,p7 = r28,loc6;;
|
|
-
|
|
- (p7)movl loc6 = PAL_MC_ERROR_INFO;;
|
|
- (p7)cmp.eq p6,p7 = r28,loc6;;
|
|
-
|
|
- (p7)movl loc6 = PAL_MC_RESUME;;
|
|
- (p7)cmp.eq p6,p7 = r28,loc6
|
|
-
|
|
- mov loc6 = 0x1;;
|
|
- (p7)dep r2 = loc6,r2,13,1;; // psr.ic = 1
|
|
-
|
|
-// p6 will be true, if it is one of the MCHK calls. There has been lots of debate
|
|
-// on psr.ic for these values. For now, do not do any thing to psr.ic
|
|
-
|
|
-// (p6)dep r2 = r0,r2,13,1;; // psr.ic = 0
|
|
- dep r2 = r0,r2,14,1;; // psr.i = 0
|
|
-
|
|
- mov psr.l = r2
|
|
- srlz.d;; // Needs data serailization.
|
|
- srlz.i;; // Needs instruction serailization.
|
|
-
|
|
-StaticGetPALLocalIP:
|
|
- mov loc2 = ip;;
|
|
- add loc2 = StaticComeBackFromPALCall - StaticGetPALLocalIP,loc2;;
|
|
- mov b0 = loc2 // return address after Pal call
|
|
- mov r28 = in1 // get the input parameters to PAL call
|
|
- mov r29 = in2
|
|
- mov r30 = in3;;
|
|
- mov r31 = in4
|
|
- mov b5 = in0;; // get the PalProcEntrypt from input
|
|
- br.sptk b5 // Take the plunge.
|
|
-
|
|
-StaticComeBackFromPALCall:
|
|
-
|
|
- mov psr.l = loc5;;
|
|
- srlz.d;; // Needs data serailization.
|
|
- srlz.i;; // Needs instruction serailization.
|
|
-
|
|
- mov b5 = loc3
|
|
- mov r2 = loc4
|
|
- mov r1 = loc7
|
|
-
|
|
- NESTED_RETURN
|
|
-
|
|
-PROCEDURE_EXIT(MakeStaticPALCall)
|
|
-
|
|
-
|
|
-//-----------------------------------------------------------------------------
|
|
-//++
|
|
-// MakeStackedPALCall
|
|
-//
|
|
-// This routine is called whenever an architected stacked calling convention
|
|
-// based PAL call is to be made. This call is made after memory is available.
|
|
-// Although stacked calls could be made directly from 'C', there is a PAL
|
|
-// requirement which forces the index to be in GR28 and hence this stub is
|
|
-// needed
|
|
-//
|
|
-// Arguments : All parameters set up to do stacted PAL call.
|
|
-//
|
|
-// On Entry :
|
|
-// in0: PAL_PROC entrypoint
|
|
-// in1-in4 : PAL_PROC arguments
|
|
-//
|
|
-// Return Value:
|
|
-//
|
|
-// As per stacked calling conventions.
|
|
-//
|
|
-//--
|
|
-//---------------------------------------------------------------------------
|
|
-PROCEDURE_ENTRY(MakeStackedPALCall)
|
|
-
|
|
- NESTED_SETUP (5,8,4,0)
|
|
- mov loc3 = b5
|
|
- mov loc4 = r2
|
|
- mov loc7 = r1
|
|
- mov r2 = psr;;
|
|
- mov loc5 = r2;;
|
|
- dep r2 = r0,r2,14,1;; // psr.i = 0
|
|
- mov psr.l = r2
|
|
- srlz.d;; // Needs data serailization.
|
|
- srlz.i;; // Needs instruction serailization.
|
|
-
|
|
-StackedGetPALLocalIP:
|
|
- mov r28 = in1 // get the input parameters to PAL call
|
|
- mov out0 = in1
|
|
- mov out1 = in2;;
|
|
- mov out2 = in3
|
|
- mov out3 = in4
|
|
- mov b5 = in0;; // get the PalProcEntrypt from input
|
|
- br.call.dpnt b0=b5;; // Take the plunge.
|
|
-
|
|
-StackedComeBackFromPALCall:
|
|
-
|
|
- mov psr.l = loc5;;
|
|
- srlz.d;; // Needs data serailization.
|
|
- srlz.i;; // Needs instruction serailization.
|
|
- mov b5 = loc3
|
|
- mov r2 = loc4
|
|
- mov r1 = loc7
|
|
-
|
|
- NESTED_RETURN
|
|
-
|
|
-PROCEDURE_EXIT(MakeStackedPALCall)
|
|
-
|