mirror of
https://sourceware.org/git/glibc.git
synced 2024-12-19 09:20:07 +00:00
update from main archive 960904
This commit is contained in:
parent
1713bc849f
commit
11309adfce
@ -186,13 +186,17 @@ _dl_runtime_resolve:
|
|||||||
#define RTLD_START asm ("\
|
#define RTLD_START asm ("\
|
||||||
.text
|
.text
|
||||||
.globl _start
|
.globl _start
|
||||||
.globl _dl_start_user
|
.ent _start
|
||||||
_start:
|
_start:
|
||||||
br $gp,0f
|
br $gp, 0f
|
||||||
0: ldgp $gp, 0($gp)
|
0: ldgp $gp, 0($gp)
|
||||||
/* Pass pointer to argument block to _dl_start. */
|
/* Pass pointer to argument block to _dl_start. */
|
||||||
mov $sp, $16
|
mov $sp, $16
|
||||||
bsr $26, _dl_start..ng
|
bsr $26, _dl_start..ng
|
||||||
|
.end _start
|
||||||
|
/* FALLTHRU */
|
||||||
|
.globl _dl_start_user
|
||||||
|
.ent _dl_start_user
|
||||||
_dl_start_user:
|
_dl_start_user:
|
||||||
/* Save the user entry point address in s0. */
|
/* Save the user entry point address in s0. */
|
||||||
mov $0, $9
|
mov $0, $9
|
||||||
@ -225,7 +229,8 @@ _dl_start_user:
|
|||||||
lda $0, _dl_fini
|
lda $0, _dl_fini
|
||||||
/* Jump to the user's entry point. */
|
/* Jump to the user's entry point. */
|
||||||
mov $9, $27
|
mov $9, $27
|
||||||
jmp ($9)");
|
jmp ($9)
|
||||||
|
.end _dl_start_user");
|
||||||
|
|
||||||
/* Nonzero iff TYPE describes relocation of a PLT entry, so
|
/* Nonzero iff TYPE describes relocation of a PLT entry, so
|
||||||
PLT entries should not be allowed to define the value. */
|
PLT entries should not be allowed to define the value. */
|
||||||
@ -377,8 +382,6 @@ elf_machine_rela (struct link_map *map,
|
|||||||
sym_value += reloc->r_addend;
|
sym_value += reloc->r_addend;
|
||||||
*reloc_addr = sym_value;
|
*reloc_addr = sym_value;
|
||||||
}
|
}
|
||||||
else if (r_info == R_ALPHA_COPY)
|
|
||||||
memcpy (reloc_addr, (void *) sym_value, sym->st_size);
|
|
||||||
else
|
else
|
||||||
assert (! "unexpected dynamic reloc type");
|
assert (! "unexpected dynamic reloc type");
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,9 @@ Cambridge, MA 02139, USA. */
|
|||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.globl _start /* what ELF wants */
|
|
||||||
.globl __start /* for backwards (ECOFF) comatibility */
|
|
||||||
.align 3
|
.align 3
|
||||||
.ent __start, 0
|
.ent _start, 0
|
||||||
_start:
|
_start:
|
||||||
__start:
|
|
||||||
.frame fp, 0, zero
|
.frame fp, 0, zero
|
||||||
mov zero, fp
|
mov zero, fp
|
||||||
br gp, 1f
|
br gp, 1f
|
||||||
@ -62,7 +59,6 @@ __start:
|
|||||||
mov a1, s1
|
mov a1, s1
|
||||||
mov a2, s2
|
mov a2, s2
|
||||||
|
|
||||||
#ifdef HAVE_INITFINI
|
|
||||||
/* Call _init, the entry point to our own .init section. */
|
/* Call _init, the entry point to our own .init section. */
|
||||||
jsr ra, _init
|
jsr ra, _init
|
||||||
ldgp gp, 0(ra)
|
ldgp gp, 0(ra)
|
||||||
@ -71,16 +67,12 @@ __start:
|
|||||||
lda a0, _fini
|
lda a0, _fini
|
||||||
jsr ra, atexit
|
jsr ra, atexit
|
||||||
ldgp gp, 0(ra)
|
ldgp gp, 0(ra)
|
||||||
#else
|
|
||||||
/* initialize constructors: */
|
/* Call the user's main and exit with its return value. */
|
||||||
jsr ra, __main
|
|
||||||
ldgp gp, 0(ra)
|
|
||||||
#endif
|
|
||||||
mov s0, a0
|
mov s0, a0
|
||||||
mov s1, a1
|
mov s1, a1
|
||||||
mov s2, a2
|
mov s2, a2
|
||||||
|
|
||||||
/* Call the user's main and exit with its return value. */
|
|
||||||
jsr ra, main
|
jsr ra, main
|
||||||
ldgp gp, 0(ra)
|
ldgp gp, 0(ra)
|
||||||
|
|
||||||
@ -90,7 +82,10 @@ __start:
|
|||||||
/* Die very horribly if exit returns. Call_pal hlt is callable from
|
/* Die very horribly if exit returns. Call_pal hlt is callable from
|
||||||
kernel mode only; this will result in an illegal instruction trap. */
|
kernel mode only; this will result in an illegal instruction trap. */
|
||||||
call_pal 0
|
call_pal 0
|
||||||
END(__start)
|
.end _start
|
||||||
|
|
||||||
|
/* For ECOFF backwards compatibility. */
|
||||||
|
weak_alias(_start, __start)
|
||||||
|
|
||||||
/* Define a symbol for the first piece of initialized data. */
|
/* Define a symbol for the first piece of initialized data. */
|
||||||
.data
|
.data
|
||||||
|
@ -16,7 +16,6 @@ License along with the GNU C Library; see the file COPYING.LIB. If
|
|||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
Cambridge, MA 02139, USA. */
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include <ansidecl.h>
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#ifndef FUNC
|
#ifndef FUNC
|
||||||
@ -29,7 +28,14 @@ Cambridge, MA 02139, USA. */
|
|||||||
#define __CONCATX(a,b) __CONCAT(a,b)
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
float_type
|
float_type
|
||||||
DEFUN(__CONCATX(__kernel_,FUNC), (x, y), float_type x AND float_type y)
|
__CONCATX(__kernel_,FUNC) (x, y)
|
||||||
|
float_type x;
|
||||||
|
float_type y;
|
||||||
{
|
{
|
||||||
return __CONCATX(__,FUNC) (x + y);
|
float_type sin_x, cos_x, sin_y, cos_y;
|
||||||
|
__asm__ __volatile__ ("fsincosx %2,%0:%1" : "=f" (cos_x), "=f" (sin_x)
|
||||||
|
: "f" (x));
|
||||||
|
__asm__ __volatile__ ("fsincosx %2,%0:%1" : "=f" (cos_y), "=f" (sin_y)
|
||||||
|
: "f" (y));
|
||||||
|
return cos_x * cos_y - sin_x * sin_y;
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ License along with the GNU C Library; see the file COPYING.LIB. If
|
|||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
Cambridge, MA 02139, USA. */
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include <ansidecl.h>
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#ifndef FUNC
|
#ifndef FUNC
|
||||||
@ -29,8 +28,17 @@ Cambridge, MA 02139, USA. */
|
|||||||
#define __CONCATX(a,b) __CONCAT(a,b)
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
float_type
|
float_type
|
||||||
DEFUN(__CONCATX(__kernel_,FUNC), (x, y, iy),
|
__CONCATX(__kernel_,FUNC) (x, y, iy)
|
||||||
float_type x AND float_type y AND int iy)
|
float_type x;
|
||||||
|
float_type y;
|
||||||
|
int iy;
|
||||||
{
|
{
|
||||||
return __CONCATX(__,FUNC) (x + y);
|
float_type sin_x, cos_x, sin_y, cos_y;
|
||||||
|
if (iy == 0)
|
||||||
|
return __m81_u_(__CONCATX(__,FUNC)) (x);
|
||||||
|
__asm__ __volatile__ ("fsincosx %2,%0:%1" : "=f" (cos_x), "=f" (sin_x)
|
||||||
|
: "f" (x));
|
||||||
|
__asm__ __volatile__ ("fsincosx %2,%0:%1" : "=f" (cos_y), "=f" (sin_y)
|
||||||
|
: "f" (y));
|
||||||
|
return sin_x * cos_y + cos_x * sin_y;
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,6 @@ License along with the GNU C Library; see the file COPYING.LIB. If
|
|||||||
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
Cambridge, MA 02139, USA. */
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
#include <ansidecl.h>
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#ifndef FUNC
|
#ifndef FUNC
|
||||||
@ -29,11 +28,16 @@ Cambridge, MA 02139, USA. */
|
|||||||
#define __CONCATX(a,b) __CONCAT(a,b)
|
#define __CONCATX(a,b) __CONCAT(a,b)
|
||||||
|
|
||||||
float_type
|
float_type
|
||||||
DEFUN(__CONCATX(__kernel_,FUNC), (x, y, iy),
|
__CONCATX(__kernel_,FUNC) (x, y, iy)
|
||||||
float_type x AND float_type y AND int iy)
|
float_type x;
|
||||||
|
float_type y;
|
||||||
|
int iy;
|
||||||
{
|
{
|
||||||
if (iy == 1)
|
float_type tan_x, tan_y;
|
||||||
return __CONCATX(__,FUNC) (x + y);
|
tan_x = __m81_u_(__CONCATX(__,FUNC)) (x);
|
||||||
|
tan_y = __m81_u_(__CONCATX(__,FUNC)) (y);
|
||||||
|
if (iy > 0)
|
||||||
|
return (tan_x + tan_y) / (1 - tan_x * tan_y);
|
||||||
else
|
else
|
||||||
return ((float_type) -1.0) / __CONCATX(__,FUNC) (x + y);
|
return (tan_x * tan_y - 1) / (tan_x + tan_y);
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1993 Free Software Foundation, Inc.
|
/* Copyright (C) 1993, 1996 Free Software Foundation, Inc.
|
||||||
Contributed by Brendan Kehoe (brendan@zen.org).
|
Contributed by Brendan Kehoe (brendan@zen.org).
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -22,6 +22,7 @@ Cambridge, MA 02139, USA. */
|
|||||||
|
|
||||||
.section .bss
|
.section .bss
|
||||||
.globl errno
|
.globl errno
|
||||||
|
.align 2
|
||||||
errno: .space 4
|
errno: .space 4
|
||||||
#ifdef __ELF__
|
#ifdef __ELF__
|
||||||
.type errno, @object
|
.type errno, @object
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
alpha/ptrace.halpha/regdef.h
|
alpha/ptrace.h alpha/regdef.h
|
||||||
ieee_get_fp_control.S ieee_set_fp_control.S
|
ieee_get_fp_control.S ieee_set_fp_control.S
|
||||||
ioperm.c
|
ioperm.c
|
||||||
init-first.h
|
init-first.h
|
||||||
clone.S
|
clone.S
|
||||||
|
sys/io.h
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
ifeq ($(subdir), misc)
|
ifeq ($(subdir), misc)
|
||||||
sysdep_headers += alpha/ptrace.h alpha/regdef.h
|
sysdep_headers += alpha/ptrace.h alpha/regdef.h sys/io.h
|
||||||
|
|
||||||
sysdep_routines += ieee_get_fp_control ieee_set_fp_control \
|
sysdep_routines += ieee_get_fp_control ieee_set_fp_control \
|
||||||
sethae ioperm osf_sigprocmask fstatfs statfs llseek
|
sethae ioperm osf_sigprocmask fstatfs statfs llseek
|
||||||
|
@ -1,12 +1,29 @@
|
|||||||
/* This fragment is invoked in the stack context of program start.
|
/* The job of this fragment it to find argc and friends for INIT.
|
||||||
Its job is to set up a pointer to argc as an argument, pass
|
This is done in one of two ways: either in the stack context
|
||||||
control to `INIT', and, if necessary, clean up after the call
|
of program start, or having dlopen pass them in. */
|
||||||
to leave the stack in the same condition it was found in. */
|
|
||||||
|
|
||||||
#define SYSDEP_CALL_INIT(NAME, INIT) \
|
#define SYSDEP_CALL_INIT(NAME, INIT) \
|
||||||
asm(".globl " #NAME "\n" \
|
asm(".weak _dl_starting_up\n\t" \
|
||||||
#NAME ":\n\t" \
|
".globl " #NAME "\n\t" \
|
||||||
"ldgp $29, 0($27)\n\t" \
|
".ent " #NAME "\n" \
|
||||||
".prologue 1\n\t" \
|
#NAME ":\n\t" \
|
||||||
"mov $30, $16\n\t" \
|
"ldgp $29, 0($27)\n\t" \
|
||||||
"br $31, " #INIT "..ng");
|
".prologue 1\n\t" \
|
||||||
|
".set at\n\t" \
|
||||||
|
/* Are we a dynamic libc being loaded into a static program? */ \
|
||||||
|
"lda $0, _dl_starting_up\n\t" \
|
||||||
|
"beq $0, 1f\n\t" \
|
||||||
|
"ldl $0, 0($0)\n" \
|
||||||
|
"cmpeq $31, $0, $0\n" \
|
||||||
|
"1:\t" \
|
||||||
|
"stl $0, __libc_multiple_libcs\n\t" \
|
||||||
|
/* If so, argc et al are in a0-a2 already. Otherwise, load them. */ \
|
||||||
|
"bne $0, 2f\n\t" \
|
||||||
|
"ldl $16, 0($30)\n\t" \
|
||||||
|
"lda $17, 8($30)\n\t" \
|
||||||
|
"s8addq $16, $17, $18\n\t" \
|
||||||
|
"addq $18, 8, $18\n" \
|
||||||
|
"2:\t" \
|
||||||
|
"br $31, " #INIT "..ng\n\t" \
|
||||||
|
".set noat\n\t" \
|
||||||
|
".end " #NAME);
|
||||||
|
@ -84,20 +84,21 @@ struct ioswtch {
|
|||||||
static struct platform {
|
static struct platform {
|
||||||
const char *name;
|
const char *name;
|
||||||
int io_sys;
|
int io_sys;
|
||||||
|
int hae_shift;
|
||||||
unsigned long bus_memory_base;
|
unsigned long bus_memory_base;
|
||||||
unsigned long sparse_bus_memory_base;
|
unsigned long sparse_bus_memory_base;
|
||||||
} platform[] = {
|
} platform[] = {
|
||||||
{"Alcor", IOSYS_CIA, CIA_DENSE_MEM, CIA_SPARSE_MEM},
|
{"Alcor", IOSYS_CIA, 5, CIA_DENSE_MEM, CIA_SPARSE_MEM},
|
||||||
{"Avanti", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"Avanti", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
{"Cabriolet", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"Cabriolet", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
{"EB164", IOSYS_CIA, CIA_DENSE_MEM, CIA_SPARSE_MEM},
|
{"EB164", IOSYS_CIA, 5, CIA_DENSE_MEM, CIA_SPARSE_MEM},
|
||||||
{"EB64+", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"EB64+", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
{"EB66", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"EB66", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
{"EB66P", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"EB66P", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
{"Jensen", IOSYS_JENSEN, 0, JENSEN_SPARSE_MEM},
|
{"Jensen", IOSYS_JENSEN, 7, 0, JENSEN_SPARSE_MEM},
|
||||||
{"Mikasa", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"Mikasa", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
{"Mustang", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"Mustang", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
{"Noname", IOSYS_APECS, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
{"Noname", IOSYS_APECS, 5, APECS_DENSE_MEM, APECS_SPARSE_MEM},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -109,11 +110,11 @@ static struct {
|
|||||||
unsigned long base;
|
unsigned long base;
|
||||||
struct ioswtch * swp;
|
struct ioswtch * swp;
|
||||||
int sys;
|
int sys;
|
||||||
|
int hae_shift;
|
||||||
|
unsigned long bus_memory_base;
|
||||||
|
unsigned long sparse_bus_memory_base;
|
||||||
} io;
|
} io;
|
||||||
|
|
||||||
static unsigned long bus_memory_base = -1;
|
|
||||||
static unsigned long sparse_bus_memory_base = -1;
|
|
||||||
|
|
||||||
extern void __sethae (unsigned long); /* we can't use asm/io.h */
|
extern void __sethae (unsigned long); /* we can't use asm/io.h */
|
||||||
|
|
||||||
|
|
||||||
@ -335,8 +336,9 @@ init_iosys (void)
|
|||||||
{
|
{
|
||||||
if (strcmp (platform[i].name, systype) == 0)
|
if (strcmp (platform[i].name, systype) == 0)
|
||||||
{
|
{
|
||||||
bus_memory_base = platform[i].bus_memory_base;
|
io.hae_shift = platform[i].hae_shift;
|
||||||
sparse_bus_memory_base = platform[i].sparse_bus_memory_base;
|
io.bus_memory_base = platform[i].bus_memory_base;
|
||||||
|
io.sparse_bus_memory_base = platform[i].sparse_bus_memory_base;
|
||||||
io.sys = platform[i].io_sys;
|
io.sys = platform[i].io_sys;
|
||||||
if (io.sys == IOSYS_JENSEN)
|
if (io.sys == IOSYS_JENSEN)
|
||||||
io.swp = &ioswtch[0];
|
io.swp = &ioswtch[0];
|
||||||
@ -500,7 +502,7 @@ _bus_base(void)
|
|||||||
{
|
{
|
||||||
if (!io.swp && init_iosys () < 0)
|
if (!io.swp && init_iosys () < 0)
|
||||||
return -1;
|
return -1;
|
||||||
return bus_memory_base;
|
return io.bus_memory_base;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long
|
unsigned long
|
||||||
@ -508,7 +510,15 @@ _bus_base_sparse(void)
|
|||||||
{
|
{
|
||||||
if (!io.swp && init_iosys () < 0)
|
if (!io.swp && init_iosys () < 0)
|
||||||
return -1;
|
return -1;
|
||||||
return sparse_bus_memory_base;
|
return io.sparse_bus_memory_base;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
_hae_shift(void)
|
||||||
|
{
|
||||||
|
if (!io.swp && init_iosys () < 0)
|
||||||
|
return -1;
|
||||||
|
return io.hae_shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
weak_alias (_sethae, sethae);
|
weak_alias (_sethae, sethae);
|
||||||
@ -522,3 +532,4 @@ weak_alias (_outw, outw);
|
|||||||
weak_alias (_outl, outl);
|
weak_alias (_outl, outl);
|
||||||
weak_alias (_bus_base, bus_base);
|
weak_alias (_bus_base, bus_base);
|
||||||
weak_alias (_bus_base_sparse, bus_base_sparse);
|
weak_alias (_bus_base_sparse, bus_base_sparse);
|
||||||
|
weak_alias (_hae_shift, hae_shift);
|
||||||
|
59
sysdeps/unix/sysv/linux/alpha/sys/io.h
Normal file
59
sysdeps/unix/sysv/linux/alpha/sys/io.h
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
||||||
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU Library General Public License as
|
||||||
|
published by the Free Software Foundation; either version 2 of the
|
||||||
|
License, or (at your option) any later version.
|
||||||
|
|
||||||
|
The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
Library General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU Library General Public
|
||||||
|
License along with the GNU C Library; see the file COPYING.LIB. If
|
||||||
|
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
|
||||||
|
Cambridge, MA 02139, USA. */
|
||||||
|
|
||||||
|
#ifndef _SYS_IO_H
|
||||||
|
|
||||||
|
#define _SYS_IO_H 1
|
||||||
|
#include <features.h>
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Get constants from kernel header files. */
|
||||||
|
#include <asm/io.h>
|
||||||
|
|
||||||
|
/* If TURN_ON is TRUE, request for permission to do direct i/o on the
|
||||||
|
port numbers in the range [FROM,FROM+NUM-1]. Otherwise, turn I/O
|
||||||
|
permission off for that range. This call requires root privileges.
|
||||||
|
|
||||||
|
Portability note: not all Linux platforms support this call. Most
|
||||||
|
platforms based on the PC I/O architecture probably will, however.
|
||||||
|
E.g., Linux/Alpha for Alpha PCs supports this. */
|
||||||
|
extern int ioperm __P ((unsigned long int __from, unsigned long int __num,
|
||||||
|
int __turn_on));
|
||||||
|
|
||||||
|
/* Set the I/O privilege level to LEVEL. If LEVEL>3, permission to
|
||||||
|
access any I/O port is granted. This call requires root
|
||||||
|
privileges. */
|
||||||
|
extern int iopl __P ((int __level));
|
||||||
|
|
||||||
|
/* Return the physical address of the DENSE I/O memory or NULL if none
|
||||||
|
is available (e.g. on a jensen). */
|
||||||
|
extern unsigned long _bus_base __P ((void)) __attribute__ ((const));
|
||||||
|
extern unsigned long bus_base __P ((void)) __attribute__ ((const));
|
||||||
|
|
||||||
|
/* Return the physical address of the SPARSE I/O memory. */
|
||||||
|
extern unsigned long _bus_base_sparse __P ((void)) __attribute__ ((const));
|
||||||
|
extern unsigned long bus_base_sparse __P ((void)) __attribute__ ((const));
|
||||||
|
|
||||||
|
/* Return the HAE shift used by the SPARSE I/O memory. */
|
||||||
|
extern int _hae_shift __P ((void)) __attribute__ ((const));
|
||||||
|
extern int hae_shift __P ((void)) __attribute__ ((const));
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* _SYS_IO_H */
|
Loading…
Reference in New Issue
Block a user