patch-2.4.0-test9 linux/drivers/acpi/include/acenv.h
Next file: linux/drivers/acpi/include/acevents.h
Previous file: linux/drivers/acpi/include/acdispat.h
Back to the patch index
Back to the overall index
- Lines: 269
- Date:
Fri Sep 15 21:37:23 2000
- Orig file:
v2.4.0-test8/linux/drivers/acpi/include/acenv.h
- Orig date:
Thu Jul 6 01:22:24 2000
diff -u --recursive --new-file v2.4.0-test8/linux/drivers/acpi/include/acenv.h linux/drivers/acpi/include/acenv.h
@@ -1,7 +1,7 @@
-
/******************************************************************************
*
* Name: acenv.h - Generation environment specific items
+ * $Revision: 53 $
*
*****************************************************************************/
@@ -75,10 +75,7 @@
#include <linux/kernel.h>
#include <linux/ctype.h>
#include <asm/system.h>
-
-/* Single threaded */
-
-#define ACPI_APPLICATION
+#include <asm/atomic.h>
/* Use native Linux string library */
@@ -88,13 +85,27 @@
#define strtoul simple_strtoul
+/* Linux clib doesn't to strupr, but we do. */
+char *
+strupr(char *str);
+
+#else
+
+#ifdef _AED_EFI
+
+#include <efi.h>
+#include <efistdarg.h>
+#include <efilib.h>
+
#else
+
/* All other environments */
#define ACPI_USE_STANDARD_HEADERS
#endif
+#endif
/******************************************************************************
@@ -117,6 +128,7 @@
#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
+#include <ctype.h>
#endif /* ACPI_USE_STANDARD_HEADERS */
@@ -124,20 +136,20 @@
* We will be linking to the standard Clib functions
*/
-#define STRSTR(s1,s2) strstr((char *) (s1), (char *) (s2))
-#define STRUPR(s) strupr((char *) (s))
-#define STRLEN(s) strlen((char *) (s))
-#define STRCPY(d,s) strcpy((char *) (d), (char *) (s))
-#define STRNCPY(d,s,n) strncpy((char *) (d), (char *) (s), (n))
-#define STRNCMP(d,s,n) strncmp((char *) (d), (char *) (s), (n))
-#define STRCMP(d,s) strcmp((char *) (d), (char *) (s))
-#define STRCAT(d,s) strcat((char *) (d), (char *) (s))
-#define STRNCAT(d,s,n) strncat((char *) (d), (char *) (s), (n))
-#define STRTOUL(d,s,n) strtoul((char *) (d), (char **) (s), (n))
-#define MEMCPY(d,s,n) memcpy(d, s, (size_t) n)
-#define MEMSET(d,s,n) memset(d, s, (size_t) n)
-#define TOUPPER toupper
-#define TOLOWER tolower
+#define STRSTR(s1,s2) strstr((s1), (s2))
+#define STRUPR(s) strupr((s))
+#define STRLEN(s) strlen((s))
+#define STRCPY(d,s) strcpy((d), (s))
+#define STRNCPY(d,s,n) strncpy((d), (s), (n))
+#define STRNCMP(d,s,n) strncmp((d), (s), (n))
+#define STRCMP(d,s) strcmp((d), (s))
+#define STRCAT(d,s) strcat((d), (s))
+#define STRNCAT(d,s,n) strncat((d), (s), (n))
+#define STRTOUL(d,s,n) strtoul((d), (s), (n))
+#define MEMCPY(d,s,n) memcpy((d), (s), (n))
+#define MEMSET(d,s,n) memset((d), (s), (n))
+#define TOUPPER toupper
+#define TOLOWER tolower
/******************************************************************************
@@ -165,37 +177,35 @@
* Storage alignment properties
*/
-#define _AUPBND (sizeof(int) - 1)
-#define _ADNBND (sizeof(int) - 1)
+#define _AUPBND (sizeof(int) - 1)
+#define _ADNBND (sizeof(int) - 1)
/*
* Variable argument list macro definitions
*/
-#define _bnd(X, bnd) (((sizeof(X)) + (bnd)) & (~(bnd)))
-#define va_arg(ap, T) (*(T *)(((ap) += ((_bnd(T, _AUPBND))) \
- - (_bnd(T, _ADNBND)))))
-#define va_end(ap) (void)0
-#define va_start(ap, A) (void) ((ap) = (((char *)&(A)) \
- + (_bnd(A, _AUPBND))))
+#define _bnd(X, bnd) (((sizeof(X)) + (bnd)) & (~(bnd)))
+#define va_arg(ap, T) (*(T *)(((ap)+=((_bnd(T, _AUPBND)))-(_bnd(T,_ADNBND)))))
+#define va_end(ap) (void)0
+#define va_start(ap, A) (void)((ap)=(((char*)&(A))+(_bnd(A,_AUPBND))))
#endif /* va_arg */
-#define STRSTR(s1,s2) acpi_cm_strstr ((char *) (s1), (char *) (s2))
-#define STRUPR(s) acpi_cm_strupr ((char *) (s))
-#define STRLEN(s) acpi_cm_strlen ((char *) (s))
-#define STRCPY(d,s) acpi_cm_strcpy ((char *) (d), (char *) (s))
-#define STRNCPY(d,s,n) acpi_cm_strncpy ((char *) (d), (char *) (s), (n))
-#define STRNCMP(d,s,n) acpi_cm_strncmp ((char *) (d), (char *) (s), (n))
-#define STRCMP(d,s) acpi_cm_strcmp ((char *) (d), (char *) (s))
-#define STRCAT(d,s) acpi_cm_strcat ((char *) (d), (char *) (s))
-#define STRNCAT(d,s,n) acpi_cm_strncat ((char *) (d), (char *) (s), (n))
-#define STRTOUL(d,s,n) acpi_cm_strtoul ((char *) (d), (char **) (s), (n))
-#define MEMCPY(d,s,n) acpi_cm_memcpy ((void *) (d), (const void *) (s), (n))
-#define MEMSET(d,v,n) acpi_cm_memset ((void *) (d), (v), (n))
-#define TOUPPER acpi_cm_to_upper
-#define TOLOWER acpi_cm_to_lower
+#define STRSTR(s1,s2) acpi_cm_strstr ((s1), (s2))
+#define STRUPR(s) acpi_cm_strupr ((s))
+#define STRLEN(s) acpi_cm_strlen ((s))
+#define STRCPY(d,s) acpi_cm_strcpy ((d), (s))
+#define STRNCPY(d,s,n) acpi_cm_strncpy ((d), (s), (n))
+#define STRNCMP(d,s,n) acpi_cm_strncmp ((d), (s), (n))
+#define STRCMP(d,s) acpi_cm_strcmp ((d), (s))
+#define STRCAT(d,s) acpi_cm_strcat ((d), (s))
+#define STRNCAT(d,s,n) acpi_cm_strncat ((d), (s), (n))
+#define STRTOUL(d,s,n) acpi_cm_strtoul ((d), (s),(n))
+#define MEMCPY(d,s,n) acpi_cm_memcpy ((d), (s), (n))
+#define MEMSET(d,v,n) acpi_cm_memset ((d), (v), (n))
+#define TOUPPER acpi_cm_to_upper
+#define TOLOWER acpi_cm_to_lower
#endif /* ACPI_USE_SYSTEM_CLIBRARY */
@@ -217,27 +227,90 @@
#ifdef __GNUC__
+
#ifdef __ia64__
-#define _IA64
-#endif
+
+/* Single threaded */
+#define ACPI_APPLICATION
#define ACPI_ASM_MACROS
#define causeinterrupt(level)
#define BREAKPOINT3
#define disable() __cli()
#define enable() __sti()
-#define halt() __asm__ __volatile__ ("sti; hlt":::"memory")
#define wbinvd()
+/*! [Begin] no source code translation */
+#include <asm/pal.h>
+
+/* PAL_HALT[_LIGHT] */
+#define halt() ia64_pal_halt_light()
+
+/* PAL_HALT */
+#define safe_halt() ia64_pal_halt(1)
+
+#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
+ do { \
+ __asm__ volatile ("1: ld4 r29=%1\n" \
+ ";;\n" \
+ "mov ar.ccv=r29\n" \
+ "mov r2=r29\n" \
+ "shr.u r30=r29,1\n" \
+ "and r29=-4,r29\n" \
+ ";;\n" \
+ "add r29=2,r29\n" \
+ "and r30=1,r30\n" \
+ ";;\n" \
+ "add r29=r29,r30\n" \
+ ";;\n" \
+ "cmpxchg4.acq r30=%1,r29,ar.ccv\n" \
+ ";;\n" \
+ "cmp.eq p6,p7=r2,r30\n" \
+ "(p7) br.dpnt.few 1b\n" \
+ "cmp.gt p8,p9=3,r29\n" \
+ ";;\n" \
+ "(p8) mov %0=-1\n" \
+ "(p9) mov %0=r0\n" \
+ :"=r"(Acq):"m" __atomic_fool_gcc((GLptr)):"r2","r29","r30","memory"); \
+ } while (0)
+
+#define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Acq) \
+ do { \
+ __asm__ volatile ("1: ld4 r29=%1\n" \
+ ";;\n" \
+ "mov ar.ccv=r29\n" \
+ "mov r2=r29\n" \
+ "and r29=-4,r29\n" \
+ ";;\n" \
+ "cmpxchg4.acq r30=%1,r29,ar.ccv\n" \
+ ";;\n" \
+ "cmp.eq p6,p7=r2,r30\n" \
+ "(p7) br.dpnt.few 1b\n" \
+ "and %0=1,r2\n" \
+ ";;\n" \
+ :"=r"(Acq):"m" __atomic_fool_gcc((GLptr)):"r2","r29","r30","memory"); \
+ } while (0)
+/*! [End] no source code translation !*/
+
+#else /* DO IA32 */
+
+#define ACPI_ASM_MACROS
+#define causeinterrupt(level)
+#define BREAKPOINT3
+#define disable() __cli()
+#define enable() __sti()
+#define halt() __asm__ __volatile__ ("sti; hlt":::"memory")
+#define wbinvd()
/*! [Begin] no source code translation
*
* A brief explanation as GNU inline assembly is a bit hairy
* %0 is the output parameter in EAX ("=a")
- * %1 and %2 are the input parameters in ECX ("c") and an immediate value ("i") respectively
+ * %1 and %2 are the input parameters in ECX ("c")
+ * and an immediate value ("i") respectively
* All actual register references are preceded with "%%" as in "%%edx"
* Immediate values in the assembly are preceded by "$" as in "$0x1"
- * The final asm parameter is the non-output registers altered by the operation
+ * The final asm parameter are the operation altered non-output registers.
*/
#define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acq) \
do { \
@@ -267,12 +340,12 @@
} while(0)
/*! [End] no source code translation !*/
+#endif /* IA 32 */
#endif /* __GNUC__ */
-#ifndef ACPI_ASM_MACROS
-
/* Unrecognized compiler, use defaults */
+#ifndef ACPI_ASM_MACROS
#define ACPI_ASM_MACROS
#define causeinterrupt(level)
@@ -280,7 +353,6 @@
#define disable()
#define enable()
#define halt()
-
#define ACPI_ACQUIRE_GLOBAL_LOCK(Glptr, acq)
#define ACPI_RELEASE_GLOBAL_LOCK(Glptr, acq)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)