diff options
Diffstat (limited to 'include/asm-alpha')
-rw-r--r-- | include/asm-alpha/elf.h | 7 | ||||
-rw-r--r-- | include/asm-alpha/floppy.h | 2 | ||||
-rw-r--r-- | include/asm-alpha/pgtable.h | 1 | ||||
-rw-r--r-- | include/asm-alpha/uaccess.h | 14 |
4 files changed, 23 insertions, 1 deletions
diff --git a/include/asm-alpha/elf.h b/include/asm-alpha/elf.h index 0cf5ecbec..bca9bbfea 100644 --- a/include/asm-alpha/elf.h +++ b/include/asm-alpha/elf.h @@ -34,6 +34,13 @@ typedef elf_fpreg_t elf_fpregset_t[ELF_NFPREG]; #define USE_ELF_CORE_DUMP #define ELF_EXEC_PAGESIZE 8192 +/* This is the location that an ET_DYN program is loaded if exec'ed. Typical + use of this is to invoke "./ld.so someprog" to test out a new version of + the loader. We need to make sure that it is out of the way of the program + that it will "exec", and that there is sufficient room for the brk. */ + +#define ELF_ET_DYN_BASE (2 * TASK_SIZE / 3) + /* $0 is set by ld.so to a pointer to a function which might be registered using atexit. This provides a mean for the dynamic linker to call DT_FINI functions for shared libraries that have diff --git a/include/asm-alpha/floppy.h b/include/asm-alpha/floppy.h index b9471de7b..9be100c4f 100644 --- a/include/asm-alpha/floppy.h +++ b/include/asm-alpha/floppy.h @@ -48,6 +48,8 @@ static int FDC2 = -1; #define N_FDC 2 #define N_DRIVE 8 +#define FLOPPY_MOTOR_MASK 0xf0 + /* * Most Alphas have no problems with floppy DMA crossing 64k borders. Sigh... */ diff --git a/include/asm-alpha/pgtable.h b/include/asm-alpha/pgtable.h index 7d80c32f8..fdb1e4d0b 100644 --- a/include/asm-alpha/pgtable.h +++ b/include/asm-alpha/pgtable.h @@ -18,6 +18,7 @@ #define flush_cache_range(mm, start, end) do { } while (0) #define flush_cache_page(vma, vmaddr) do { } while (0) #define flush_page_to_ram(page) do { } while (0) +#define flush_icache_range(start, end) do { } while (0) /* * Force a context reload. This is needed when we diff --git a/include/asm-alpha/uaccess.h b/include/asm-alpha/uaccess.h index 870fd290c..a76b1fc38 100644 --- a/include/asm-alpha/uaccess.h +++ b/include/asm-alpha/uaccess.h @@ -10,6 +10,10 @@ * performed or not. If get_fs() == USER_DS, checking is performed, with * get_fs() == KERNEL_DS, checking is bypassed. * + * Or at least it did once upon a time. Nowadays it is a mask that + * defines which bits of the address space are off limits. This is a + * wee bit faster than the above. + * * For historical reasons, these macros are grossly misnamed. */ @@ -20,9 +24,17 @@ #define VERIFY_WRITE 1 #define get_fs() (current->tss.fs) -#define set_fs(x) (current->tss.fs = (x)) #define get_ds() (KERNEL_DS) +/* Our scheme relies on all bits being preserved. Trap those evil + Intellists in their plot to use unsigned short. */ + +extern unsigned long __bad_fs_size(void); + +#define set_fs(x) (current->tss.fs = \ + sizeof(x) == sizeof(unsigned long) ? (x) \ + : __bad_fs_size()) + /* * Is a address valid? This does a straighforward calculation rather * than tests. |