00001 #ifndef _GPXE_EFI_UACCESS_H
00002 #define _GPXE_EFI_UACCESS_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013 FILE_LICENCE ( GPL2_OR_LATER );
00014
00015 #ifdef UACCESS_EFI
00016 #define UACCESS_PREFIX_efi
00017 #else
00018 #define UACCESS_PREFIX_efi __efi_
00019 #endif
00020
00021
00022
00023
00024
00025
00026
00027 static inline __always_inline userptr_t
00028 UACCESS_INLINE ( efi, phys_to_user ) ( unsigned long phys_addr ) {
00029 return phys_addr;
00030 }
00031
00032
00033
00034
00035
00036
00037
00038
00039 static inline __always_inline unsigned long
00040 UACCESS_INLINE ( efi, user_to_phys ) ( userptr_t userptr, off_t offset ) {
00041 return ( userptr + offset );
00042 }
00043
00044 static inline __always_inline userptr_t
00045 UACCESS_INLINE ( efi, virt_to_user ) ( volatile const void *addr ) {
00046 return trivial_virt_to_user ( addr );
00047 }
00048
00049 static inline __always_inline void *
00050 UACCESS_INLINE ( efi, user_to_virt ) ( userptr_t userptr, off_t offset ) {
00051 return trivial_user_to_virt ( userptr, offset );
00052 }
00053
00054 static inline __always_inline userptr_t
00055 UACCESS_INLINE ( efi, userptr_add ) ( userptr_t userptr, off_t offset ) {
00056 return trivial_userptr_add ( userptr, offset );
00057 }
00058
00059 static inline __always_inline void
00060 UACCESS_INLINE ( efi, memcpy_user ) ( userptr_t dest, off_t dest_off,
00061 userptr_t src, off_t src_off,
00062 size_t len ) {
00063 trivial_memcpy_user ( dest, dest_off, src, src_off, len );
00064 }
00065
00066 static inline __always_inline void
00067 UACCESS_INLINE ( efi, memmove_user ) ( userptr_t dest, off_t dest_off,
00068 userptr_t src, off_t src_off,
00069 size_t len ) {
00070 trivial_memmove_user ( dest, dest_off, src, src_off, len );
00071 }
00072
00073 static inline __always_inline void
00074 UACCESS_INLINE ( efi, memset_user ) ( userptr_t buffer, off_t offset,
00075 int c, size_t len ) {
00076 trivial_memset_user ( buffer, offset, c, len );
00077 }
00078
00079 static inline __always_inline size_t
00080 UACCESS_INLINE ( efi, strlen_user ) ( userptr_t buffer, off_t offset ) {
00081 return trivial_strlen_user ( buffer, offset );
00082 }
00083
00084 static inline __always_inline off_t
00085 UACCESS_INLINE ( efi, memchr_user ) ( userptr_t buffer, off_t offset,
00086 int c, size_t len ) {
00087 return trivial_memchr_user ( buffer, offset, c, len );
00088 }
00089
00090 #endif