summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1997-09-12 01:29:55 +0000
committerRalf Baechle <ralf@linux-mips.org>1997-09-12 01:29:55 +0000
commit545f435ebcfd94a1e7c20b46efe81b4d6ac4e698 (patch)
treee9ce4bc598d06374bda906f18365984bf22a526a /include/asm-sparc
parent4291a610eef89d0d5c69d9a10ee6560e1aa36c74 (diff)
Merge with Linux 2.1.55. More bugfixes and goodies from my private
CVS archive.
Diffstat (limited to 'include/asm-sparc')
-rw-r--r--include/asm-sparc/elf.h9
-rw-r--r--include/asm-sparc/namei.h65
-rw-r--r--include/asm-sparc/pgtable.h3
3 files changed, 42 insertions, 35 deletions
diff --git a/include/asm-sparc/elf.h b/include/asm-sparc/elf.h
index 46cd67f37..326d7d8e9 100644
--- a/include/asm-sparc/elf.h
+++ b/include/asm-sparc/elf.h
@@ -1,4 +1,4 @@
-/* $Id: elf.h,v 1.5 1996/08/08 00:06:13 ecd Exp $ */
+/* $Id: elf.h,v 1.7 1997/08/29 17:04:34 richard Exp $ */
#ifndef __ASMSPARC_ELF_H
#define __ASMSPARC_ELF_H
@@ -30,5 +30,12 @@ typedef unsigned long elf_fpregset_t;
#define USE_ELF_CORE_DUMP
#define ELF_EXEC_PAGESIZE 4096
+/* 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 (TASK_UNMAPPED_BASE + 0x1000000)
+
#endif /* !(__ASMSPARC_ELF_H) */
diff --git a/include/asm-sparc/namei.h b/include/asm-sparc/namei.h
index 8ce53ae35..d8f559440 100644
--- a/include/asm-sparc/namei.h
+++ b/include/asm-sparc/namei.h
@@ -1,4 +1,4 @@
-/* $Id: namei.h,v 1.6 1997/07/17 02:24:25 davem Exp $
+/* $Id: namei.h,v 1.8 1997/09/05 12:38:51 jj Exp $
* linux/include/asm-sparc/namei.h
*
* Routines to handle famous /usr/gnemul/s*.
@@ -11,41 +11,40 @@
#define SPARC_BSD_EMUL "usr/gnemul/sunos/"
#define SPARC_SOL_EMUL "usr/gnemul/solaris/"
-#if 0 /* XXX FIXME */
-
-extern int __namei(int, const char *, struct inode *, char *, struct inode **,
- struct inode **, struct qstr *, struct dentry **, int *);
-
-static __inline__ int
-__prefix_namei(int retrieve_mode, const char * name, struct inode * base,
- char * buf, struct inode ** res_dir, struct inode ** res_inode,
- struct qstr * last_name, struct dentry ** last_entry,
- int * last_error)
+static inline struct dentry *
+__sparc_lookup_dentry(const char *name, int follow_link)
{
int error;
-
- if (!(current->personality & (PER_BSD|PER_SVR4)))
- return -ENOENT;
-
- while (*name == '/')
- name++;
-
- atomic_inc(&current->fs->root->i_count);
- error = __namei(NAM_FOLLOW_LINK,
- current->personality & PER_BSD ?
- SPARC_BSD_EMUL : SPARC_SOL_EMUL, current->fs->root,
- buf, NULL, &base, NULL, NULL, NULL);
- if (error)
- return error;
-
- error = __namei(retrieve_mode, name, base, buf, res_dir, res_inode,
- last_name, last_entry, last_error);
- if (error)
- return error;
-
- return 0;
+ struct dentry *base;
+
+ switch (current->personality) {
+ case PER_BSD:
+ case PER_SVR4:
+ break;
+ default:
+ return ERR_PTR(-ENOENT);
+ }
+
+ base = lookup_dentry ((current->personality == PER_BSD) ?
+ SPARC_BSD_EMUL : SPARC_SOL_EMUL,
+ dget (current->fs->root), 1);
+
+ if (IS_ERR (base)) return base;
+
+ base = lookup_dentry (name, base, follow_link);
+
+ if (IS_ERR (base)) return base;
+
+ if (!base->d_inode) {
+ dput(base);
+ return ERR_PTR(-ENOENT);
+ }
+
+ return base;
}
-#endif /* XXX FIXME */
+#define __prefix_lookup_dentry(name, follow_link) \
+ dentry = __sparc_lookup_dentry (name, follow_link); \
+ if (!IS_ERR (dentry)) return dentry;
#endif /* __SPARC_NAMEI_H */
diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h
index de8ce5687..dd6428edf 100644
--- a/include/asm-sparc/pgtable.h
+++ b/include/asm-sparc/pgtable.h
@@ -1,4 +1,4 @@
-/* $Id: pgtable.h,v 1.62 1997/06/27 14:55:00 jj Exp $ */
+/* $Id: pgtable.h,v 1.63 1997/08/13 04:44:15 paulus Exp $ */
#ifndef _SPARC_PGTABLE_H
#define _SPARC_PGTABLE_H
@@ -298,6 +298,7 @@ extern void (*flush_cache_mm)(struct mm_struct *);
extern void (*flush_cache_range)(struct mm_struct *, unsigned long start,
unsigned long end);
extern void (*flush_cache_page)(struct vm_area_struct *, unsigned long address);
+#define flush_icache_range(start, end) do { } while (0)
extern void (*flush_tlb_all)(void);
extern void (*flush_tlb_mm)(struct mm_struct *);