home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC-Online 1996 May
/
PCOnline_05_1996.bin
/
linux
/
source
/
kernel-s
/
v1.2
/
linuxelf.2
/
linuxelf-1.2.13.diff
Wrap
Text File
|
1995-08-03
|
82KB
|
2,899 lines
diff -u --recursive --new-file linux-1.2.13/arch/i386/Makefile linux/arch/i386/Makefile
--- linux-1.2.13/arch/i386/Makefile Sat Feb 25 07:55:27 1995
+++ linux/arch/i386/Makefile Thu Aug 3 20:36:17 1995
@@ -1,4 +1,12 @@
#
+# We use ELF.
+#
+USE_ELF=yes
+#
+# We use a.out.
+#USE_ELF=no
+
+#
# i386/Makefile
#
# This file is included by the global makefile so that you can add your own
@@ -21,10 +29,27 @@
# ZLINKFLAGS = -Ttext 0x1000
# LINKFLAGS = -Ttext 0x100000
#
+#
+ifeq ($(USE_ELF),yes)
+LD=ld -m elf_i386
+CPP=$(CC) -E -D__ELF__
+OBJDUMP =objdump
+OBJDUMP_FLAGS=-k -q
+LDFLAGS=-e startup_32
+ZIMAGE_OFFSET=0x1000
+IMAGE_OFFSET=0x100000
+ZLINKFLAGS =-Ttext $(ZIMAGE_OFFSET) $(LDFLAGS)
+LINKFLAGS =-Ttext $(IMAGE_OFFSET) $(LDFLAGS)
+else
+AS=/usr/i486-linuxaout/bin/as
+LD=/usr/i486-linuxaout/bin/ld -m i386linux
+CC=gcc -b i486-linuxaout -D__KERNEL__ -I$(TOPDIR)/include
+#
# -qmagic (we need to remove the 32 byte header for bootup purposes)
#
ZLINKFLAGS =-qmagic -Ttext 0xfe0
LINKFLAGS =-qmagic -Ttext 0xfffe0
+endif
CFLAGS := $(CFLAGS) -pipe
ifdef CONFIG_M486
diff -u --recursive --new-file linux-1.2.13/arch/i386/boot/Makefile linux/arch/i386/boot/Makefile
--- linux-1.2.13/arch/i386/boot/Makefile Tue Jan 3 05:57:26 1995
+++ linux/arch/i386/boot/Makefile Thu Aug 3 20:36:17 1995
@@ -11,8 +11,17 @@
AS86 =as86 -0 -a
LD86 =ld86 -0
+ifeq ($(USE_ELF),yes)
+CFLAGS := $(CFLAGS) -D__BFD__
+endif
+
zImage: $(CONFIGURE) bootsect setup compressed/vmlinux tools/build
+ifeq ($(USE_ELF),yes)
+ $(OBJDUMP) $(OBJDUMP_FLAGS) -o $(ZIMAGE_OFFSET) compressed/vmlinux > compressed/vmlinux.out
+ tools/build bootsect setup compressed/vmlinux.out $(ROOT_DEV) > zImage
+else
tools/build bootsect setup compressed/vmlinux $(ROOT_DEV) > zImage
+endif
sync
compressed/vmlinux: $(TOPDIR)/vmlinux
@@ -56,5 +65,5 @@
clean:
rm -f bootsect setup
- rm -f zImage tools/build
+ rm -f zImage tools/build compressed/vmlinux.out
@$(MAKE) -C compressed clean
diff -u --recursive --new-file linux-1.2.13/arch/i386/boot/compressed/Makefile linux/arch/i386/boot/compressed/Makefile
--- linux-1.2.13/arch/i386/boot/compressed/Makefile Tue Jan 31 00:58:00 1995
+++ linux/arch/i386/boot/compressed/Makefile Thu Aug 3 20:36:17 1995
@@ -11,6 +11,12 @@
CFLAGS = -O2 -DSTDC_HEADERS
+ifeq ($(USE_ELF),yes)
+TARGET=--target elf32-i386
+INPUT_DATA=input_data
+INPUT_LEN=input_len
+endif
+
.c.s:
$(CC) $(CFLAGS) -S $<
.s.o:
@@ -20,13 +26,26 @@
all: vmlinux
-vmlinux: piggy.o $(OBJECTS)
- $(LD) $(ZLINKFLAGS) -o vmlinux $(OBJECTS) piggy.o
+vmlinux: piggy.o $(OBJECTS)
+ $(LD) $(ZLINKFLAGS) -o vmlinux $(OBJECTS) piggy.o
+
+#head.o: head.s
-head.o: head.s
+head.o: head.S $(TOPDIR)/include/linux/tasks.h
+ $(CC) -traditional -c head.S
-head.s: head.S $(TOPDIR)/include/linux/tasks.h
- $(CPP) -traditional head.S -o head.s
+ifeq ($(USE_ELF),yes)
+
+# You cannot compress a file and have the kernel uncompress it, it must
+# be stdin
+piggy.o: $(SYSTEM)
+ tmppiggy=/tmp/$$.piggy; \
+ rm -f $$tmppiggy $$tmppiggy.gz; \
+ $(OBJDUMP) $(OBJDUMP_FLAGS) -o $(IMAGE_OFFSET) $(SYSTEM) > $$tmppiggy; \
+ gzip -f -9 < $$tmppiggy > $$tmppiggy.gz; \
+ encaps $(TARGET) piggy.o $$tmppiggy.gz $(INPUT_DATA) $(INPUT_LEN); \
+ rm -f $$tmppiggy $$tmppiggy.gz
+else
piggy.o: $(SYSTEM) xtract piggyback
./xtract $(SYSTEM) | gzip -9 | ./piggyback > piggy.o
@@ -36,6 +55,8 @@
piggyback: piggyback.c
$(HOSTCC) $(CFLAGS) -o piggyback piggyback.c
+
+endif
clean:
rm -f xtract piggyback vmlinux
diff -u --recursive --new-file linux-1.2.13/arch/i386/boot/compressed/head.S linux/arch/i386/boot/compressed/head.S
--- linux-1.2.13/arch/i386/boot/compressed/head.S Thu Dec 29 11:58:41 1994
+++ linux/arch/i386/boot/compressed/head.S Thu Aug 3 20:36:17 1995
@@ -19,8 +19,10 @@
.text
#define __ASSEMBLY__
+#include <linux/linkage.h>
#include <asm/segment.h>
+ .globl startup_32
startup_32:
cld
cli
@@ -29,7 +31,7 @@
mov %ax,%es
mov %ax,%fs
mov %ax,%gs
- lss _stack_start,%esp
+ lss SYMBOL_NAME(stack_start),%esp
xorl %eax,%eax
1: incl %eax # check that A20 really IS enabled
movl %eax,0x000000 # loop forever if it isn't
@@ -46,8 +48,8 @@
* Clear BSS
*/
xorl %eax,%eax
- movl $__edata,%edi
- movl $__end,%ecx
+ movl $ SYMBOL_NAME(_edata),%edi
+ movl $ SYMBOL_NAME(_end),%ecx
subl %edi,%ecx
cld
rep
@@ -55,5 +57,5 @@
/*
* Do the decompression, and jump to the new kernel..
*/
- call _decompress_kernel
+ call SYMBOL_NAME(decompress_kernel)
ljmp $(KERNEL_CS), $0x100000
diff -u --recursive --new-file linux-1.2.13/arch/i386/boot/tools/build.c linux/arch/i386/boot/tools/build.c
--- linux-1.2.13/arch/i386/boot/tools/build.c Thu Jan 5 09:29:01 1995
+++ linux/arch/i386/boot/tools/build.c Thu Aug 3 20:36:22 1995
@@ -30,11 +30,14 @@
#include <fcntl.h>
#include <linux/a.out.h>
#include <linux/config.h>
+#include <errno.h>
#define MINIX_HEADER 32
#define N_MAGIC_OFFSET 1024
+#ifndef __BFD__
static int GCC_HEADER = sizeof(struct exec);
+#endif
#define SYS_SIZE DEF_SYSSIZE
@@ -89,7 +92,9 @@
int i,c,id, sz;
unsigned long sys_size;
char buf[1024];
+#ifndef __BFD__
struct exec *ex = (struct exec *)buf;
+#endif
char major_root, minor_root;
struct stat sb;
unsigned char setup_sectors;
@@ -190,6 +195,7 @@
if ((id=open(argv[3],O_RDONLY,0))<0)
die("Unable to open 'system'");
+#ifndef __BFD__
if (read(id,buf,GCC_HEADER) != GCC_HEADER)
die("Unable to read header of 'system'");
if (N_MAGIC(*ex) == ZMAGIC) {
@@ -203,6 +209,14 @@
ex->a_data /1024,
ex->a_bss /1024);
sz = N_SYMOFF(*ex) - GCC_HEADER + 4;
+#else
+ if (fstat (id, &sb)) {
+ perror ("fstat");
+ die ("Unable to stat 'system'");
+ }
+ sz = sb.st_size;
+ fprintf (stderr, "System is %d kB\n", sz/1024);
+#endif
sys_size = (sz + 15) / 16;
if (sys_size > SYS_SIZE)
die("System is too big");
diff -u --recursive --new-file linux-1.2.13/arch/i386/ibcs/Makefile linux/arch/i386/ibcs/Makefile
--- linux-1.2.13/arch/i386/ibcs/Makefile Sun Nov 27 12:19:53 1994
+++ linux/arch/i386/ibcs/Makefile Thu Aug 3 20:36:22 1995
@@ -7,6 +7,8 @@
#
# Note 2! The CFLAGS definitions are now in the main makefile...
+.S.o:
+ $(CC) $(CFLAGS) -c -traditional $< -o $*.s
.S.s:
$(CPP) -traditional $< -o $*.s
.c.s:
diff -u --recursive --new-file linux-1.2.13/arch/i386/kernel/Makefile linux/arch/i386/kernel/Makefile
--- linux-1.2.13/arch/i386/kernel/Makefile Sun Jan 15 23:17:34 1995
+++ linux/arch/i386/kernel/Makefile Thu Aug 3 20:36:22 1995
@@ -13,8 +13,8 @@
$(AS) -o $*.o $<
.c.o:
$(CC) $(CFLAGS) -c $<
-.S.s:
- $(CPP) -D__ASSEMBLY__ -traditional $< -o $*.s
+#.S.s:
+# $(CPP) -D__ASSEMBLY__ -traditional $< -o $*.s
.S.o:
$(CC) -D__ASSEMBLY__ -traditional -c $< -o $*.o
@@ -22,10 +22,11 @@
all: kernel.o head.o
-head.o: head.s
+#head.o: head.s
-head.s: head.S $(TOPDIR)/include/linux/tasks.h
- $(CPP) -traditional -o $*.s $<
+head.o: head.S $(TOPDIR)/include/linux/tasks.h
+ $(CC) -D__ASSEMBLY__ -traditional -c $*.S -o $*.o
+# $(CPP) -traditional -o $*.s $<
kernel.o: $(OBJS)
$(LD) -r -o kernel.o $(OBJS)
diff -u --recursive --new-file linux-1.2.13/arch/i386/kernel/entry.S linux/arch/i386/kernel/entry.S
--- linux-1.2.13/arch/i386/kernel/entry.S Tue Jan 3 07:15:08 1995
+++ linux/arch/i386/kernel/entry.S Thu Aug 3 20:36:22 1995
@@ -41,6 +41,7 @@
*/
#include <linux/sys.h>
+#include <linux/linkage.h>
#include <asm/segment.h>
EBX = 0x00
@@ -82,15 +83,6 @@
ENOSYS = 38
-.globl _system_call,_lcall7
-.globl _device_not_available, _coprocessor_error
-.globl _divide_error,_debug,_nmi,_int3,_overflow,_bounds,_invalid_op
-.globl _double_fault,_coprocessor_segment_overrun
-.globl _invalid_TSS,_segment_not_present,_stack_segment
-.globl _general_protection,_reserved
-.globl _alignment_check,_page_fault
-.globl ret_from_sys_call, _sys_call_table
-
#define SAVE_ALL \
cld; \
push %gs; \
@@ -113,7 +105,7 @@
#define RESTORE_ALL \
cmpw $(KERNEL_CS),CS(%esp); \
je 1f; \
- movl _current,%eax; \
+ movl SYMBOL_NAME(current),%eax; \
movl dbgreg7(%eax),%ebx; \
movl %ebx,%db7; \
1: popl %ebx; \
@@ -130,8 +122,7 @@
addl $4,%esp; \
iret
-.align 4
-_lcall7:
+ENTRY(lcall7)
pushfl # We get a different stack layout with call gates,
pushl %eax # which has to be cleaned up later..
SAVE_ALL
@@ -142,7 +133,7 @@
movl %edx,EIP(%esp) # Now we move them to their "normal" places
movl %ecx,CS(%esp) #
movl %esp,%eax
- movl _current,%edx
+ movl SYMBOL_NAME(current),%edx
pushl %eax
movl exec_domain(%edx),%edx # Get the execution domain
movl 4(%edx),%edx # Get the lcall7 handler for the domain
@@ -150,30 +141,30 @@
popl %eax
jmp ret_from_sys_call
-.align 4
+ ALIGN
handle_bottom_half:
pushfl
- incl _intr_count
+ incl SYMBOL_NAME(intr_count)
sti
- call _do_bottom_half
+ call SYMBOL_NAME(do_bottom_half)
popfl
- decl _intr_count
+ decl SYMBOL_NAME(intr_count)
jmp 9f
-.align 4
+ ALIGN
reschedule:
pushl $ret_from_sys_call
- jmp _schedule
-.align 4
-_system_call:
+ jmp SYMBOL_NAME(schedule)
+
+ENTRY(system_call)
pushl %eax # save orig_eax
SAVE_ALL
movl $-ENOSYS,EAX(%esp)
cmpl $(NR_syscalls),%eax
jae ret_from_sys_call
- movl _sys_call_table(,%eax,4),%eax
+ movl SYMBOL_NAME(sys_call_table)(,%eax,4),%eax
testl %eax,%eax
je ret_from_sys_call
- movl _current,%ebx
+ movl SYMBOL_NAME(current),%ebx
andl $~CF_MASK,EFLAGS(%esp) # clear carry - assume no errors
movl $0,errno(%ebx)
movl %db6,%edx
@@ -188,25 +179,26 @@
movl %edx,EAX(%esp)
orl $(CF_MASK),EFLAGS(%esp) # set carry to indicate error
jmp ret_from_sys_call
-.align 4
-1: call _syscall_trace
+ ALIGN
+1: call SYMBOL_NAME(syscall_trace)
movl ORIG_EAX(%esp),%eax
- call _sys_call_table(,%eax,4)
+ call SYMBOL_NAME(sys_call_table)(,%eax,4)
movl %eax,EAX(%esp) # save the return value
- movl _current,%eax
+ movl SYMBOL_NAME(current),%eax
movl errno(%eax),%edx
negl %edx
je 1f
movl %edx,EAX(%esp)
orl $(CF_MASK),EFLAGS(%esp) # set carry to indicate error
-1: call _syscall_trace
+1: call SYMBOL_NAME(syscall_trace)
- .align 4,0x90
+ ALIGN
+ .globl ret_from_sys_call
ret_from_sys_call:
- cmpl $0,_intr_count
+ cmpl $0,SYMBOL_NAME(intr_count)
jne 2f
-9: movl _bh_mask,%eax
- andl _bh_active,%eax
+9: movl SYMBOL_NAME(bh_mask),%eax
+ andl SYMBOL_NAME(bh_active),%eax
jne handle_bottom_half
movl EFLAGS(%esp),%eax # check VM86 flag: CS/SS are
testl $(VM_MASK),%eax # different then
@@ -217,10 +209,10 @@
orl $(IF_MASK),%eax # these just try to make sure
andl $~NT_MASK,%eax # the program doesn't do anything
movl %eax,EFLAGS(%esp) # stupid
- cmpl $0,_need_resched
+ cmpl $0,SYMBOL_NAME(need_resched)
jne reschedule
- movl _current,%eax
- cmpl _task,%eax # task[0] cannot have signals
+ movl SYMBOL_NAME(current),%eax
+ cmpl SYMBOL_NAME(task),%eax # task[0] cannot have signals
je 2f
cmpl $0,state(%eax) # state
jne reschedule
@@ -232,33 +224,32 @@
andl signal(%eax),%ecx
jne signal_return
2: RESTORE_ALL
-.align 4
+ ALIGN
signal_return:
movl %esp,%ecx
pushl %ecx
testl $(VM_MASK),EFLAGS(%ecx)
jne v86_signal_return
pushl %ebx
- call _do_signal
+ call SYMBOL_NAME(do_signal)
popl %ebx
popl %ebx
RESTORE_ALL
-.align 4
+ ALIGN
v86_signal_return:
- call _save_v86_state
+ call SYMBOL_NAME(save_v86_state)
movl %eax,%esp
pushl %eax
pushl %ebx
- call _do_signal
+ call SYMBOL_NAME(do_signal)
popl %ebx
popl %ebx
RESTORE_ALL
-.align 4
-_divide_error:
+ENTRY(divide_error)
pushl $0 # no error code
- pushl $_do_divide_error
-.align 4,0x90
+ pushl $ SYMBOL_NAME(do_divide_error)
+ ALIGN
error_code:
push %fs
push %es
@@ -287,7 +278,7 @@
movl $(USER_DS),%edx
mov %dx,%fs
pushl %eax
- movl _current,%eax
+ movl SYMBOL_NAME(current),%eax
movl %db6,%edx
movl %edx,dbgreg6(%eax) # save current hardware debugging status
popl %eax
@@ -295,250 +286,232 @@
addl $8,%esp
jmp ret_from_sys_call
-.align 4
-_coprocessor_error:
+ENTRY(coprocessor_error)
pushl $0
- pushl $_do_coprocessor_error
+ pushl $ SYMBOL_NAME(do_coprocessor_error)
jmp error_code
-.align 4
-_device_not_available:
+ENTRY(device_not_available)
pushl $-1 # mark this as an int
SAVE_ALL
pushl $ret_from_sys_call
movl %cr0,%eax
testl $0x4,%eax # EM (math emulation bit)
- je _math_state_restore
+ je SYMBOL_NAME(math_state_restore)
pushl $0 # temporary storage for ORIG_EIP
- call _math_emulate
+ call SYMBOL_NAME(math_emulate)
addl $4,%esp
ret
-.align 4
-_debug:
+ENTRY(debug)
pushl $0
- pushl $_do_debug
+ pushl $ SYMBOL_NAME(do_debug)
jmp error_code
-.align 4
-_nmi:
+ENTRY(nmi)
pushl $0
- pushl $_do_nmi
+ pushl $ SYMBOL_NAME(do_nmi)
jmp error_code
-.align 4
-_int3:
+ENTRY(int3)
pushl $0
- pushl $_do_int3
+ pushl $ SYMBOL_NAME(do_int3)
jmp error_code
-.align 4
-_overflow:
+ENTRY(overflow)
pushl $0
- pushl $_do_overflow
+ pushl $ SYMBOL_NAME(do_overflow)
jmp error_code
-.align 4
-_bounds:
+ENTRY(bounds)
pushl $0
- pushl $_do_bounds
+ pushl $ SYMBOL_NAME(do_bounds)
jmp error_code
-.align 4
-_invalid_op:
+ENTRY(invalid_op)
pushl $0
- pushl $_do_invalid_op
+ pushl $ SYMBOL_NAME(do_invalid_op)
jmp error_code
-.align 4
-_coprocessor_segment_overrun:
+ENTRY(coprocessor_segment_overrun)
pushl $0
- pushl $_do_coprocessor_segment_overrun
+ pushl $ SYMBOL_NAME(do_coprocessor_segment_overrun)
jmp error_code
-.align 4
-_reserved:
+ENTRY(reserved)
pushl $0
- pushl $_do_reserved
+ pushl $ SYMBOL_NAME(do_reserved)
jmp error_code
-.align 4
-_double_fault:
- pushl $_do_double_fault
+ENTRY(double_fault)
+ pushl $ SYMBOL_NAME(do_double_fault)
jmp error_code
-.align 4
-_invalid_TSS:
- pushl $_do_invalid_TSS
+ENTRY(invalid_TSS)
+ pushl $ SYMBOL_NAME(do_invalid_TSS)
jmp error_code
-.align 4
-_segment_not_present:
- pushl $_do_segment_not_present
+ENTRY(segment_not_present)
+ pushl $ SYMBOL_NAME(do_segment_not_present)
jmp error_code
-.align 4
-_stack_segment:
- pushl $_do_stack_segment
+ENTRY(stack_segment)
+ pushl $ SYMBOL_NAME(do_stack_segment)
jmp error_code
-.align 4
-_general_protection:
- pushl $_do_general_protection
+ENTRY(general_protection)
+ pushl $ SYMBOL_NAME(do_general_protection)
jmp error_code
-.align 4
-_alignment_check:
- pushl $_do_alignment_check
+ENTRY(alignment_check)
+ pushl $ SYMBOL_NAME(do_alignment_check)
jmp error_code
-.align 4
-_page_fault:
- pushl $_do_page_fault
+ENTRY(page_fault)
+ pushl $ SYMBOL_NAME(do_page_fault)
jmp error_code
.data
-.align 4
-_sys_call_table:
- .long _sys_setup /* 0 */
- .long _sys_exit
- .long _sys_fork
- .long _sys_read
- .long _sys_write
- .long _sys_open /* 5 */
- .long _sys_close
- .long _sys_waitpid
- .long _sys_creat
- .long _sys_link
- .long _sys_unlink /* 10 */
- .long _sys_execve
- .long _sys_chdir
- .long _sys_time
- .long _sys_mknod
- .long _sys_chmod /* 15 */
- .long _sys_chown
- .long _sys_break
- .long _sys_stat
- .long _sys_lseek
- .long _sys_getpid /* 20 */
- .long _sys_mount
- .long _sys_umount
- .long _sys_setuid
- .long _sys_getuid
- .long _sys_stime /* 25 */
- .long _sys_ptrace
- .long _sys_alarm
- .long _sys_fstat
- .long _sys_pause
- .long _sys_utime /* 30 */
- .long _sys_stty
- .long _sys_gtty
- .long _sys_access
- .long _sys_nice
- .long _sys_ftime /* 35 */
- .long _sys_sync
- .long _sys_kill
- .long _sys_rename
- .long _sys_mkdir
- .long _sys_rmdir /* 40 */
- .long _sys_dup
- .long _sys_pipe
- .long _sys_times
- .long _sys_prof
- .long _sys_brk /* 45 */
- .long _sys_setgid
- .long _sys_getgid
- .long _sys_signal
- .long _sys_geteuid
- .long _sys_getegid /* 50 */
- .long _sys_acct
- .long _sys_phys
- .long _sys_lock
- .long _sys_ioctl
- .long _sys_fcntl /* 55 */
- .long _sys_mpx
- .long _sys_setpgid
- .long _sys_ulimit
- .long _sys_olduname
- .long _sys_umask /* 60 */
- .long _sys_chroot
- .long _sys_ustat
- .long _sys_dup2
- .long _sys_getppid
- .long _sys_getpgrp /* 65 */
- .long _sys_setsid
- .long _sys_sigaction
- .long _sys_sgetmask
- .long _sys_ssetmask
- .long _sys_setreuid /* 70 */
- .long _sys_setregid
- .long _sys_sigsuspend
- .long _sys_sigpending
- .long _sys_sethostname
- .long _sys_setrlimit /* 75 */
- .long _sys_getrlimit
- .long _sys_getrusage
- .long _sys_gettimeofday
- .long _sys_settimeofday
- .long _sys_getgroups /* 80 */
- .long _sys_setgroups
- .long _sys_select
- .long _sys_symlink
- .long _sys_lstat
- .long _sys_readlink /* 85 */
- .long _sys_uselib
- .long _sys_swapon
- .long _sys_reboot
- .long _sys_readdir
- .long _sys_mmap /* 90 */
- .long _sys_munmap
- .long _sys_truncate
- .long _sys_ftruncate
- .long _sys_fchmod
- .long _sys_fchown /* 95 */
- .long _sys_getpriority
- .long _sys_setpriority
- .long _sys_profil
- .long _sys_statfs
- .long _sys_fstatfs /* 100 */
- .long _sys_ioperm
- .long _sys_socketcall
- .long _sys_syslog
- .long _sys_setitimer
- .long _sys_getitimer /* 105 */
- .long _sys_newstat
- .long _sys_newlstat
- .long _sys_newfstat
- .long _sys_uname
- .long _sys_iopl /* 110 */
- .long _sys_vhangup
- .long _sys_idle
- .long _sys_vm86
- .long _sys_wait4
- .long _sys_swapoff /* 115 */
- .long _sys_sysinfo
- .long _sys_ipc
- .long _sys_fsync
- .long _sys_sigreturn
- .long _sys_clone /* 120 */
- .long _sys_setdomainname
- .long _sys_newuname
- .long _sys_modify_ldt
- .long _sys_adjtimex
- .long _sys_mprotect /* 125 */
- .long _sys_sigprocmask
- .long _sys_create_module
- .long _sys_init_module
- .long _sys_delete_module
- .long _sys_get_kernel_syms /* 130 */
- .long _sys_quotactl
- .long _sys_getpgid
- .long _sys_fchdir
- .long _sys_bdflush
- .long _sys_sysfs /* 135 */
- .long _sys_personality
+ENTRY(sys_call_table)
+ .long SYMBOL_NAME(sys_setup) /* 0 */
+ .long SYMBOL_NAME(sys_exit)
+ .long SYMBOL_NAME(sys_fork)
+ .long SYMBOL_NAME(sys_read)
+ .long SYMBOL_NAME(sys_write)
+ .long SYMBOL_NAME(sys_open) /* 5 */
+ .long SYMBOL_NAME(sys_close)
+ .long SYMBOL_NAME(sys_waitpid)
+ .long SYMBOL_NAME(sys_creat)
+ .long SYMBOL_NAME(sys_link)
+ .long SYMBOL_NAME(sys_unlink) /* 10 */
+ .long SYMBOL_NAME(sys_execve)
+ .long SYMBOL_NAME(sys_chdir)
+ .long SYMBOL_NAME(sys_time)
+ .long SYMBOL_NAME(sys_mknod)
+ .long SYMBOL_NAME(sys_chmod) /* 15 */
+ .long SYMBOL_NAME(sys_chown)
+ .long SYMBOL_NAME(sys_break)
+ .long SYMBOL_NAME(sys_stat)
+ .long SYMBOL_NAME(sys_lseek)
+ .long SYMBOL_NAME(sys_getpid) /* 20 */
+ .long SYMBOL_NAME(sys_mount)
+ .long SYMBOL_NAME(sys_umount)
+ .long SYMBOL_NAME(sys_setuid)
+ .long SYMBOL_NAME(sys_getuid)
+ .long SYMBOL_NAME(sys_stime) /* 25 */
+ .long SYMBOL_NAME(sys_ptrace)
+ .long SYMBOL_NAME(sys_alarm)
+ .long SYMBOL_NAME(sys_fstat)
+ .long SYMBOL_NAME(sys_pause)
+ .long SYMBOL_NAME(sys_utime) /* 30 */
+ .long SYMBOL_NAME(sys_stty)
+ .long SYMBOL_NAME(sys_gtty)
+ .long SYMBOL_NAME(sys_access)
+ .long SYMBOL_NAME(sys_nice)
+ .long SYMBOL_NAME(sys_ftime) /* 35 */
+ .long SYMBOL_NAME(sys_sync)
+ .long SYMBOL_NAME(sys_kill)
+ .long SYMBOL_NAME(sys_rename)
+ .long SYMBOL_NAME(sys_mkdir)
+ .long SYMBOL_NAME(sys_rmdir) /* 40 */
+ .long SYMBOL_NAME(sys_dup)
+ .long SYMBOL_NAME(sys_pipe)
+ .long SYMBOL_NAME(sys_times)
+ .long SYMBOL_NAME(sys_prof)
+ .long SYMBOL_NAME(sys_brk) /* 45 */
+ .long SYMBOL_NAME(sys_setgid)
+ .long SYMBOL_NAME(sys_getgid)
+ .long SYMBOL_NAME(sys_signal)
+ .long SYMBOL_NAME(sys_geteuid)
+ .long SYMBOL_NAME(sys_getegid) /* 50 */
+ .long SYMBOL_NAME(sys_acct)
+ .long SYMBOL_NAME(sys_phys)
+ .long SYMBOL_NAME(sys_lock)
+ .long SYMBOL_NAME(sys_ioctl)
+ .long SYMBOL_NAME(sys_fcntl) /* 55 */
+ .long SYMBOL_NAME(sys_mpx)
+ .long SYMBOL_NAME(sys_setpgid)
+ .long SYMBOL_NAME(sys_ulimit)
+ .long SYMBOL_NAME(sys_olduname)
+ .long SYMBOL_NAME(sys_umask) /* 60 */
+ .long SYMBOL_NAME(sys_chroot)
+ .long SYMBOL_NAME(sys_ustat)
+ .long SYMBOL_NAME(sys_dup2)
+ .long SYMBOL_NAME(sys_getppid)
+ .long SYMBOL_NAME(sys_getpgrp) /* 65 */
+ .long SYMBOL_NAME(sys_setsid)
+ .long SYMBOL_NAME(sys_sigaction)
+ .long SYMBOL_NAME(sys_sgetmask)
+ .long SYMBOL_NAME(sys_ssetmask)
+ .long SYMBOL_NAME(sys_setreuid) /* 70 */
+ .long SYMBOL_NAME(sys_setregid)
+ .long SYMBOL_NAME(sys_sigsuspend)
+ .long SYMBOL_NAME(sys_sigpending)
+ .long SYMBOL_NAME(sys_sethostname)
+ .long SYMBOL_NAME(sys_setrlimit) /* 75 */
+ .long SYMBOL_NAME(sys_getrlimit)
+ .long SYMBOL_NAME(sys_getrusage)
+ .long SYMBOL_NAME(sys_gettimeofday)
+ .long SYMBOL_NAME(sys_settimeofday)
+ .long SYMBOL_NAME(sys_getgroups) /* 80 */
+ .long SYMBOL_NAME(sys_setgroups)
+ .long SYMBOL_NAME(sys_select)
+ .long SYMBOL_NAME(sys_symlink)
+ .long SYMBOL_NAME(sys_lstat)
+ .long SYMBOL_NAME(sys_readlink) /* 85 */
+ .long SYMBOL_NAME(sys_uselib)
+ .long SYMBOL_NAME(sys_swapon)
+ .long SYMBOL_NAME(sys_reboot)
+ .long SYMBOL_NAME(sys_readdir)
+ .long SYMBOL_NAME(sys_mmap) /* 90 */
+ .long SYMBOL_NAME(sys_munmap)
+ .long SYMBOL_NAME(sys_truncate)
+ .long SYMBOL_NAME(sys_ftruncate)
+ .long SYMBOL_NAME(sys_fchmod)
+ .long SYMBOL_NAME(sys_fchown) /* 95 */
+ .long SYMBOL_NAME(sys_getpriority)
+ .long SYMBOL_NAME(sys_setpriority)
+ .long SYMBOL_NAME(sys_profil)
+ .long SYMBOL_NAME(sys_statfs)
+ .long SYMBOL_NAME(sys_fstatfs) /* 100 */
+ .long SYMBOL_NAME(sys_ioperm)
+ .long SYMBOL_NAME(sys_socketcall)
+ .long SYMBOL_NAME(sys_syslog)
+ .long SYMBOL_NAME(sys_setitimer)
+ .long SYMBOL_NAME(sys_getitimer) /* 105 */
+ .long SYMBOL_NAME(sys_newstat)
+ .long SYMBOL_NAME(sys_newlstat)
+ .long SYMBOL_NAME(sys_newfstat)
+ .long SYMBOL_NAME(sys_uname)
+ .long SYMBOL_NAME(sys_iopl) /* 110 */
+ .long SYMBOL_NAME(sys_vhangup)
+ .long SYMBOL_NAME(sys_idle)
+ .long SYMBOL_NAME(sys_vm86)
+ .long SYMBOL_NAME(sys_wait4)
+ .long SYMBOL_NAME(sys_swapoff) /* 115 */
+ .long SYMBOL_NAME(sys_sysinfo)
+ .long SYMBOL_NAME(sys_ipc)
+ .long SYMBOL_NAME(sys_fsync)
+ .long SYMBOL_NAME(sys_sigreturn)
+ .long SYMBOL_NAME(sys_clone) /* 120 */
+ .long SYMBOL_NAME(sys_setdomainname)
+ .long SYMBOL_NAME(sys_newuname)
+ .long SYMBOL_NAME(sys_modify_ldt)
+ .long SYMBOL_NAME(sys_adjtimex)
+ .long SYMBOL_NAME(sys_mprotect) /* 125 */
+ .long SYMBOL_NAME(sys_sigprocmask)
+ .long SYMBOL_NAME(sys_create_module)
+ .long SYMBOL_NAME(sys_init_module)
+ .long SYMBOL_NAME(sys_delete_module)
+ .long SYMBOL_NAME(sys_get_kernel_syms) /* 130 */
+ .long SYMBOL_NAME(sys_quotactl)
+ .long SYMBOL_NAME(sys_getpgid)
+ .long SYMBOL_NAME(sys_fchdir)
+ .long SYMBOL_NAME(sys_bdflush)
+ .long SYMBOL_NAME(sys_sysfs) /* 135 */
+ .long SYMBOL_NAME(sys_personality)
.long 0 /* for afs_syscall */
- .long _sys_setfsuid
- .long _sys_setfsgid
- .long _sys_llseek /* 140 */
+ .long SYMBOL_NAME(sys_setfsuid)
+ .long SYMBOL_NAME(sys_setfsgid)
+ .long SYMBOL_NAME(sys_llseek) /* 140 */
.space (NR_syscalls-140)*4
diff -u --recursive --new-file linux-1.2.13/arch/i386/kernel/head.S linux/arch/i386/kernel/head.S
--- linux-1.2.13/arch/i386/kernel/head.S Mon Jan 2 07:19:59 1995
+++ linux/arch/i386/kernel/head.S Thu Aug 3 20:36:22 1995
@@ -9,16 +9,10 @@
*/
.text
-.globl _idt,_gdt,
-.globl _swapper_pg_dir,_pg0
-.globl _empty_bad_page
-.globl _empty_bad_page_table
-.globl _empty_zero_page
-.globl _floppy_track_buffer
-#define __ASSEMBLY__
#include <linux/tasks.h>
#include <linux/fd.h>
+#include <linux/linkage.h>
#include <asm/segment.h>
#define CL_MAGIC_ADDR 0x90020
@@ -30,6 +24,7 @@
* swapper_pg_dir is the main page directory, address 0x00001000 (or at
* address 0x00101000 for a compressed boot).
*/
+ .globl startup_32
startup_32:
cld
movl $(KERNEL_DS),%eax
@@ -42,8 +37,8 @@
* Clear BSS first so that there are no surprises...
*/
xorl %eax,%eax
- movl $__edata,%edi
- movl $__end,%ecx
+ movl $ SYMBOL_NAME(_edata),%edi
+ movl $ SYMBOL_NAME(_end),%ecx
subl %edi,%ecx
cld
rep
@@ -71,7 +66,7 @@
* is for the command line.
*/
movl $0x90000,%esi
- movl $_empty_zero_page,%edi
+ movl $ SYMBOL_NAME(empty_zero_page),%edi
movl $512,%ecx
cld
rep
@@ -82,7 +77,7 @@
stosl
cmpw $(CL_MAGIC),CL_MAGIC_ADDR
jne 1f
- movl $_empty_zero_page+2048,%edi
+ movl $ SYMBOL_NAME(empty_zero_page)+2048,%edi
movzwl CL_OFFSET,%esi
addl $(CL_BASE_ADDR),%esi
movl $2048,%ecx
@@ -95,7 +90,7 @@
* apply at our cpl of 0 and the stack ought to be aligned already, and
* we don't need to preserve eflags.
*/
- movl $3,_x86
+ movl $3, SYMBOL_NAME(x86)
pushfl # push EFLAGS
popl %eax # get EFLAGS
movl %eax,%ecx # save original EFLAGS
@@ -107,7 +102,7 @@
xorl %ecx,%eax # change in flags
andl $0x40000,%eax # check if AC bit changed
je is386
- movl $4,_x86
+ movl $4,SYMBOL_NAME(x86)
movl %ecx,%eax
xorl $0x200000,%eax # check ID flag
pushl %eax
@@ -124,19 +119,19 @@
.byte 0x0f, 0xa2 # check the processor type
movb %al, %cl # save reg for future use
andb $0x0f,%ah # mask processor family
- movb %ah, _x86
+ movb %ah,SYMBOL_NAME(x86)
andb $0xf0, %eax # mask model
shrb $4, %al
- movb %al, _x86_model
+ movb %al,SYMBOL_NAME(x86_model)
andb $0x0f, %cl # mask mask revision
- movb %cl, _x86_mask
- movl %edx, _x86_capability
+ movb %cl,SYMBOL_NAME(x86_mask)
+ movl %edx,SYMBOL_NAME(x86_capability)
/* get vendor info */
xorl %eax, %eax # call CPUID with 0 -> return vendor ID
.byte 0x0f, 0xa2 # CPUID
- movl %ebx, _x86_vendor_id # lo 4 chars
- movl %edx, _x86_vendor_id+4 # next 4 chars
- movl %ecx, _x86_vendor_id+8 # last 4 chars
+ movl %ebx,SYMBOL_NAME(x86_vendor_id) # lo 4 chars
+ movl %edx,SYMBOL_NAME(x86_vendor_id)+4 # next 4 chars
+ movl %ecx,SYMBOL_NAME(x86_vendor_id)+8 # last 4 chars
movl %cr0,%eax # 486+
andl $0x80000011,%eax # Save PG,PE,ET
@@ -171,7 +166,7 @@
pushl %eax
pushl %eax
cld # gcc2 wants the direction flag cleared at all times
- call _start_kernel
+ call SYMBOL_NAME(start_kernel)
L6:
jmp L6 # main should never return here, but
# just in case, we know what happens.
@@ -180,7 +175,7 @@
* We depend on ET to be correct. This checks for 287/387.
*/
check_x87:
- movb $0,_hard_math
+ movb $0,SYMBOL_NAME(hard_math)
clts
fninit
fstsw %ax
@@ -190,8 +185,8 @@
xorl $4,%eax /* set EM */
movl %eax,%cr0
ret
-.align 2
-1: movb $1,_hard_math
+ ALIGN
+1: movb $1,SYMBOL_NAME(hard_math)
.byte 0xDB,0xE4 /* fsetpm for 287, ignored by 387 */
ret
@@ -211,7 +206,7 @@
movw %dx,%ax /* selector = 0x0010 = cs */
movw $0x8E00,%dx /* interrupt gate - dpl=0, present */
- lea _idt,%edi
+ lea SYMBOL_NAME(idt),%edi
mov $256,%ecx
rp_sidt:
movl %eax,(%edi)
@@ -233,24 +228,26 @@
* (ref: update, 25Sept92) -- croutons@crunchy.uucp
* (ref: 92.10.11 - Linus Torvalds. Corrected 16M limit - no upper memory limit)
*/
-.align 2
+ ALIGN
setup_paging:
movl $1024*2,%ecx /* 2 pages - swapper_pg_dir+1 page table */
xorl %eax,%eax
- movl $_swapper_pg_dir,%edi /* swapper_pg_dir is at 0x1000 */
+ movl $ SYMBOL_NAME(swapper_pg_dir),%edi /* swapper_pg_dir is at 0x1000 */
cld;rep;stosl
/* Identity-map the kernel in low 4MB memory for ease of transition */
- movl $_pg0+7,_swapper_pg_dir /* set present bit/user r/w */
+/* set present bit/user r/w */
+ movl $ SYMBOL_NAME(pg0)+7,SYMBOL_NAME(swapper_pg_dir)
/* But the real place is at 0xC0000000 */
- movl $_pg0+7,_swapper_pg_dir+3072 /* set present bit/user r/w */
- movl $_pg0+4092,%edi
+/* set present bit/user r/w */
+ movl $ SYMBOL_NAME(pg0)+7,SYMBOL_NAME(swapper_pg_dir)+3072
+ movl $ SYMBOL_NAME(pg0)+4092,%edi
movl $0x03ff007,%eax /* 4Mb - 4096 + 7 (r/w user,p) */
std
1: stosl /* fill the page backwards - more efficient :-) */
subl $0x1000,%eax
jge 1b
cld
- movl $_swapper_pg_dir,%eax
+ movl $ SYMBOL_NAME(swapper_pg_dir),%eax
movl %eax,%cr3 /* cr3 - page directory start */
movl %cr0,%eax
orl $0x80000000,%eax
@@ -268,22 +265,22 @@
* by 2-3k. This would be a good thing to do at some point.....
*/
.org 0x1000
-_swapper_pg_dir:
+ENTRY(swapper_pg_dir)
/*
* The page tables are initialized to only 4MB here - the final page
* tables are set up later depending on memory size.
*/
.org 0x2000
-_pg0:
+ENTRY(pg0)
.org 0x3000
-_empty_bad_page:
+ENTRY(empty_bad_page)
.org 0x4000
-_empty_bad_page_table:
+ENTRY(empty_bad_page_table)
.org 0x5000
-_empty_zero_page:
+ENTRY(empty_zero_page)
.org 0x6000
/*
@@ -292,17 +289,17 @@
* sector read/write can mess it up. It can contain one full cylinder (sic) of
* data (36*2*512 bytes).
*/
-_floppy_track_buffer:
+ENTRY(floppy_track_buffer)
.fill 512*2*MAX_BUFFER_SECTORS,1,0
stack_start:
- .long _init_user_stack+4096
+ .long SYMBOL_NAME(init_user_stack)+4096
.long KERNEL_DS
/* This is the default interrupt "handler" :-) */
int_msg:
.asciz "Unknown interrupt\n"
-.align 2
+ ALIGN
ignore_int:
cld
pushl %eax
@@ -316,7 +313,7 @@
mov %ax,%es
mov %ax,%fs
pushl $int_msg
- call _printk
+ call SYMBOL_NAME(printk)
popl %eax
pop %fs
pop %es
@@ -329,28 +326,26 @@
/*
* The interrupt descriptor table has room for 256 idt's
*/
-.align 4
+ ALIGN
.word 0
idt_descr:
.word 256*8-1 # idt contains 256 entries
- .long 0xc0000000+_idt
+ .long 0xc0000000+SYMBOL_NAME(idt)
-.align 4
-_idt:
+ENTRY(idt)
.fill 256,8,0 # idt is uninitialized
-.align 4
+ ALIGN
.word 0
gdt_descr:
.word (8+2*NR_TASKS)*8-1
- .long 0xc0000000+_gdt
+ .long 0xc0000000+SYMBOL_NAME(gdt)
/*
* This gdt setup gives the kernel a 1GB address space at virtual
* address 0xC0000000 - space enough for expansion, I hope.
*/
-.align 4
-_gdt:
+ENTRY(gdt)
.quad 0x0000000000000000 /* NULL descriptor */
.quad 0x0000000000000000 /* not used */
.quad 0xc0c39a000000ffff /* 0x10 kernel 1GB code at 0xC0000000 */
diff -u --recursive --new-file linux-1.2.13/arch/i386/kernel/process.c linux/arch/i386/kernel/process.c
--- linux-1.2.13/arch/i386/kernel/process.c Thu Aug 3 20:32:29 1995
+++ linux/arch/i386/kernel/process.c Thu Aug 3 20:36:22 1995
@@ -194,6 +194,31 @@
}
/*
+ * fill in the fpu structure for a core dump..
+ */
+int dump_fpu (struct user_i387_struct* fpu)
+{
+ int fpvalid;
+
+/* Flag indicating the math stuff is valid. We don't support this for the
+ soft-float routines yet */
+ if (hard_math) {
+ if ((fpvalid = current->used_math) != 0) {
+ if (last_task_used_math == current)
+ __asm__("clts ; fnsave %0": :"m" (*fpu));
+ else
+ memcpy(fpu,¤t->tss.i387.hard,sizeof(*fpu));
+ }
+ } else {
+ /* we should dump the emulator state here, but we need to
+ convert it into standard 387 format first.. */
+ fpvalid = 0;
+ }
+
+ return fpvalid;
+}
+
+/*
* fill in the user structure for a core dump..
*/
void dump_thread(struct pt_regs * regs, struct user * dump)
@@ -216,20 +241,7 @@
dump->regs = *regs;
-/* Flag indicating the math stuff is valid. We don't support this for the
- soft-float routines yet */
- if (hard_math) {
- if ((dump->u_fpvalid = current->used_math) != 0) {
- if (last_task_used_math == current)
- __asm__("clts ; fnsave %0": :"m" (dump->i387));
- else
- memcpy(&dump->i387,¤t->tss.i387.hard,sizeof(dump->i387));
- }
- } else {
- /* we should dump the emulator state here, but we need to
- convert it into standard 387 format first.. */
- dump->u_fpvalid = 0;
- }
+ dump->u_fpvalid = dump_fpu (&dump->i387);
}
asmlinkage int sys_fork(struct pt_regs regs)
diff -u --recursive --new-file linux-1.2.13/arch/i386/kernel/setup.c linux/arch/i386/kernel/setup.c
--- linux-1.2.13/arch/i386/kernel/setup.c Thu Feb 23 05:31:58 1995
+++ linux/arch/i386/kernel/setup.c Thu Aug 3 20:36:22 1995
@@ -55,7 +55,7 @@
unsigned char aux_device_present;
extern int ramdisk_size;
extern int root_mountflags;
-extern int etext, edata, end;
+extern int _etext, _edata, _end;
extern char empty_zero_page[PAGE_SIZE];
@@ -95,11 +95,11 @@
#endif
if (MOUNT_ROOT_RDONLY)
root_mountflags |= MS_RDONLY;
- memory_start = (unsigned long) &end;
+ memory_start = (unsigned long) &_end;
init_task.mm->start_code = TASK_SIZE;
- init_task.mm->end_code = TASK_SIZE + (unsigned long) &etext;
- init_task.mm->end_data = TASK_SIZE + (unsigned long) &edata;
- init_task.mm->brk = TASK_SIZE + (unsigned long) &end;
+ init_task.mm->end_code = TASK_SIZE + (unsigned long) &_etext;
+ init_task.mm->end_data = TASK_SIZE + (unsigned long) &_edata;
+ init_task.mm->brk = TASK_SIZE + (unsigned long) &_end;
for (;;) {
if (c == ' ' && *(unsigned long *)from == *(unsigned long *)"mem=") {
diff -u --recursive --new-file linux-1.2.13/arch/i386/kernel/traps.c linux/arch/i386/kernel/traps.c
--- linux-1.2.13/arch/i386/kernel/traps.c Wed Feb 8 05:54:00 1995
+++ linux/arch/i386/kernel/traps.c Thu Aug 3 20:36:22 1995
@@ -99,7 +99,7 @@
unsigned long esp;
unsigned short ss;
unsigned long *stack, addr, module_start, module_end;
- extern char start_kernel, etext;
+ extern char start_kernel, _etext;
esp = (unsigned long) ®s->esp;
ss = KERNEL_DS;
@@ -147,7 +147,7 @@
* out the call path that was taken.
*/
if (((addr >= (unsigned long) &start_kernel) &&
- (addr <= (unsigned long) &etext)) ||
+ (addr <= (unsigned long) &_etext)) ||
((addr >= module_start) && (addr <= module_end))) {
if (i && ((i % 8) == 0))
printk("\n ");
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/div_Xsig.S linux/arch/i386/math-emu/div_Xsig.S
--- linux-1.2.13/arch/i386/math-emu/div_Xsig.S Mon Aug 1 00:19:13 1994
+++ linux/arch/i386/math-emu/div_Xsig.S Thu Aug 3 20:36:22 1995
@@ -74,11 +74,7 @@
.text
- .align 2,144
-
-.globl _div_Xsig
-
-_div_Xsig:
+ENTRY(div_Xsig)
pushl %ebp
movl %esp,%ebp
#ifndef NON_REENTRANT_FPU
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/div_small.S linux/arch/i386/math-emu/div_small.S
--- linux-1.2.13/arch/i386/math-emu/div_small.S Wed Dec 1 06:44:16 1993
+++ linux/arch/i386/math-emu/div_small.S Thu Aug 3 20:36:22 1995
@@ -17,11 +17,7 @@
#include "fpu_asm.h"
.text
- .align 2,144
-
-.globl _div_small
-
-_div_small:
+ENTRY(div_small)
pushl %ebp
movl %esp,%ebp
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/fpu_asm.h linux/arch/i386/math-emu/fpu_asm.h
--- linux-1.2.13/arch/i386/math-emu/fpu_asm.h Wed Dec 1 06:44:16 1993
+++ linux/arch/i386/math-emu/fpu_asm.h Thu Aug 3 20:36:22 1995
@@ -9,9 +9,10 @@
#ifndef _FPU_ASM_H_
#define _FPU_ASM_H_
+#include <linux/linkage.h>
#include "fpu_emu.h"
-#define EXCEPTION _exception
+#define EXCEPTION SYMBOL_NAME(exception)
#define PARAM1 8(%ebp)
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/mul_Xsig.S linux/arch/i386/math-emu/mul_Xsig.S
--- linux-1.2.13/arch/i386/math-emu/mul_Xsig.S Mon Aug 1 00:19:13 1994
+++ linux/arch/i386/math-emu/mul_Xsig.S Thu Aug 3 20:36:23 1995
@@ -24,9 +24,7 @@
#include "fpu_asm.h"
.text
- .align 2,144
-.globl _mul32_Xsig
-_mul32_Xsig:
+ENTRY(mul32_Xsig)
pushl %ebp
movl %esp,%ebp
subl $16,%esp
@@ -66,9 +64,7 @@
ret
- .align 2,144
-.globl _mul64_Xsig
-_mul64_Xsig:
+ENTRY(mul64_Xsig)
pushl %ebp
movl %esp,%ebp
subl $16,%esp
@@ -121,9 +117,7 @@
- .align 2,144
-.globl _mul_Xsig_Xsig
-_mul_Xsig_Xsig:
+ENTRY(mul_Xsig_Xsig)
pushl %ebp
movl %esp,%ebp
subl $16,%esp
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/polynom_Xsig.S linux/arch/i386/math-emu/polynom_Xsig.S
--- linux-1.2.13/arch/i386/math-emu/polynom_Xsig.S Mon Aug 1 00:19:15 1994
+++ linux/arch/i386/math-emu/polynom_Xsig.S Thu Aug 3 20:36:23 1995
@@ -36,9 +36,7 @@
#define OVERFLOWED -16(%ebp) /* addition overflow flag */
.text
- .align 2,144
-.globl _polynomial_Xsig
-_polynomial_Xsig:
+ENTRY(polynomial_Xsig)
pushl %ebp
movl %esp,%ebp
subl $32,%esp
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/reg_div.S linux/arch/i386/math-emu/reg_div.S
--- linux-1.2.13/arch/i386/math-emu/reg_div.S Thu Jun 2 02:28:27 1994
+++ linux/arch/i386/math-emu/reg_div.S Thu Aug 3 20:36:23 1995
@@ -19,10 +19,7 @@
.text
- .align 2
-
-.globl _reg_div
-_reg_div:
+ENTRY(reg_div)
pushl %ebp
movl %esp,%ebp
#ifndef NON_REENTRANT_FPU
@@ -47,7 +44,7 @@
cmpl EXP_UNDER,EXP(%esi)
jg xL_arg1_not_denormal
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
@@ -55,7 +52,7 @@
cmpl EXP_UNDER,EXP(%ebx)
jg xL_arg2_not_denormal
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
@@ -75,7 +72,7 @@
addl EXP_BIAS,%edx
movl %edx,EXP(%edi)
- jmp _divide_kernel
+ jmp SYMBOL_NAME(divide_kernel)
/*-----------------------------------------------------------------------*/
@@ -92,14 +89,14 @@
pushl %edi /* Destination */
pushl %esi
pushl %ebx /* Ordering is important here */
- call _real_2op_NaN
+ call SYMBOL_NAME(real_2op_NaN)
jmp LDiv_exit
/* Invalid operations */
L_zero_zero:
L_inf_inf:
pushl %edi /* Destination */
- call _arith_invalid /* 0/0 or Infinity/Infinity */
+ call SYMBOL_NAME(arith_invalid) /* 0/0 or Infinity/Infinity */
jmp LDiv_exit
L_no_NaN_arg:
@@ -126,7 +123,7 @@
cmpl EXP_UNDER,EXP(%ebx)
jg L_copy_arg1 /* Answer is Inf */
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
#endif DENORM_OPERAND
@@ -151,7 +148,7 @@
movb SIGN(%esi),%al
xorb SIGN(%ebx),%al
pushl %eax /* lower 8 bits have the sign */
- call _divide_by_zero
+ call SYMBOL_NAME(divide_by_zero)
jmp LDiv_exit
L_arg2_not_zero:
@@ -165,7 +162,7 @@
cmpl EXP_UNDER,EXP(%esi)
jg L_return_zero /* Answer is zero */
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
#endif DENORM_OPERAND
@@ -185,7 +182,7 @@
cmpl EXP_UNDER,EXP(%ebx)
jg L_copy_arg1 /* Answer is zero */
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
#endif DENORM_OPERAND
@@ -241,11 +238,11 @@
call EXCEPTION
/* Generate a NaN for unknown tags */
- movl _CONST_QNaN,%eax
+ movl SYMBOL_NAME(CONST_QNaN),%eax
movl %eax,(%edi)
- movl _CONST_QNaN+4,%eax
+ movl SYMBOL_NAME(CONST_QNaN)+4,%eax
movl %eax,SIGL(%edi)
- movl _CONST_QNaN+8,%eax
+ movl SYMBOL_NAME(CONST_QNaN)+8,%eax
movl %eax,SIGH(%edi)
jmp LDiv_exit /* %eax is nz */
#endif PARANOID
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/reg_norm.S linux/arch/i386/math-emu/reg_norm.S
--- linux-1.2.13/arch/i386/math-emu/reg_norm.S Tue Jan 11 03:10:49 1994
+++ linux/arch/i386/math-emu/reg_norm.S Thu Aug 3 20:36:23 1995
@@ -18,11 +18,7 @@
.text
-
- .align 2,144
-.globl _normalize
-
-_normalize:
+ENTRY(normalize)
pushl %ebp
movl %esp,%ebp
pushl %ebx
@@ -34,7 +30,7 @@
je L_ok
pushl $0x220
- call _exception
+ call SYMBOL_NAME(exception)
addl $4,%esp
L_ok:
@@ -86,23 +82,20 @@
L_underflow:
push %ebx
- call _arith_underflow
+ call SYMBOL_NAME(arith_underflow)
pop %ebx
jmp L_exit
L_overflow:
push %ebx
- call _arith_overflow
+ call SYMBOL_NAME(arith_overflow)
pop %ebx
jmp L_exit
/* Normalise without reporting underflow or overflow */
- .align 2,144
-.globl _normalize_nuo
-
-_normalize_nuo:
+ENTRY(normalize_nuo)
pushl %ebp
movl %esp,%ebp
pushl %ebx
@@ -114,7 +107,7 @@
je L_ok_nuo
pushl $0x221
- call _exception
+ call SYMBOL_NAME(exception)
addl $4,%esp
L_ok_nuo:
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/reg_round.S linux/arch/i386/math-emu/reg_round.S
--- linux-1.2.13/arch/i386/math-emu/reg_round.S Fri Aug 19 06:06:50 1994
+++ linux/arch/i386/math-emu/reg_round.S Thu Aug 3 20:36:23 1995
@@ -101,14 +101,12 @@
.text
- .align 2,144
.globl fpu_reg_round
.globl fpu_reg_round_sqrt
.globl fpu_Arith_exit
-.globl _round_reg
/* Entry point when called from C */
-_round_reg:
+ENTRY(round_reg)
pushl %ebp
movl %esp,%ebp
pushl %esi
@@ -435,7 +433,7 @@
*/
xL_precision_lost_up:
push %eax
- call _set_precision_flag_up
+ call SYMBOL_NAME(set_precision_flag_up)
popl %eax
jmp xL_no_precision_loss
@@ -445,7 +443,7 @@
*/
xL_precision_lost_down:
push %eax
- call _set_precision_flag_down
+ call SYMBOL_NAME(set_precision_flag_down)
popl %eax
jmp xL_no_precision_loss
@@ -598,7 +596,7 @@
/* There must be a masked underflow */
push %eax
pushl EX_Underflow
- call _exception
+ call SYMBOL_NAME(exception)
popl %eax
popl %eax
jmp xL_Normalised
@@ -610,12 +608,12 @@
*/
L_underflow_to_zero:
push %eax
- call _set_precision_flag_down
+ call SYMBOL_NAME(set_precision_flag_down)
popl %eax
push %eax
pushl EX_Underflow
- call _exception
+ call SYMBOL_NAME(exception)
popl %eax
popl %eax
@@ -628,7 +626,7 @@
/* The operations resulted in a number too large to represent. */
L_overflow:
push %edi
- call _arith_overflow
+ call SYMBOL_NAME(arith_overflow)
pop %edi
jmp fpu_reg_round_exit
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/reg_u_add.S linux/arch/i386/math-emu/reg_u_add.S
--- linux-1.2.13/arch/i386/math-emu/reg_u_add.S Wed Dec 1 06:44:16 1993
+++ linux/arch/i386/math-emu/reg_u_add.S Thu Aug 3 20:36:23 1995
@@ -29,9 +29,7 @@
#include "control_w.h"
.text
- .align 2,144
-.globl _reg_u_add
-_reg_u_add:
+ENTRY(reg_u_add)
pushl %ebp
movl %esp,%ebp
pushl %esi
@@ -45,7 +43,7 @@
cmpl EXP_UNDER,EXP(%esi)
jg xOp1_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
@@ -53,7 +51,7 @@
cmpl EXP_UNDER,EXP(%edi)
jg xOp2_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/reg_u_div.S linux/arch/i386/math-emu/reg_u_div.S
--- linux-1.2.13/arch/i386/math-emu/reg_u_div.S Thu Jun 2 02:28:28 1994
+++ linux/arch/i386/math-emu/reg_u_div.S Thu Aug 3 20:36:23 1995
@@ -69,13 +69,7 @@
.text
- .align 2,144
-
-.globl _reg_u_div
-
-.globl _divide_kernel
-
-_reg_u_div:
+ENTRY(reg_u_div)
pushl %ebp
movl %esp,%ebp
#ifndef NON_REENTRANT_FPU
@@ -95,7 +89,7 @@
cmpl EXP_UNDER,%eax
jg xOp1_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
@@ -104,14 +98,14 @@
cmpl EXP_UNDER,%eax
jg xOp2_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
xOp2_not_denorm:
#endif DENORM_OPERAND
-_divide_kernel:
+ENTRY(divide_kernel)
#ifdef PARANOID
/* testl $0x80000000, SIGH(%esi) // Dividend */
/* je L_bugged */
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/reg_u_mul.S linux/arch/i386/math-emu/reg_u_mul.S
--- linux-1.2.13/arch/i386/math-emu/reg_u_mul.S Thu Jun 2 02:28:28 1994
+++ linux/arch/i386/math-emu/reg_u_mul.S Thu Aug 3 20:36:23 1995
@@ -44,10 +44,7 @@
.text
- .align 2,144
-
-.globl _reg_u_mul
-_reg_u_mul:
+ENTRY(reg_u_mul)
pushl %ebp
movl %esp,%ebp
#ifndef NON_REENTRANT_FPU
@@ -73,7 +70,7 @@
cmpl EXP_UNDER,%eax
jg xOp1_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
@@ -82,7 +79,7 @@
cmpl EXP_UNDER,%eax
jg xOp2_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/reg_u_sub.S linux/arch/i386/math-emu/reg_u_sub.S
--- linux-1.2.13/arch/i386/math-emu/reg_u_sub.S Wed Dec 1 06:44:16 1993
+++ linux/arch/i386/math-emu/reg_u_sub.S Thu Aug 3 20:36:23 1995
@@ -30,9 +30,7 @@
#include "control_w.h"
.text
- .align 2,144
-.globl _reg_u_sub
-_reg_u_sub:
+ENTRY(reg_u_sub)
pushl %ebp
movl %esp,%ebp
pushl %esi
@@ -46,7 +44,7 @@
cmpl EXP_UNDER,EXP(%esi)
jg xOp1_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
@@ -54,7 +52,7 @@
cmpl EXP_UNDER,EXP(%edi)
jg xOp2_not_denorm
- call _denormal_operand
+ call SYMBOL_NAME(denormal_operand)
orl %eax,%eax
jnz fpu_Arith_exit
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/round_Xsig.S linux/arch/i386/math-emu/round_Xsig.S
--- linux-1.2.13/arch/i386/math-emu/round_Xsig.S Mon Aug 1 00:19:15 1994
+++ linux/arch/i386/math-emu/round_Xsig.S Thu Aug 3 20:36:23 1995
@@ -22,11 +22,7 @@
.text
-
- .align 2,144
-.globl _round_Xsig
-
-_round_Xsig:
+ENTRY(round_Xsig)
pushl %ebp
movl %esp,%ebp
pushl %ebx /* Reserve some space */
@@ -86,10 +82,7 @@
- .align 2,144
-.globl _norm_Xsig
-
-_norm_Xsig:
+ENTRY(norm_Xsig)
pushl %ebp
movl %esp,%ebp
pushl %ebx /* Reserve some space */
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/shr_Xsig.S linux/arch/i386/math-emu/shr_Xsig.S
--- linux-1.2.13/arch/i386/math-emu/shr_Xsig.S Mon Aug 1 00:19:16 1994
+++ linux/arch/i386/math-emu/shr_Xsig.S Thu Aug 3 20:36:23 1995
@@ -21,10 +21,7 @@
#include "fpu_asm.h"
.text
- .align 2,144
-
- .globl _shr_Xsig
-_shr_Xsig:
+ENTRY(shr_Xsig)
push %ebp
movl %esp,%ebp
pushl %esi
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/wm_shrx.S linux/arch/i386/math-emu/wm_shrx.S
--- linux-1.2.13/arch/i386/math-emu/wm_shrx.S Wed Dec 1 06:44:16 1993
+++ linux/arch/i386/math-emu/wm_shrx.S Thu Aug 3 20:36:23 1995
@@ -17,8 +17,6 @@
#include "fpu_asm.h"
.text
- .align 2,144
-
/*---------------------------------------------------------------------------+
| unsigned shrx(void *arg1, unsigned arg2) |
| |
@@ -33,9 +31,7 @@
| Results returned in the 64 bit arg and eax. |
+---------------------------------------------------------------------------*/
- .globl _shrx
-
-_shrx:
+ENTRY(shrx)
push %ebp
movl %esp,%ebp
pushl %esi
@@ -113,8 +109,7 @@
| part which has been shifted out of the arg. |
| Results returned in the 64 bit arg and eax. |
+---------------------------------------------------------------------------*/
- .globl _shrxs
-_shrxs:
+ENTRY(shrxs)
push %ebp
movl %esp,%ebp
pushl %esi
diff -u --recursive --new-file linux-1.2.13/arch/i386/math-emu/wm_sqrt.S linux/arch/i386/math-emu/wm_sqrt.S
--- linux-1.2.13/arch/i386/math-emu/wm_sqrt.S Thu Jun 2 02:28:28 1994
+++ linux/arch/i386/math-emu/wm_sqrt.S Thu Aug 3 20:36:23 1995
@@ -74,10 +74,7 @@
.text
- .align 2,144
-
-.globl _wm_sqrt
-_wm_sqrt:
+ENTRY(wm_sqrt)
pushl %ebp
movl %esp,%ebp
#ifndef NON_REENTRANT_FPU
diff -u --recursive --new-file linux-1.2.13/arch/i386/mm/init.c linux/arch/i386/mm/init.c
--- linux-1.2.13/arch/i386/mm/init.c Thu Aug 3 20:32:00 1995
+++ linux/arch/i386/mm/init.c Thu Aug 3 20:36:23 1995
@@ -161,7 +161,7 @@
int reservedpages = 0;
int datapages = 0;
unsigned long tmp;
- extern int etext;
+ extern int _etext;
end_mem &= PAGE_MASK;
high_memory = end_mem;
@@ -194,7 +194,7 @@
if (mem_map[MAP_NR(tmp)]) {
if (tmp >= 0xA0000 && tmp < 0x100000)
reservedpages++;
- else if (tmp < (unsigned long) &etext)
+ else if (tmp < (unsigned long) &_etext)
codepages++;
else
datapages++;
diff -u --recursive --new-file linux-1.2.13/drivers/scsi/53c7,8xx.c linux/drivers/scsi/53c7,8xx.c
--- linux-1.2.13/drivers/scsi/53c7,8xx.c Thu Aug 3 20:32:36 1995
+++ linux/drivers/scsi/53c7,8xx.c Thu Aug 3 20:36:32 1995
@@ -2266,13 +2266,19 @@
* and SCSI recommended .5s selection timeout.
*/
+ /*
+ * The new gcc won't recognize preprocessing directives
+ * within macro args.
+ */
+#if 0
NCR53c7x0_write8(STIME0_REG_800,
((14 << STIME0_800_SEL_SHIFT) & STIME0_800_SEL_MASK)
/* Disable HTH interrupt */
-#if 0
- | ((15 << STIME0_800_HTH_SHIFT) & STIME0_800_HTH_MASK)
+ | ((15 << STIME0_800_HTH_SHIFT) & STIME0_800_HTH_MASK));
+#else
+ NCR53c7x0_write8(STIME0_REG_800,
+ ((14 << STIME0_800_SEL_SHIFT) & STIME0_800_SEL_MASK));
#endif
- );
diff -u --recursive --new-file linux-1.2.13/drivers/scsi/seagate.c linux/drivers/scsi/seagate.c
--- linux-1.2.13/drivers/scsi/seagate.c Thu Aug 3 20:32:03 1995
+++ linux/drivers/scsi/seagate.c Thu Aug 3 20:36:51 1995
@@ -1105,8 +1105,8 @@
cld
- movl _st0x_cr_sr, %%ebx
- movl _st0x_dr, %%edi
+ movl " SYMBOL_NAME_STR(st0x_cr_sr) ", %%ebx
+ movl " SYMBOL_NAME_STR(st0x_dr) ", %%edi
1: movb (%%ebx), %%al\n"
/*
@@ -1241,8 +1241,8 @@
jz 2f
cld
- movl _st0x_cr_sr, %%esi
- movl _st0x_dr, %%ebx
+ movl " SYMBOL_NAME_STR(st0x_cr_sr) ", %%esi
+ movl " SYMBOL_NAME_STR(st0x_dr) ", %%ebx
1: movb (%%esi), %%al\n"
/*
diff -u --recursive --new-file linux-1.2.13/fs/binfmt_elf.c linux/fs/binfmt_elf.c
--- linux-1.2.13/fs/binfmt_elf.c Thu Aug 3 20:32:35 1995
+++ linux/fs/binfmt_elf.c Thu Aug 3 20:36:55 1995
@@ -18,6 +18,7 @@
#endif
#include <linux/fs.h>
+#include <linux/stat.h>
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/mman.h>
@@ -31,6 +32,7 @@
#include <linux/malloc.h>
#include <linux/shm.h>
#include <linux/personality.h>
+#include <linux/elfcore.h>
#include <asm/segment.h>
#include <asm/pgtable.h>
@@ -48,12 +50,14 @@
static int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs);
static int load_elf_library(int fd);
+static int elf_core_dump(long signr, struct pt_regs * regs);
+extern int dump_fpu (elf_fpregset_t *);
struct linux_binfmt elf_format = {
#ifndef MODULE
- NULL, NULL, load_elf_binary, load_elf_library, NULL
+ NULL, NULL, load_elf_binary, load_elf_library, elf_core_dump
#else
- NULL, &mod_use_count_, load_elf_binary, load_elf_library, NULL
+ NULL, &mod_use_count_, load_elf_binary, load_elf_library, elf_core_dump
#endif
};
@@ -741,6 +745,411 @@
return 0;
}
+/*
+ * ELF core dumper
+ *
+ * Modelled on fs/exec.c:aout_core_dump()
+ * Jeremy Fitzhardinge <jeremy@sw.oz.au>
+ */
+/*
+ * These are the only things you should do on a core-file: use only these
+ * functions to write out all the necessary info.
+ */
+static int dump_write(struct file *file, void *addr, int nr)
+{
+ return file->f_op->write(file->f_inode, file, addr, nr) == nr;
+}
+
+static int dump_seek(struct file *file, off_t off)
+{
+ if (file->f_op->lseek) {
+ if (file->f_op->lseek(file->f_inode, file, off, 0) != off)
+ return 0;
+ } else
+ file->f_pos = off;
+ return 1;
+}
+
+/*
+ * Decide whether a segment is worth dumping; default is yes to be
+ * sure (missing info is worse than too much; etc).
+ * Personally I'd include everything, and use the coredump limit...
+ *
+ * I think we should skip something. But I am not sure how. H.J.
+ */
+static inline int maydump(struct vm_area_struct *vma)
+{
+#if 1
+ if (vma->vm_flags & (VM_WRITE|VM_GROWSUP|VM_GROWSDOWN))
+ return 1;
+ if (vma->vm_flags & (VM_READ|VM_EXEC|VM_EXECUTABLE|VM_SHARED))
+ return 0;
+#endif
+ return 1;
+}
+
+#define roundup(x, y) ((((x)+((y)-1))/(y))*(y))
+
+/* An ELF note in memory */
+struct memelfnote
+{
+ char *name;
+ int type;
+ unsigned int datasz;
+ void *data;
+};
+
+static int notesize(struct memelfnote *en)
+{
+ int sz;
+
+ sz = sizeof(struct elf_note);
+ sz += roundup(strlen(en->name), 4);
+ sz += roundup(en->datasz, 4);
+
+ return sz;
+}
+
+/* #define DEBUG */
+
+#ifdef DEBUG
+static void dump_regs(const char *str, elf_greg_t *r)
+{
+ int i;
+ static const char *regs[] = { "ebx", "ecx", "edx", "esi", "edi", "ebp",
+ "eax", "ds", "es", "fs", "gs",
+ "orig_eax", "eip", "cs",
+ "efl", "uesp", "ss"};
+ printk("Registers: %s\n", str);
+
+ for(i = 0; i < ELF_NGREG; i++)
+ {
+ unsigned long val = r[i];
+ printk(" %-2d %-5s=%08lx %lu\n", i, regs[i], val, val);
+ }
+}
+#endif
+
+#define DUMP_WRITE(addr, nr) \
+ do { if (!dump_write(file, (addr), (nr))) return 0; } while(0)
+#define DUMP_SEEK(off) \
+ do { if (!dump_seek(file, (off))) return 0; } while(0)
+
+static int writenote(struct memelfnote *men, struct file *file)
+{
+ struct elf_note en;
+
+ en.n_namesz = strlen(men->name);
+ en.n_descsz = men->datasz;
+ en.n_type = men->type;
+
+ DUMP_WRITE(&en, sizeof(en));
+ DUMP_WRITE(men->name, en.n_namesz);
+ /* XXX - cast from long long to long to avoid need for libgcc.a */
+ DUMP_SEEK(roundup((unsigned long)file->f_pos, 4)); /* XXX */
+ DUMP_WRITE(men->data, men->datasz);
+ DUMP_SEEK(roundup((unsigned long)file->f_pos, 4)); /* XXX */
+
+ return 1;
+}
+#undef DUMP_WRITE
+#undef DUMP_SEEK
+
+#define DUMP_WRITE(addr, nr) \
+ if (!dump_write(&file, (addr), (nr))) \
+ goto close_coredump;
+#define DUMP_SEEK(off) \
+ if (!dump_seek(&file, (off))) \
+ goto close_coredump;
+/*
+ * Actual dumper
+ *
+ * This is a two-pass process; first we find the offsets of the bits,
+ * and then they are actually written out. If we run out of core limit
+ * we just truncate.
+ */
+static int elf_core_dump(long signr, struct pt_regs * regs)
+{
+ int has_dumped = 0;
+ struct file file;
+ struct inode *inode;
+ unsigned short fs;
+ char corefile[6+sizeof(current->comm)];
+ int segs;
+ int i;
+ size_t size;
+ struct vm_area_struct *vma;
+ struct elfhdr elf;
+ off_t offset = 0, dataoff;
+ int limit = current->rlim[RLIMIT_CORE].rlim_cur;
+ int numnote = 4;
+ struct memelfnote notes[4];
+ struct elf_prstatus prstatus; /* NT_PRSTATUS */
+ elf_fpregset_t fpu; /* NT_PRFPREG */
+ struct elf_prpsinfo psinfo; /* NT_PRPSINFO */
+
+ if (!current->dumpable || limit < PAGE_SIZE)
+ return 0;
+ current->dumpable = 0;
+
+#ifndef CONFIG_BINFMT_ELF
+ MOD_INC_USE_COUNT;
+#endif
+
+ /* Count what's needed to dump, up to the limit of coredump size */
+ segs = 0;
+ size = 0;
+ for(vma = current->mm->mmap; vma != NULL; vma = vma->vm_next) {
+ int sz = vma->vm_end-vma->vm_start;
+
+ if (!maydump(vma))
+ continue;
+
+ if (size+sz > limit)
+ break;
+
+ segs++;
+ size += sz;
+ }
+#ifdef DEBUG
+ printk("elf_core_dump: %d segs taking %d bytes\n", segs, size);
+#endif
+
+ /* Set up header */
+ memcpy(elf.e_ident, ELFMAG, SELFMAG);
+ elf.e_ident[EI_CLASS] = ELFCLASS32;
+ elf.e_ident[EI_DATA] = ELFDATA2LSB;
+ elf.e_ident[EI_VERSION] = EV_CURRENT;
+ memset(elf.e_ident+EI_PAD, 0, EI_NIDENT-EI_PAD);
+
+ elf.e_type = ET_CORE;
+ elf.e_machine = EM_386;
+ elf.e_version = EV_CURRENT;
+ elf.e_entry = 0;
+ elf.e_phoff = sizeof(elf);
+ elf.e_shoff = 0;
+ elf.e_flags = 0;
+ elf.e_ehsize = sizeof(elf);
+ elf.e_phentsize = sizeof(struct elf_phdr);
+ elf.e_phnum = segs+1; /* Include notes */
+ elf.e_shentsize = 0;
+ elf.e_shnum = 0;
+ elf.e_shstrndx = 0;
+
+ fs = get_fs();
+ set_fs(KERNEL_DS);
+ memcpy(corefile,"core.",5);
+#if 0
+ memcpy(corefile+5,current->comm,sizeof(current->comm));
+#else
+ corefile[4] = '\0';
+#endif
+ if (open_namei(corefile,O_CREAT | 2 | O_TRUNC,0600,&inode,NULL)) {
+ inode = NULL;
+ goto end_coredump;
+ }
+ if (!S_ISREG(inode->i_mode))
+ goto end_coredump;
+ if (!inode->i_op || !inode->i_op->default_file_ops)
+ goto end_coredump;
+ file.f_mode = 3;
+ file.f_flags = 0;
+ file.f_count = 1;
+ file.f_inode = inode;
+ file.f_pos = 0;
+ file.f_reada = 0;
+ file.f_op = inode->i_op->default_file_ops;
+ if (file.f_op->open)
+ if (file.f_op->open(inode,&file))
+ goto end_coredump;
+ if (!file.f_op->write)
+ goto close_coredump;
+ has_dumped = 1;
+
+ DUMP_WRITE(&elf, sizeof(elf));
+ offset += sizeof(elf); /* Elf header */
+ offset += (segs+1) * sizeof(struct elf_phdr); /* Program headers */
+
+ /*
+ * Set up the notes in similar form to SVR4 core dumps made
+ * with info from their /proc.
+ */
+ memset(&psinfo, 0, sizeof(psinfo));
+ memset(&prstatus, 0, sizeof(prstatus));
+
+ notes[0].name = "CORE";
+ notes[0].type = NT_PRSTATUS;
+ notes[0].datasz = sizeof(prstatus);
+ notes[0].data = &prstatus;
+ prstatus.pr_info.si_signo = prstatus.pr_cursig = signr;
+ prstatus.pr_sigpend = current->signal;
+ prstatus.pr_sighold = current->blocked;
+ psinfo.pr_pid = prstatus.pr_pid = current->pid;
+ psinfo.pr_ppid = prstatus.pr_ppid = current->p_pptr->pid;
+ psinfo.pr_pgrp = prstatus.pr_pgrp = current->pgrp;
+ psinfo.pr_sid = prstatus.pr_sid = current->session;
+ prstatus.pr_utime.tv_sec = CT_TO_SECS(current->utime);
+ prstatus.pr_utime.tv_usec = CT_TO_USECS(current->utime);
+ prstatus.pr_stime.tv_sec = CT_TO_SECS(current->stime);
+ prstatus.pr_stime.tv_usec = CT_TO_USECS(current->stime);
+ prstatus.pr_cutime.tv_sec = CT_TO_SECS(current->cutime);
+ prstatus.pr_cutime.tv_usec = CT_TO_USECS(current->cutime);
+ prstatus.pr_cstime.tv_sec = CT_TO_SECS(current->cstime);
+ prstatus.pr_cstime.tv_usec = CT_TO_USECS(current->cstime);
+ if (sizeof(elf_gregset_t) != sizeof(struct pt_regs))
+ {
+ printk("sizeof(elf_gregset_t) (%d) != sizeof(struct pt_regs) (%d)\n",
+ sizeof(elf_gregset_t), sizeof(struct pt_regs));
+ }
+ else
+ *(struct pt_regs *)&prstatus.pr_reg = *regs;
+
+#ifdef DEBUG
+ dump_regs("Passed in regs", (elf_greg_t *)regs);
+ dump_regs("prstatus regs", (elf_greg_t *)&prstatus.pr_reg);
+#endif
+
+ notes[1].name = "CORE";
+ notes[1].type = NT_PRPSINFO;
+ notes[1].datasz = sizeof(psinfo);
+ notes[1].data = &psinfo;
+ psinfo.pr_state = current->state;
+ psinfo.pr_sname = (current->state < 0 || current->state > 5) ? '.' : "RSDZTD"[current->state];
+ psinfo.pr_zomb = psinfo.pr_sname == 'Z';
+ psinfo.pr_nice = current->priority-15;
+ psinfo.pr_flag = current->flags;
+ psinfo.pr_uid = current->uid;
+ psinfo.pr_gid = current->gid;
+ {
+ int i, len;
+
+ set_fs(fs);
+
+ len = current->mm->arg_end - current->mm->arg_start;
+ len = len >= ELF_PRARGSZ ? ELF_PRARGSZ : len;
+ memcpy_fromfs(&psinfo.pr_psargs,
+ (const char *)current->mm->arg_start, len);
+ for(i = 0; i < len; i++)
+ if (psinfo.pr_psargs[i] == 0)
+ psinfo.pr_psargs[i] = ' ';
+ psinfo.pr_psargs[len] = 0;
+
+ set_fs(KERNEL_DS);
+ }
+ strncpy(psinfo.pr_fname, current->comm, sizeof(psinfo.pr_fname));
+
+ notes[2].name = "CORE";
+ notes[2].type = NT_TASKSTRUCT;
+ notes[2].datasz = sizeof(*current);
+ notes[2].data = current;
+
+ /* Try to dump the fpu. */
+ prstatus.pr_fpvalid = dump_fpu (&fpu);
+ if (!prstatus.pr_fpvalid)
+ {
+ numnote--;
+ }
+ else
+ {
+ notes[3].name = "CORE";
+ notes[3].type = NT_PRFPREG;
+ notes[3].datasz = sizeof(fpu);
+ notes[3].data = &fpu;
+ }
+
+ /* Write notes phdr entry */
+ {
+ struct elf_phdr phdr;
+ int sz = 0;
+
+ for(i = 0; i < numnote; i++)
+ sz += notesize(¬es[i]);
+
+ phdr.p_type = PT_NOTE;
+ phdr.p_offset = offset;
+ phdr.p_vaddr = 0;
+ phdr.p_paddr = 0;
+ phdr.p_filesz = sz;
+ phdr.p_memsz = 0;
+ phdr.p_flags = 0;
+ phdr.p_align = 0;
+
+ offset += phdr.p_filesz;
+ DUMP_WRITE(&phdr, sizeof(phdr));
+ }
+
+ /* Page-align dumped data */
+ dataoff = offset = roundup(offset, PAGE_SIZE);
+
+ /* Write program headers for segments dump */
+ for(vma = current->mm->mmap, i = 0;
+ i < segs && vma != NULL; vma = vma->vm_next) {
+ struct elf_phdr phdr;
+ size_t sz;
+
+ if (!maydump(vma))
+ continue;
+ i++;
+
+ sz = vma->vm_end - vma->vm_start;
+
+ phdr.p_type = PT_LOAD;
+ phdr.p_offset = offset;
+ phdr.p_vaddr = vma->vm_start;
+ phdr.p_paddr = 0;
+ phdr.p_filesz = sz;
+ phdr.p_memsz = sz;
+ offset += sz;
+ phdr.p_flags = vma->vm_flags & VM_READ ? PF_R : 0;
+ if (vma->vm_flags & VM_WRITE) phdr.p_flags |= PF_W;
+ if (vma->vm_flags & VM_EXEC) phdr.p_flags |= PF_X;
+ phdr.p_align = PAGE_SIZE;
+
+ DUMP_WRITE(&phdr, sizeof(phdr));
+ }
+
+ for(i = 0; i < numnote; i++)
+ if (!writenote(¬es[i], &file))
+ goto close_coredump;
+
+ set_fs(fs);
+
+ DUMP_SEEK(dataoff);
+
+ for(i = 0, vma = current->mm->mmap;
+ i < segs && vma != NULL;
+ vma = vma->vm_next) {
+ unsigned long addr = vma->vm_start;
+ unsigned long len = vma->vm_end - vma->vm_start;
+
+ if (!maydump(vma))
+ continue;
+ i++;
+#ifdef DEBUG
+ printk("elf_core_dump: writing %08lx %lx\n", addr, len);
+#endif
+ DUMP_WRITE((void *)addr, len);
+ }
+
+ if (file.f_pos != offset) {
+ /* Sanity check */
+ printk("elf_core_dump: file.f_pos (%ld) != offset (%ld)\n",
+ file.f_pos, offset);
+ }
+
+ close_coredump:
+ if (file.f_op->release)
+ file.f_op->release(inode,&file);
+
+ end_coredump:
+ set_fs(fs);
+ iput(inode);
+#ifndef CONFIG_BINFMT_ELF
+ MOD_DEC_USE_COUNT;
+#endif
+ return has_dumped;
+}
+
#ifdef MODULE
char kernel_version[] = UTS_RELEASE;
@@ -752,6 +1161,7 @@
register_binfmt(&elf_format);
return 0;
}
+
void cleanup_module( void) {
diff -u --recursive --new-file linux-1.2.13/include/asm-i386/irq.h linux/include/asm-i386/irq.h
--- linux-1.2.13/include/asm-i386/irq.h Sun Nov 27 12:19:54 1994
+++ linux/include/asm-i386/irq.h Thu Aug 3 20:36:56 1995
@@ -79,8 +79,8 @@
"inb $0x21,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\torb $" #mask ",_cache_21\n\t" \
- "movb _cache_21,%al\n\t" \
+ "1:\torb $" #mask ","SYMBOL_NAME_STR(cache_21)"\n\t" \
+ "movb "SYMBOL_NAME_STR(cache_21)",%al\n\t" \
"outb %al,$0x21\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
@@ -91,8 +91,8 @@
"inb $0xA1,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\torb $" #mask ",_cache_A1\n\t" \
- "movb _cache_A1,%al\n\t" \
+ "1:\torb $" #mask ","SYMBOL_NAME_STR(cache_A1)"\n\t" \
+ "movb "SYMBOL_NAME_STR(cache_A1)",%al\n\t" \
"outb %al,$0xA1\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
@@ -106,16 +106,16 @@
"inb $0x21,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\tandb $~(" #mask "),_cache_21\n\t" \
- "movb _cache_21,%al\n\t" \
+ "1:\tandb $~(" #mask "),"SYMBOL_NAME_STR(cache_21)"\n\t" \
+ "movb "SYMBOL_NAME_STR(cache_21)",%al\n\t" \
"outb %al,$0x21\n\t"
#define UNBLK_SECOND(mask) \
"inb $0xA1,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\tandb $~(" #mask "),_cache_A1\n\t" \
- "movb _cache_A1,%al\n\t" \
+ "1:\tandb $~(" #mask "),"SYMBOL_NAME_STR(cache_A1)"\n\t" \
+ "movb "SYMBOL_NAME_STR(cache_A1)",%al\n\t" \
"outb %al,$0xA1\n\t"
#define IRQ_NAME2(nr) nr##_interrupt(void)
@@ -128,36 +128,36 @@
asmlinkage void FAST_IRQ_NAME(nr); \
asmlinkage void BAD_IRQ_NAME(nr); \
__asm__( \
-"\n.align 4\n" \
-"_IRQ" #nr "_interrupt:\n\t" \
+"\n"ALIGN_STR"\n" \
+SYMBOL_NAME_STR(IRQ) #nr "_interrupt:\n\t" \
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ACK_##chip(mask) \
- "incl _intr_count\n\t"\
+ "incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"sti\n\t" \
"movl %esp,%ebx\n\t" \
"pushl %ebx\n\t" \
"pushl $" #nr "\n\t" \
- "call _do_IRQ\n\t" \
+ "call "SYMBOL_NAME_STR(do_IRQ)"\n\t" \
"addl $8,%esp\n\t" \
"cli\n\t" \
UNBLK_##chip(mask) \
- "decl _intr_count\n\t" \
+ "decl "SYMBOL_NAME_STR(intr_count)"\n\t" \
"jmp ret_from_sys_call\n" \
-"\n.align 4\n" \
-"_fast_IRQ" #nr "_interrupt:\n\t" \
+"\n"ALIGN_STR"\n" \
+SYMBOL_NAME_STR(fast_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
ACK_##chip(mask) \
- "incl _intr_count\n\t" \
+ "incl "SYMBOL_NAME_STR(intr_count)"\n\t" \
"pushl $" #nr "\n\t" \
- "call _do_fast_IRQ\n\t" \
+ "call "SYMBOL_NAME_STR(do_fast_IRQ)"\n\t" \
"addl $4,%esp\n\t" \
"cli\n\t" \
UNBLK_##chip(mask) \
- "decl _intr_count\n\t" \
+ "decl "SYMBOL_NAME_STR(intr_count)"\n\t" \
RESTORE_MOST \
-"\n\n.align 4\n" \
-"_bad_IRQ" #nr "_interrupt:\n\t" \
+"\n"ALIGN_STR"\n" \
+SYMBOL_NAME_STR(bad_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
ACK_##chip(mask) \
RESTORE_MOST);
diff -u --recursive --new-file linux-1.2.13/include/asm-i386/system.h linux/include/asm-i386/system.h
--- linux-1.2.13/include/asm-i386/system.h Tue Feb 14 00:39:06 1995
+++ linux/include/asm-i386/system.h Thu Aug 3 20:36:56 1995
@@ -49,10 +49,10 @@
*/
#define switch_to(tsk) do { \
__asm__("cli\n\t" \
- "xchgl %%ecx,_current\n\t" \
+ "xchgl %%ecx,"SYMBOL_NAME_STR(current)"\n\t" \
"ljmp %0\n\t" \
"sti\n\t" \
- "cmpl %%ecx,_last_task_used_math\n\t" \
+ "cmpl %%ecx,"SYMBOL_NAME_STR(last_task_used_math)"\n\t" \
"jne 1f\n\t" \
"clts\n" \
"1:" \
diff -u --recursive --new-file linux-1.2.13/include/linux/elfcore.h linux/include/linux/elfcore.h
--- linux-1.2.13/include/linux/elfcore.h Wed Dec 31 18:00:00 1969
+++ linux/include/linux/elfcore.h Thu Aug 3 20:36:59 1995
@@ -0,0 +1,97 @@
+#ifndef _LINUX_ELFCORE_H
+#define _LINUX_ELFCORE_H
+
+#include <linux/types.h>
+#include <linux/signal.h>
+#include <linux/time.h>
+#include <linux/ptrace.h>
+#include <linux/user.h>
+
+struct elf_siginfo
+{
+ int si_signo; /* signal number */
+ int si_code; /* extra code */
+ int si_errno; /* errno */
+};
+
+typedef unsigned long elf_greg_t;
+#define ELF_NGREG (sizeof (struct pt_regs) / sizeof(elf_greg_t))
+typedef elf_greg_t elf_gregset_t[ELF_NGREG];
+typedef struct
+#ifdef __i386__
+ user_i387_struct
+#else
+#error "The FPU in this arch is not supported by ELF core dump.".
+#endif
+elf_fpregset_t;
+
+#ifndef __KERNEL__
+typedef elf_greg_t greg_t;
+typedef elf_gregset_t gregset_t;
+typedef elf_fpregset_t fpregset_t;
+#define NGREG ELF_NGREG
+#endif
+
+/*
+ * Definitons to generate Intel SVR4-like core files.
+ * These mostly have the same names as the SVR4 types with "elf_"
+ * tacked on the front to prevent clashes with linux definitions,
+ * and the typedef forms have been avoided. This is mostly like
+ * the SVR4 structure, but more Linuxy, with things that Linux does
+ * not support and which gdb doesn't really use excluded.
+ * Fields present but not used are marked with "XXX".
+ */
+struct elf_prstatus
+{
+#if 0
+ long pr_flags; /* XXX Process flags */
+ short pr_why; /* XXX Reason for process halt */
+ short pr_what; /* XXX More detailed reason */
+#endif
+ struct elf_siginfo pr_info; /* Info associated with signal */
+ short pr_cursig; /* Current signal */
+ sigset_t pr_sigpend; /* Set of pending signals */
+ sigset_t pr_sighold; /* Set of held signals */
+#if 0
+ struct sigaltstack pr_altstack; /* Alternate stack info */
+ struct sigaction pr_action; /* Signal action for current sig */
+#endif
+ pid_t pr_pid;
+ pid_t pr_ppid;
+ pid_t pr_pgrp;
+ pid_t pr_sid;
+ struct timeval pr_utime; /* User time */
+ struct timeval pr_stime; /* System time */
+ struct timeval pr_cutime; /* Cumulative user time */
+ struct timeval pr_cstime; /* Cumulative system time */
+#if 0
+ long pr_instr; /* Current instruction */
+#endif
+ elf_gregset_t pr_reg; /* GP registers */
+ int pr_fpvalid; /* True if math co-processor being used. */
+};
+
+#define ELF_PRARGSZ (80) /* Number of chars for args */
+
+struct elf_prpsinfo
+{
+ char pr_state; /* numeric process state */
+ char pr_sname; /* char for pr_state */
+ char pr_zomb; /* zombie */
+ char pr_nice; /* nice val */
+ unsigned long pr_flag; /* flags */
+ uid_t pr_uid;
+ gid_t pr_gid;
+ pid_t pr_pid, pr_ppid, pr_pgrp, pr_sid;
+ /* Lots missing */
+ char pr_fname[16]; /* filename of executable */
+ char pr_psargs[ELF_PRARGSZ]; /* initial part of arg list */
+};
+
+#ifndef __KERNEL__
+typedef struct elf_prstatus prstatus_t;
+typedef struct elf_prpsinfo prpsinfo_t;
+#define PRARGSZ ELF_PRARGSZ
+#endif
+
+#endif /* _LINUX_ELFCORE_H */
diff -u --recursive --new-file linux-1.2.13/include/linux/linkage.h linux/include/linux/linkage.h
--- linux-1.2.13/include/linux/linkage.h Wed Dec 1 06:44:15 1993
+++ linux/include/linux/linkage.h Thu Aug 3 20:37:01 1995
@@ -7,4 +7,46 @@
#define asmlinkage
#endif
+#if !defined(__i486__) && !defined(__i586__)
+#ifdef __ELF__
+#define ALIGN .align 4,0x90
+#define ALIGN_STR ".align 4,0x90"
+#else /* __ELF__ */
+#define ALIGN .align 2,0x90
+#define ALIGN_STR ".align 2,0x90"
+#endif /* __ELF__ */
+#else /* __i486__/__i586__ */
+#ifdef __ELF__
+#define ALIGN .align 16,0x90
+#define ALIGN_STR ".align 16,0x90"
+#else /* __ELF__ */
+#define ALIGN .align 4,0x90
+#define ALIGN_STR ".align 4,0x90"
+#endif /* __ELF__ */
+#endif /* __i486__/__i586__ */
+
+#ifdef __ELF__
+#define SYMBOL_NAME_STR(X) #X
+#define SYMBOL_NAME(X) X
+#ifdef __STDC__
+#define SYMBOL_NAME_LABEL(X) X##:
+#else
+#define SYMBOL_NAME_LABEL(X) X/**/:
+#endif
+#else
+#define SYMBOL_NAME_STR(X) "_"#X
+#ifdef __STDC__
+#define SYMBOL_NAME(X) _##X
+#define SYMBOL_NAME_LABEL(X) _##X##:
+#else
+#define SYMBOL_NAME(X) _/**/X
+#define SYMBOL_NAME_LABEL(X) _/**/X/**/:
+#endif
+#endif
+
+#define ENTRY(name) \
+ .globl SYMBOL_NAME(name); \
+ ALIGN; \
+ SYMBOL_NAME_LABEL(name)
+
#endif
diff -u --recursive --new-file linux-1.2.13/include/linux/modules/ksyms.ver linux/include/linux/modules/ksyms.ver
--- linux-1.2.13/include/linux/modules/ksyms.ver Wed Dec 31 18:00:00 1969
+++ linux/include/linux/modules/ksyms.ver Thu Aug 3 20:37:04 1995
@@ -0,0 +1,199 @@
+/**** This file is generated by genksyms DO NOT EDIT! ****/
+#if defined(CONFIG_MODVERSIONS) && !defined(__GENKSYMS__)
+#ifndef _KSYMS_VER_
+#define _KSYMS_VER_
+#define rename_module_symbol _set_ver(rename_module_symbol, b81c73c1)
+#define register_symtab _set_ver(register_symtab, e910ea66)
+#define EISA_bus _set_ver(EISA_bus, 7e37737c)
+#define wp_works_ok _set_ver(wp_works_ok, f37f99e9)
+#define pcibios_present _set_ver(pcibios_present, a67d0654)
+#define pcibios_find_class _set_ver(pcibios_find_class, 124ec117)
+#define pcibios_find_device _set_ver(pcibios_find_device, 3797daed)
+#define pcibios_read_config_byte _set_ver(pcibios_read_config_byte, e0437e05)
+#define pcibios_read_config_word _set_ver(pcibios_read_config_word, c63f677a)
+#define pcibios_read_config_dword _set_ver(pcibios_read_config_dword, fa4d9b83)
+#define pcibios_strerror _set_ver(pcibios_strerror, df123029)
+#define pcibios_write_config_byte _set_ver(pcibios_write_config_byte, d86a2e59)
+#define pcibios_write_config_word _set_ver(pcibios_write_config_word, fd8433c2)
+#define pcibios_write_config_dword _set_ver(pcibios_write_config_dword, 8a42e2c8)
+#define verify_area _set_ver(verify_area, 4cfda560)
+#define do_mmap _set_ver(do_mmap, 677e7ee1)
+#define do_munmap _set_ver(do_munmap, 6221f117)
+#define zeromap_page_range _set_ver(zeromap_page_range, 7c395a26)
+#define unmap_page_range _set_ver(unmap_page_range, 0110085f)
+#define insert_vm_struct _set_ver(insert_vm_struct, 1f4e4882)
+#define merge_segments _set_ver(merge_segments, 6854be5a)
+#define __get_free_pages _set_ver(__get_free_pages, 5243d78b)
+#define free_pages _set_ver(free_pages, 96448859)
+#define kmalloc _set_ver(kmalloc, d31fb2cb)
+#define kfree_s _set_ver(kfree_s, 1e72eb79)
+#define vmalloc _set_ver(vmalloc, 667f3e25)
+#define vfree _set_ver(vfree, 6df52add)
+#define getname _set_ver(getname, 81487159)
+#define putname _set_ver(putname, b19e8126)
+#define __iget _set_ver(__iget, ee2b6320)
+#define iput _set_ver(iput, 59241ced)
+#define namei _set_ver(namei, 00478bcd)
+#define lnamei _set_ver(lnamei, fcfddbb1)
+#define open_namei _set_ver(open_namei, 414b2b0f)
+#define close_fp _set_ver(close_fp, 1d4c15d8)
+#define check_disk_change _set_ver(check_disk_change, b66ed457)
+#define invalidate_buffers _set_ver(invalidate_buffers, c65255f1)
+#define fsync_dev _set_ver(fsync_dev, a221190d)
+#define permission _set_ver(permission, 0ebf7474)
+#define inode_setattr _set_ver(inode_setattr, 0c80a3c1)
+#define inode_change_ok _set_ver(inode_change_ok, 5d1cb326)
+#define generic_mmap _set_ver(generic_mmap, d4ff59f3)
+#define set_blocksize _set_ver(set_blocksize, f45fda38)
+#define getblk _set_ver(getblk, d40228ac)
+#define bread _set_ver(bread, c73bf0f0)
+#define breada _set_ver(breada, eb8e858c)
+#define brelse _set_ver(brelse, 4c27ac3d)
+#define ll_rw_block _set_ver(ll_rw_block, f3aa4dd3)
+#define __wait_on_buffer _set_ver(__wait_on_buffer, e8fcc968)
+#define dcache_lookup _set_ver(dcache_lookup, 83336566)
+#define dcache_add _set_ver(dcache_add, fe71f11e)
+#define register_chrdev _set_ver(register_chrdev, da99513f)
+#define unregister_chrdev _set_ver(unregister_chrdev, 61ea5ee8)
+#define register_blkdev _set_ver(register_blkdev, 4699a621)
+#define unregister_blkdev _set_ver(unregister_blkdev, d39bbca9)
+#define tty_register_driver _set_ver(tty_register_driver, fcc8591c)
+#define tty_unregister_driver _set_ver(tty_unregister_driver, c78132a8)
+#define tty_std_termios _set_ver(tty_std_termios, cf350678)
+#define block_read _set_ver(block_read, a7fe4f51)
+#define block_write _set_ver(block_write, 902674c9)
+#define block_fsync _set_ver(block_fsync, 182888d8)
+#define wait_for_request _set_ver(wait_for_request, 9ca2932e)
+#define blksize_size _set_ver(blksize_size, dea1eb55)
+#define hardsect_size _set_ver(hardsect_size, ed1ee14f)
+#define blk_size _set_ver(blk_size, f60b5398)
+#define blk_dev _set_ver(blk_dev, dbf5fdd4)
+#define is_read_only _set_ver(is_read_only, b0c5f83e)
+#define set_device_ro _set_ver(set_device_ro, 8fb69e13)
+#define bmap _set_ver(bmap, 73bb8bdd)
+#define sync_dev _set_ver(sync_dev, 9bca536d)
+#define get_blkfops _set_ver(get_blkfops, 83827791)
+#define register_serial _set_ver(register_serial, 3425f38c)
+#define unregister_serial _set_ver(unregister_serial, c013d717)
+#define tty_hangup _set_ver(tty_hangup, e3487df0)
+#define tty_wait_until_sent _set_ver(tty_wait_until_sent, da85d428)
+#define tty_check_change _set_ver(tty_check_change, 705eaab0)
+#define tty_hung_up_p _set_ver(tty_hung_up_p, f99ac1e4)
+#define register_filesystem _set_ver(register_filesystem, 1c7110ef)
+#define unregister_filesystem _set_ver(unregister_filesystem, 5e353af7)
+#define register_binfmt _set_ver(register_binfmt, 66ece706)
+#define unregister_binfmt _set_ver(unregister_binfmt, 41822618)
+#define lookup_exec_domain _set_ver(lookup_exec_domain, 32f10d48)
+#define register_exec_domain _set_ver(register_exec_domain, eda4711f)
+#define unregister_exec_domain _set_ver(unregister_exec_domain, 78ea447c)
+#define request_irq _set_ver(request_irq, 9e81629c)
+#define free_irq _set_ver(free_irq, f487dc0c)
+#define enable_irq _set_ver(enable_irq, 54e09f5f)
+#define disable_irq _set_ver(disable_irq, b4449c1f)
+#define bh_active _set_ver(bh_active, 98fb5ca1)
+#define bh_mask _set_ver(bh_mask, 1abf3d3f)
+#define add_timer _set_ver(add_timer, f13cb728)
+#define del_timer _set_ver(del_timer, c7aff713)
+#define tq_timer _set_ver(tq_timer, 46cf583e)
+#define tq_immediate _set_ver(tq_immediate, 46cf583e)
+#define tq_scheduler _set_ver(tq_scheduler, 46cf583e)
+#define tq_last _set_ver(tq_last, 457cf547)
+#define timer_active _set_ver(timer_active, 5a6747ee)
+#define timer_table _set_ver(timer_table, 9e03b650)
+#define request_dma _set_ver(request_dma, 2a687646)
+#define free_dma _set_ver(free_dma, 5d4b914c)
+#define disable_hlt _set_ver(disable_hlt, 794487ee)
+#define enable_hlt _set_ver(enable_hlt, 9c7077bd)
+#define check_region _set_ver(check_region, b91154fb)
+#define request_region _set_ver(request_region, 138b0a1e)
+#define release_region _set_ver(release_region, f41d6d31)
+#define wake_up _set_ver(wake_up, e8d71419)
+#define wake_up_interruptible _set_ver(wake_up_interruptible, 64c8cb92)
+#define sleep_on _set_ver(sleep_on, 67a00cee)
+#define interruptible_sleep_on _set_ver(interruptible_sleep_on, 6a5fc80d)
+#define schedule _set_ver(schedule, 01000e51)
+#define current _set_ver(current, fc1cb29b)
+#define jiffies _set_ver(jiffies, 2f7c7437)
+#define xtime _set_ver(xtime, e70c0be0)
+#define loops_per_sec _set_ver(loops_per_sec, 40a14192)
+#define need_resched _set_ver(need_resched, dfc016ea)
+#define kill_proc _set_ver(kill_proc, 911f760a)
+#define kill_pg _set_ver(kill_pg, 0a758a45)
+#define kill_sl _set_ver(kill_sl, 49625e94)
+#define panic _set_ver(panic, 400c0de3)
+#define printk _set_ver(printk, ad1148ba)
+#define sprintf _set_ver(sprintf, f9003107)
+#define vsprintf _set_ver(vsprintf, e605cb6b)
+#define simple_strtoul _set_ver(simple_strtoul, bdb8c1e3)
+#define system_utsname _set_ver(system_utsname, 066845bc)
+#define sys_call_table _set_ver(sys_call_table, 79fa4011)
+#define do_signal _set_ver(do_signal, 86f9bc59)
+#define send_sig _set_ver(send_sig, 5cddd8d9)
+#define setup_arg_pages _set_ver(setup_arg_pages, fe68d94a)
+#define copy_strings _set_ver(copy_strings, 232aee96)
+#define create_tables _set_ver(create_tables, ba788fa2)
+#define do_execve _set_ver(do_execve, 8c99dc0a)
+#define flush_old_exec _set_ver(flush_old_exec, c737e178)
+#define open_inode _set_ver(open_inode, 27302cb6)
+#define read_exec _set_ver(read_exec, a80a2dd0)
+#define si_meminfo _set_ver(si_meminfo, bb05fc9a)
+#define sock_register _set_ver(sock_register, d68e1649)
+#define sock_unregister _set_ver(sock_unregister, 72c332bd)
+#define inet_add_protocol _set_ver(inet_add_protocol, ff15a03c)
+#define inet_del_protocol _set_ver(inet_del_protocol, a9c5e9c0)
+#define register_netdevice_notifier _set_ver(register_netdevice_notifier, e7aace7c)
+#define unregister_netdevice_notifier _set_ver(unregister_netdevice_notifier, be114416)
+#define floppy_track_buffer _set_ver(floppy_track_buffer, c6e3f7c2)
+#define register_netdev _set_ver(register_netdev, 298819f5)
+#define unregister_netdev _set_ver(unregister_netdev, f1aa84e4)
+#define ether_setup _set_ver(ether_setup, 580a0211)
+#define alloc_skb _set_ver(alloc_skb, 2bad9df4)
+#define kfree_skb _set_ver(kfree_skb, 75c31065)
+#define dev_kfree_skb _set_ver(dev_kfree_skb, e7dae270)
+#define netif_rx _set_ver(netif_rx, 67a4d7e8)
+#define dev_rint _set_ver(dev_rint, f09d59b2)
+#define dev_tint _set_ver(dev_tint, 71e683aa)
+#define irq2dev_map _set_ver(irq2dev_map, 10bdcd8a)
+#define dev_add_pack _set_ver(dev_add_pack, 672cd2ba)
+#define dev_remove_pack _set_ver(dev_remove_pack, 08d1ec09)
+#define dev_get _set_ver(dev_get, 53977feb)
+#define dev_ioctl _set_ver(dev_ioctl, 08760203)
+#define dev_queue_xmit _set_ver(dev_queue_xmit, 9927ca95)
+#define dev_base _set_ver(dev_base, 1d36a3cf)
+#define dev_close _set_ver(dev_close, 98484140)
+#define arp_find _set_ver(arp_find, d909c1c9)
+#define n_tty_ioctl _set_ver(n_tty_ioctl, 538e5fa6)
+#define tty_register_ldisc _set_ver(tty_register_ldisc, 8fdde939)
+#define kill_fasync _set_ver(kill_fasync, 890501b6)
+#define in_scan_scsis _set_ver(in_scan_scsis, 21874a88)
+#define scsi_register_module _set_ver(scsi_register_module, 8eff1010)
+#define scsi_unregister_module _set_ver(scsi_unregister_module, d913b8f0)
+#define scsi_free _set_ver(scsi_free, 475dddfa)
+#define scsi_malloc _set_ver(scsi_malloc, 1cce3f92)
+#define scsi_register _set_ver(scsi_register, d6e77069)
+#define scsi_unregister _set_ver(scsi_unregister, 3b0b616b)
+#define scsicam_bios_param _set_ver(scsicam_bios_param, 3d965248)
+#define scsi_init_malloc _set_ver(scsi_init_malloc, e5167cbc)
+#define scsi_init_free _set_ver(scsi_init_free, 8b2721f8)
+#define print_command _set_ver(print_command, 6f14cd75)
+#define print_msg _set_ver(print_msg, 0465f877)
+#define print_status _set_ver(print_status, 32f84646)
+#define set_writetime _set_ver(set_writetime, 52131916)
+#define sys_tz _set_ver(sys_tz, aa3c9782)
+#define __wait_on_super _set_ver(__wait_on_super, 61a5c00a)
+#define file_fsync _set_ver(file_fsync, d30a190f)
+#define clear_inode _set_ver(clear_inode, da2b0e9f)
+#define refile_buffer _set_ver(refile_buffer, 8c69e123)
+#define ___strtok _set_ver(___strtok, 8b55d69c)
+#define init_fifo _set_ver(init_fifo, 082629c7)
+#define super_blocks _set_ver(super_blocks, e1f1ee99)
+#define chrdev_inode_operations _set_ver(chrdev_inode_operations, 6ba1faa3)
+#define blkdev_inode_operations _set_ver(blkdev_inode_operations, ed443696)
+#define read_ahead _set_ver(read_ahead, bbcd3768)
+#define get_hash_table _set_ver(get_hash_table, 3b5f3c55)
+#define get_empty_inode _set_ver(get_empty_inode, 554bdc75)
+#define insert_inode_hash _set_ver(insert_inode_hash, 59b8c371)
+#define event _set_ver(event, a6aac9c1)
+#define __down _set_ver(__down, 75aa9e96)
+#endif /* _KSYMS_VER_ */
+#endif /* CONFIG_MODVERSIONS !__GENKSYMS__ */
diff -u --recursive --new-file linux-1.2.13/include/linux/symtab_begin.h linux/include/linux/symtab_begin.h
--- linux-1.2.13/include/linux/symtab_begin.h Mon Jan 23 02:38:30 1995
+++ linux/include/linux/symtab_begin.h Thu Aug 3 20:37:02 1995
@@ -1,16 +1,19 @@
+#include <linux/linkage.h>
#ifdef CONFIG_MODVERSIONS /* CONFIG_MODVERSIONS */
#undef _set_ver
#undef X
#ifndef __GENKSYMS__
#ifdef MODULE
-#define _set_ver(sym,ver) { (void *) & sym ## _R ## ver, "_" #sym "_R" #ver }
+#define _set_ver(sym,ver) \
+ { (void *) & sym ## _R ## ver, SYMBOL_NAME_STR(sym) "_R" #ver }
#else /* MODULE */
-#define _set_ver(sym,ver) { (void *) & sym, "_" #sym "_R" #ver }
+#define _set_ver(sym,ver) \
+ { (void *) & sym, SYMBOL_NAME_STR(sym) "_R" #ver }
#endif /* MODULE */
#define X(a) a
#endif /* __GENKSYMS__ */
#else /* CONFIG_MODVERSIONS */
-#define X(sym) { (void *) & sym, "_" #sym }
+#define X(sym) { (void *) & sym, SYMBOL_NAME_STR(sym)}
#endif /* CONFIG_MODVERSIONS */
#define EMPTY {0,0}
0, 0, 0, {
diff -u --recursive --new-file linux-1.2.13/include/linux/sys.h linux/include/linux/sys.h
--- linux-1.2.13/include/linux/sys.h Wed Feb 22 04:27:52 1995
+++ linux/include/linux/sys.h Thu Aug 3 20:37:02 1995
@@ -27,6 +27,10 @@
* These are system calls that haven't been implemented yet
* but have an entry in the table for future expansion..
*/
+#ifdef __ELF__
+#define sys_quotactl sys_ni_syscall
+#else
#define _sys_quotactl _sys_ni_syscall
+#endif
#endif
diff -u --recursive --new-file linux-1.2.13/include/linux/timex.h linux/include/linux/timex.h
--- linux-1.2.13/include/linux/timex.h Tue Aug 9 01:35:37 1994
+++ linux/include/linux/timex.h Thu Aug 3 20:37:02 1995
@@ -88,6 +88,19 @@
*/
struct timeval time; /* (read only) */
long tick; /* (modified) usecs between clock ticks */
+
+ long ppsfreq; /* pps frequency (scaled ppm) (ro) */
+ long jitter; /* pps jitter (us) (ro) */
+ int shift; /* interval duration (s) (shift) (ro) */
+ long stabil; /* pps stability (scaled ppm) (ro) */
+ long jitcnt; /* jitter limit exceeded (ro) */
+ long calcnt; /* calibration intervals (ro) */
+ long errcnt; /* calibration errors (ro) */
+ long stbcnt; /* stability limit exceeded (ro) */
+
+ int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32; int :32;
+ int :32; int :32; int :32; int :32;
};
/*
diff -u --recursive --new-file linux-1.2.13/kernel/ksyms.c linux/kernel/ksyms.c
--- linux-1.2.13/kernel/ksyms.c Thu Aug 3 20:39:23 1995
+++ linux/kernel/ksyms.c Thu Aug 3 20:41:32 1995
@@ -81,7 +81,8 @@
struct symbol_table symbol_table = {
#include <linux/symtab_begin.h>
#ifdef CONFIG_MODVERSIONS
- { (void *)1 /* Version version :-) */, "_Using_Versions" },
+ { (void *)1 /* Version version :-) */,
+ SYMBOL_NAME_STR (Using_Versions) },
#endif
/* stackable module support */
X(rename_module_symbol),