89 void *
src,
size_t n ) {
103 unsigned int src_off,
size_t n ) {
114 #define put_real( var, dest_seg, dest_off ) \ 115 copy_to_real ( (dest_seg), (dest_off), &(var), sizeof (var) ) 124 #define get_real( var, src_seg, src_off ) \ 125 copy_from_real ( &(var), (src_seg), (src_off), sizeof (var) ) uint16_t segment
Code segment.
FILE_LICENCE(GPL2_OR_LATER_OR_UBDL)
static __always_inline void copy_from_user(void *dest, userptr_t src, off_t src_off, size_t len)
Copy data from user buffer.
userptr_t phys_to_user(unsigned long phys_addr)
Convert physical address to user pointer.
Access to external ("user") memory.
uint32_t userptr_t
A pointer to a user buffer.
static __always_inline void off_t userptr_t off_t src_off
static __always_inline void copy_to_real(unsigned int dest_seg, unsigned int dest_off, void *src, size_t n)
Copy data to base memory.
#define __always_inline
Declare a function to be always inline.
static __always_inline void copy_to_user(userptr_t dest, off_t dest_off, const void *src, size_t len)
Copy data to user buffer.
static __always_inline void off_t dest_off
if(len >=6 *4) __asm__ __volatile__("movsl" if(len >=5 *4) __asm__ __volatile__("movsl" if(len >=4 *4) __asm__ __volatile__("movsl" if(len >=3 *4) __asm__ __volatile__("movsl" if(len >=2 *4) __asm__ __volatile__("movsl" if(len >=1 *4) __asm__ __volatile__("movsl" if((len % 4) >=2) __asm__ __volatile__("movsw" if((len % 2) >=1) __asm__ __volatile__("movsb" return dest
static __always_inline userptr_t real_to_user(unsigned int segment, unsigned int offset)
Convert segment:offset address to user buffer.
uint16_t offset
Offset to command line.
static __always_inline void copy_from_real(void *dest, unsigned int src_seg, unsigned int src_off, size_t n)
Copy data to base memory.