Commit cb8ca05c authored by Linus Torvalds's avatar Linus Torvalds

Import 2.1.48pre3

parent 57be9f38
......@@ -335,6 +335,15 @@ S: Rue de la Chapelle 51
S: 4850 Moresnet
S: Belgium
N: Cort Dougan
E: cort@cs.nmt.edu
W: http://www.cs.nmt.edu/~cort/
D: PowerPC PReP port
S: Computer Science Department
S: New Mexico Tech
S: Socorro NM 87801
S: USA
N: Thomas Dunbar
E: tdunbar@vtaix.cc.vt.edu
D: TeX & METAFONT hacking/maintenance
......@@ -912,6 +921,14 @@ N: Peter MacDonald
D: SLS distribution
D: Initial implementation of VC's, pty's and select()
N: Paul Mackerras
E: paulus@cs.anu.edu.au
D: Linux port for PCI Power Macintosh
S: Dept. of Computer Science
S: Australian National University
S: Canberra ACT 0200
S: AUSTRALIA
N: James B. MacLean
E: macleajb@ednet.ns.ca
W: http://www.ednet.ns.ca/~macleajb/dosemu.html
......
......@@ -4646,6 +4646,18 @@ CONFIG_RTC
have a use for such a device (such as periodic data sampling), then
say Y here, and go read the file Documentation/rtc.txt for details.
/dev/nvram support
CONFIG_NVRAM
If you say Y here and create a character special file /dev/nvram
with major number 10 and minor number 144 using mknod ("man mknod"),
you get access to the non-volatile memory in the real time clock
(RTC). This is conventionally called "CMOS RAM" on PCs and "NVRAM"
on Ataris. /dev/nvram may be used to view settings there, or to
change them (with some utility). It could also be used to frequently
save a few bits of very important data, that may not be lost over
power-off and for which writing to disk is too insecure. On Atari
machines, /dev/nvram is always configured and needs not be selected.
ARC console time
CONFIG_RTC_ARC
If you boot your Alpha using the ARC firmware, say Y here. This option
......
......@@ -452,6 +452,18 @@ W: http://www.cyberelk.demon.co.uk/parport.html
W: http://www.cage.curtin.edu.au/~campbell/parbus/
S: Maintained
LINUX FOR POWERPC (PREP)
P: Cort Dougan
M: cort@cs.nmt.edu
W: http://www.cs.nmt.edu/~linuxppc/
S: Maintained
LINUX FOR POWER MACINTOSH
P: Paul Mackerras
M: paulus@cs.anu.edu.au
L: linux-pmac@samba.anu.edu.au
S: Maintained
FPU EMULATOR
P: Bill Metzenthen
M: billm@suburbia.net
......
......@@ -236,6 +236,7 @@ CONFIG_82C710_MOUSE=y
# CONFIG_APM is not set
# CONFIG_WATCHDOG is not set
# CONFIG_RTC is not set
# CONFIG_NVRAM is not set
# CONFIG_JOYSTICK is not set
#
......
......@@ -156,6 +156,9 @@ volatile unsigned long smp_idle_map=0; /* Map for idle processors */
volatile unsigned long smp_proc_in_lock[NR_CPUS] = {0,};/* for computing process time */
volatile int smp_process_available=0;
const char lk_lockmsg[] = "lock from interrupt context at %p\n";
/*#define SMP_DEBUG*/
#ifdef SMP_DEBUG
......
......@@ -79,8 +79,6 @@ CORE_FILES := $(CORE_FILES) arch/m68k/ifpsp060/ifpsp.o
SUBDIRS := $(SUBDIRS) arch/m68k/ifpsp060
endif
MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
lilo: vmlinux
if [ -f $(INSTALL_PATH)/vmlinux ]; then mv -f $(INSTALL_PATH)/vmlinux $(INSTALL_PATH)/vmlinux.old; fi
if [ -f $(INSTALL_PATH)/System.map ]; then mv -f $(INSTALL_PATH)/System.map $(INSTALL_PATH)/System.old; fi
......@@ -106,7 +104,5 @@ bootstrap: dummy
archclean:
rm -f vmlinux.gz
@$(MAKEBOOT) clean
archdep:
$(MAKEBOOT) dep
......@@ -195,7 +195,7 @@ static void amikeyb_rep(unsigned long ignore)
static void keyboard_interrupt(int irq, void *dummy, struct pt_regs *fp)
{
unsigned char scancode, break_flag;
unsigned char scancode, break_flag, keycode;
static int reset_warning = 0;
/* save frame for register dump */
......@@ -207,6 +207,7 @@ static void keyboard_interrupt(int irq, void *dummy, struct pt_regs *fp)
/* switch SP pin to output for handshake */
ciaa.cra |= 0x40;
#if 0 // No longer used
/*
* On receipt of the second RESET_WARNING, we must not pull KDAT high
* again to delay the hard reset as long as possible.
......@@ -222,6 +223,7 @@ static void keyboard_interrupt(int irq, void *dummy, struct pt_regs *fp)
} else
/* Probably a mistake, cancel the alert */
reset_warning = 0;
#endif
/* wait until 85 us have expired */
udelay(85);
......@@ -237,27 +239,27 @@ static void keyboard_interrupt(int irq, void *dummy, struct pt_regs *fp)
* Check make/break first
*/
break_flag = scancode & BREAK_MASK;
scancode &= (unsigned char )~BREAK_MASK;
keycode = scancode & (unsigned char)~BREAK_MASK;
if (scancode == AMIKEY_CAPS) {
if (keycode == AMIKEY_CAPS) {
/* if the key is CAPS, fake a press/release. */
handle_scancode(AMIKEY_CAPS);
handle_scancode(BREAK_MASK | AMIKEY_CAPS);
} else if (scancode < 0x78) {
} else if (keycode < 0x78) {
/* handle repeat */
if (break_flag) {
del_timer(&amikeyb_rep_timer);
rep_scancode = 0;
} else {
del_timer(&amikeyb_rep_timer);
rep_scancode = scancode;
rep_scancode = keycode;
amikeyb_rep_timer.expires = jiffies + key_repeat_delay;
amikeyb_rep_timer.prev = amikeyb_rep_timer.next = NULL;
add_timer(&amikeyb_rep_timer);
}
handle_scancode(break_flag | scancode);
handle_scancode(scancode);
} else
switch (scancode) {
switch (keycode) {
case 0x78:
reset_warning = 1;
break;
......@@ -288,7 +290,7 @@ static void keyboard_interrupt(int irq, void *dummy, struct pt_regs *fp)
#endif
default:
printk(KERN_WARNING "amikeyb: unknown keyboard communication code 0x%02x\n",
break_flag | scancode);
scancode);
break;
}
}
......
#
# linux/arch/m68k/boot/Makefile
#
# This file is subject to the terms and conditions of the GNU General Public
# License. See the file "COPYING" in the main directory of this archive
# for more details.
ifdef CONFIG_AMIGA
AMIGA_BOOTSTRAP = amiga_bootstrap
AMIGA_BOOTOBJS := amiga/bootstrap.o amiga/linuxboot.o
AMIGA_HOSTCC = m68k-cbm-amigados-gcc
AMIGA_HOSTINC = -I$(TOPDIR)/include
AMIGA_HOSTFLAGS=-m68030 -O2 -Wall -Dlinux
endif
ifdef CONFIG_ATARI
ATARI_BOOTSTRAP = atari_bootstrap
ATARI_BOOTOBJS := atari/bootstrap.o
ATARI_HOSTCC = m68k-mint-gcc
ATARI_HOSTINC = -I$(TOPDIR)/include
ATARI_HOSTFLAGS = -m68030 -m68881 -Dlinux -O2 -Wall
# BOOTP/TFTP support in bootstrap?
# USE_BOOTP = y
ifdef USE_BOOTP
ATARI_BOOTOBJS += atari/bootp.o
ATARI_HOSTFLAGS += -DUSE_BOOTP
# low-level Ethernet drivers:
# Lance (RieblCard, PAM-VME)
ATARI_BOOTOBJS += atari/ethlance.o
ATARI_HOSTFLAGS += -DETHLL_LANCE
endif
endif
ifdef CONFIG_ATARI
atari_bootstrap: $(ATARI_BOOTOBJS)
$(ATARI_HOSTCC) $(ATARI_HOSTINC) $(ATARI_HOSTFLAGS) -o $@ $(ATARI_BOOTOBJS)
rm -f ../../../bootstrap
ln $@ ../../../bootstrap
endif
ifdef CONFIG_AMIGA
amiga_bootstrap: $(AMIGA_BOOTOBJS)
$(AMIGA_HOSTCC) $(AMIGA_HOSTINC) $(AMIGA_HOSTFLAGS) -o $@ -s -noixemul $(AMIGA_BOOTOBJS)
rm -f ../../../bootstrap
ln $@ ../../../bootstrap
endif
$(AMIGA_BOOTOBJS): %.o: %.c
$(AMIGA_HOSTCC) $(AMIGA_HOSTINC) $(AMIGA_HOSTFLAGS) -c $< -o $@
$(ATARI_BOOTOBJS): %.o: %.c
$(ATARI_HOSTCC) $(ATARI_HOSTINC) $(ATARI_HOSTFLAGS) -c $< -o $@
bootstrap: $(AMIGA_BOOTSTRAP) $(ATARI_BOOTSTRAP)
clean:
rm -f *.o amiga/*.o atari/*.o amiga_bootstrap atari_bootstrap \
../../../bootstrap
dep:
/*
** linux/arch/m68k/boot/amiga/bootstrap.c -- This program loads the Linux/m68k
** kernel into an Amiga and launches
** it.
**
** Copyright 1993,1994 by Hamish Macdonald, Greg Harp
**
** Modified 11-May-94 by Geert Uytterhoeven
** (Geert.Uytterhoeven@cs.kuleuven.ac.be)
** - A3640 MapROM check
** Modified 31-May-94 by Geert Uytterhoeven
** - Memory thrash problem solved
** Modified 07-March-95 by Geert Uytterhoeven
** - Memory block sizes are rounded to a multiple of 256K instead of 1M
** This _requires_ >0.9pl5 to work!
** (unless all block sizes are multiples of 1M :-)
** Modified 11-July-95 by Andreas Schwab
** - Support for ELF kernel (untested!)
** Modified 10-Jan-96 by Geert Uytterhoeven
** - The real Linux/m68k boot code moved to linuxboot.[ch]
** Modified 9-Sep-96 by Geert Uytterhoeven
** - Rewritten option parsing
** - New parameter passing to linuxboot() (linuxboot_args)
** Modified 6-Oct-96 by Geert Uytterhoeven
** - Updated for the new boot information structure
**
** This file is subject to the terms and conditions of the GNU General Public
** License. See the file COPYING in the main directory of this archive
** for more details.
**
*/
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <sys/file.h>
#include <unistd.h>
/* required Linux/m68k include files */
#define __KERNEL_STRICT_NAMES /* This is ugly, I know */
#define _LINUX_POSIX_TYPES_H
#include <asm/posix_types.h>
#include <linux/a.out.h>
#include <linux/elf.h>
#include <asm/amigahw.h>
#include <asm/page.h>
/* Amiga bootstrap include files */
#include "linuxboot.h"
#include "bootstrap.h"
/* Library Bases */
long __oslibversion = 36;
extern const struct ExecBase *SysBase;
static const char *memfile_name = NULL;
static int model = AMI_UNKNOWN;
static const char *ProgramName;
struct linuxboot_args args;
/*
* Function Prototypes
*/
static void Usage(void) __attribute__ ((noreturn));
int main(int argc, char *argv[]);
static void Puts(const char *str);
static long GetChar(void);
static void PutChar(char c);
static void Printf(const char *fmt, ...);
static int Open(const char *path);
static int Seek(int fd, int offset);
static int Read(int fd, char *buf, int count);
static void Close(int fd);
static int FileSize(const char *path);
static void Sleep(u_long micros);
static void Usage(void)
{
fprintf(stderr,
"Linux/m68k Amiga Bootstrap version " AMIBOOT_VERSION "\n\n"
"Usage: %s [options] [kernel command line]\n\n"
"Basic options:\n"
" -h, --help Display this usage information\n"
" -k, --kernel file Use kernel image `file' (default is `vmlinux')\n"
" -r, --ramdisk file Use ramdisk image `file'\n"
"Advanced options:\n"
" -d, --debug Enable debug mode\n"
" -b, --baud speed Set the serial port speed (default is 9600)\n"
" -m, --memfile file Use memory file `file'\n"
" -v, --keep-video Don't reset the video mode\n"
" -t, --model id Set the Amiga model to `id'\n"
" -p, --processor cfm Set the processor type to `cfm\n\n",
ProgramName);
exit(EXIT_FAILURE);
}
int main(int argc, char *argv[])
{
int i;
int processor = 0, debugflag = 0, keep_video = 0;
u_int baud = 0;
const char *kernel_name = NULL;
const char *ramdisk_name = NULL;
char commandline[CL_SIZE] = "";
ProgramName = argv[0];
while (--argc) {
argv++;
if (!strcmp(argv[0], "-h") || !strcmp(argv[0], "--help"))
Usage();
else if (!strcmp(argv[0], "-k") || !strcmp(argv[0], "--kernel"))
if (--argc && !kernel_name) {
kernel_name = argv[1];
argv++;
} else
Usage();
else if (!strcmp(argv[0], "-r") || !strcmp(argv[0], "--ramdisk"))
if (--argc && !ramdisk_name) {
ramdisk_name = argv[1];
argv++;
} else
Usage();
else if (!strcmp(argv[0], "-d") || !strcmp(argv[0], "--debug"))
debugflag = 1;
else if (!strcmp(argv[0], "-b") || !strcmp(argv[0], "--baud"))
if (--argc && !baud) {
baud = atoi(argv[1]);
argv++;
} else
Usage();
else if (!strcmp(argv[0], "-m") || !strcmp(argv[0], "--memfile"))
if (--argc && !memfile_name) {
memfile_name = argv[1];
argv++;
} else
Usage();
else if (!strcmp(argv[0], "-v") || !strcmp(argv[0], "--keep-video"))
keep_video = 1;
else if (!strcmp(argv[0], "-t") || !strcmp(argv[0], "--model"))
if (--argc && !model) {
model = atoi(argv[1]);
argv++;
} else
Usage();
else if (!strcmp(argv[0], "-p") || !strcmp(argv[0], "--processor"))
if (--argc && !processor) {
processor = atoi(argv[1]);
argv++;
} else
Usage();
else
break;
}
if (!kernel_name)
kernel_name = "vmlinux";
SysBase = *(struct ExecBase **)4;
/*
* Join command line options
*/
i = 0;
while (argc--) {
if ((i+strlen(*argv)+1) < CL_SIZE) {
i += strlen(*argv) + 1;
if (commandline[0])
strcat(commandline, " ");
strcat(commandline, *argv++);
}
}
memset(&args.bi, 0, sizeof(args.bi));
if (processor) {
int cpu = processor/100%10;
int fpu = processor/10%10;
int mmu = processor%10;
if (cpu)
args.bi.cputype = 1<<(cpu-1);
if (fpu)
args.bi.fputype = 1<<(fpu-1);
if (mmu)
args.bi.mmutype = 1<<(mmu-1);
}
/*
* If we have a memory file, read the memory information from it
*/
if (memfile_name) {
FILE *fp;
int i;
if ((fp = fopen(memfile_name, "r")) == NULL) {
perror("open memory file");
fprintf(stderr, "Cannot open memory file %s\n", memfile_name);
return(FALSE);
}
if (fscanf(fp, "%lu", &args.bi.chip_size) != 1) {
fprintf(stderr, "memory file does not contain chip memory size\n");
fclose(fp);
return(FALSE);
}
for (i = 0; i < NUM_MEMINFO; i++)
if (fscanf(fp, "%lx %lu", &args.bi.memory[i].addr,
&args.bi.memory[i].size) != 2)
break;
fclose(fp);
args.bi.num_memory = i;
}
strncpy(args.bi.command_line, commandline, CL_SIZE);
args.bi.command_line[CL_SIZE-1] = '\0';
if (model != AMI_UNKNOWN)
args.bi.model = model;
args.kernelname = kernel_name;
args.ramdiskname = ramdisk_name;
args.debugflag = debugflag;
args.keep_video = keep_video;
args.reset_boards = 1;
args.baud = baud;
args.puts = Puts;
args.getchar = GetChar;
args.putchar = PutChar;
args.printf = Printf;
args.open = Open;
args.seek = Seek;
args.read = Read;
args.close = Close;
args.filesize = FileSize;
args.sleep = Sleep;
/* Do The Right Stuff */
linuxboot(&args);
/* if we ever get here, something went wrong */
exit(EXIT_FAILURE);
}
/*
* Routines needed by linuxboot
*/
static void Puts(const char *str)
{
fputs(str, stderr);
fflush(stderr);
}
static long GetChar(void)
{
return(getchar());
}
static void PutChar(char c)
{
fputc(c, stderr);
fflush(stderr);
}
static void Printf(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
vfprintf(stderr, fmt, args);
va_end(args);
fflush(stderr);
}
static int Open(const char *path)
{
return(open(path, O_RDONLY));
}
static int Seek(int fd, int offset)
{
return(lseek(fd, offset, SEEK_SET));
}
static int Read(int fd, char *buf, int count)
{
return(read(fd, buf, count));
}
static void Close(int fd)
{
close(fd);
}
static int FileSize(const char *path)
{
int fd, size = -1;
if ((fd = open(path, O_RDONLY)) != -1) {
size = lseek(fd, 0, SEEK_END);
close(fd);
}
return(size);
}
static void Sleep(u_long micros)
{
struct MsgPort *TimerPort;
struct timerequest *TimerRequest;
if ((TimerPort = CreateMsgPort())) {
if ((TimerRequest = CreateIORequest(TimerPort,
sizeof(struct timerequest)))) {
if (!OpenDevice("timer.device", UNIT_VBLANK,
(struct IORequest *)TimerRequest, 0)) {
TimerRequest->io_Command = TR_ADDREQUEST;
TimerRequest->io_Flags = IOF_QUICK;
TimerRequest->tv_secs = micros/1000000;
TimerRequest->tv_micro = micros%1000000;
DoIO((struct IORequest *)TimerRequest);
CloseDevice((struct IORequest *)TimerRequest);
}
DeleteIORequest(TimerRequest);
}
DeleteMsgPort(TimerPort);
}
}
/*
** linux/arch/m68k/boot/amiga/bootstrap.h -- This file is part of the Amiga
** bootloader.
**
** Copyright 1993, 1994 by Hamish Macdonald
**
** Some minor additions by Michael Rausch 1-11-94
** Modified 11-May-94 by Geert Uytterhoeven
** (Geert.Uytterhoeven@cs.kuleuven.ac.be)
** - inline Supervisor() call
** Modified 10-Jan-96 by Geert Uytterhoeven
** - The real Linux/m68k boot code moved to linuxboot.[ch]
** Modified 9-Sep-96 by Geert Uytterhoeven
** - const library bases
** - fixed register naming for m68k-cbm-amigados-gcc
**
** This file is subject to the terms and conditions of the GNU General Public
** License. See the file COPYING in the main directory of this archive
** for more details.
**
*/
struct MsgPort {
u_char fill1[15];
u_char mp_SigBit;
u_char fill2[18];
};
struct IOStdReq {
u_char fill1[20];
struct Device *io_Device;
u_char fill2[4];
u_short io_Command;
u_char io_Flags;
char io_Error;
u_long io_Actual;
u_long io_Length;
void *io_Data;
u_char fill4[4];
};
#define IOF_QUICK (1<<0)
struct timerequest {
u_char fill1[28];
u_short io_Command;
u_char io_Flags;
u_char fill2[1];
u_long tv_secs;
u_long tv_micro;
};
#define UNIT_VBLANK 1
#define TR_ADDREQUEST 9
struct Library;
struct IORequest;
static __inline char OpenDevice(u_char *devName, u_long unit,
struct IORequest *ioRequest, u_long flags)
{
register char _res __asm("d0");
register const struct ExecBase *a6 __asm("a6") = SysBase;
register u_char *a0 __asm("a0") = devName;
register u_long d0 __asm("d0") = unit;
register struct IORequest *a1 __asm("a1") = ioRequest;
register u_long d1 __asm("d1") = flags;
__asm __volatile ("jsr a6@(-0x1bc)"
: "=r" (_res)
: "r" (a6), "r" (a0), "r" (a1), "r" (d0), "r" (d1)
: "a0","a1","d0","d1", "memory");
return(_res);
}
static __inline void CloseDevice(struct IORequest *ioRequest)
{
register const struct ExecBase *a6 __asm("a6") = SysBase;
register struct IORequest *a1 __asm("a1") = ioRequest;
__asm __volatile ("jsr a6@(-0x1c2)"
: /* no output */
: "r" (a6), "r" (a1)
: "a0","a1","d0","d1", "memory");
}
static __inline char DoIO(struct IORequest *ioRequest)
{
register char _res __asm("d0");
register const struct ExecBase *a6 __asm("a6") = SysBase;
register struct IORequest *a1 __asm("a1") = ioRequest;
__asm __volatile ("jsr a6@(-0x1c8)"
: "=r" (_res)
: "r" (a6), "r" (a1)
: "a0","a1","d0","d1", "memory");
return(_res);
}
static __inline void *CreateIORequest(struct MsgPort *port, u_long size)
{
register struct Library *_res __asm("d0");
register const struct ExecBase *a6 __asm("a6") = SysBase;
register struct MsgPort *a0 __asm("a0") = port;
register u_long d0 __asm("d0") = size;
__asm __volatile ("jsr a6@(-0x28e)"
: "=r" (_res)
: "r" (a6), "r" (a0), "r" (d0)
: "a0","a1","d0","d1", "memory");
return(_res);
}
static __inline void DeleteIORequest(void *ioRequest)
{
register const struct ExecBase *a6 __asm("a6") = SysBase;
register void *a0 __asm("a0") = ioRequest;
__asm __volatile ("jsr a6@(-0x294)"
: /* no output */
: "r" (a6), "r" (a0)
: "a0","a1","d0","d1", "memory");
}
static __inline struct MsgPort *CreateMsgPort(void)
{
register struct MsgPort *_res __asm("d0");
register const struct ExecBase *a6 __asm("a6") = SysBase;
__asm __volatile ("jsr a6@(-0x29a)"
: "=r" (_res)
: "r" (a6)
: "a0","a1","d0","d1", "memory");
return(_res);
}
static __inline void DeleteMsgPort(struct MsgPort *port)
{
register const struct ExecBase *a6 __asm("a6") = SysBase;
register struct MsgPort *a0 __asm("a0") = port;
__asm __volatile ("jsr a6@(-0x2a0)"
: /* no output */
: "r" (a6), "r" (a0)
: "a0","a1","d0","d1", "memory");
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#ifndef _bootp_h
#define _bootp_h
/* --------------------------------------------------------------------- */
/* Ethernet Definitions */
#define PKTLEN 1544
typedef unsigned char Packet[PKTLEN];
#define ETHADDRLEN 6
typedef unsigned char HWADDR[ETHADDRLEN];
typedef struct {
int (*probe)( void );
int (*init)( void );
void (*get_hwaddr)( HWADDR *addr );
int (*snd)( Packet *pkt, int len );
int (*rcv)( Packet *pkt, int *len );
} ETHIF_SWITCH;
/* error codes */
#define ETIMEO -1 /* Timeout */
#define ESEND -2 /* General send error (carrier, abort, ...) */
#define ERCV -3 /* General receive error */
#define EFRAM -4 /* Framing error */
#define EOVERFL -5 /* Overflow (too long packet) */
#define ECRC -6 /* CRC error */
typedef unsigned long IPADDR;
/***************************** Prototypes *****************************/
int get_remote_kernel( const char *kname );
int ll_read( int fd, void *buf, unsigned cnt );
int ll_lseek( int fd, int where, int whence );
int ll_close( int fd );
/************************* End of Prototypes **************************/
#endif /* _bootp_h */
This diff is collapsed.
/*
** bootstrap.h -- This file is a part of the Atari bootloader.
**
** Copyright 1993 by Arjan Knor
**
** Modified by Andreas Schwab
** - clear transparent translation registers
** Modified 18-Aug-96 by Geert Uytterhoeven
** - Updated for the new boot information structure (untested!)
** Modified 1996-11-12 by Andreas Schwab
** - Fixed and tested previous change
**
** This file is subject to the terms and conditions of the GNU General Public
** License. See the file COPYING in the main directory of this archive
** for more details.
**
*/
#ifndef BOOTSTRAP_H
#define BOOTSTRAP_H
/*
* Atari Bootinfo Definitions
*
* All limits herein are `soft' limits, i.e. they don't put constraints
* on the actual parameters in the kernel.
*/
struct atari_bootinfo {
unsigned long machtype; /* machine type */
unsigned long cputype; /* system CPU */
unsigned long fputype; /* system FPU */
unsigned long mmutype; /* system MMU */
int num_memory; /* # of memory blocks found */
struct mem_info memory[NUM_MEMINFO]; /* memory description */
struct mem_info ramdisk; /* ramdisk description */
char command_line[CL_SIZE]; /* kernel command line parameters */
unsigned long mch_cookie; /* _MCH cookie from TOS */
};
/* _MCH cookie values */
#define MACH_ST 0
#define MACH_STE 1
#define MACH_TT 2
#define MACH_FALCON 3
/* some constants for memory handling */
#define ST_RAM 0
#define TT_RAM 1
#define TT_RAM_BASE (u_long)(0x01000000)
#define MB (1024 * 1024)
#define START_MEM (bi.memory[0].addr)
#define MEM_SIZE (bi.memory[0].size)
/* the various CPU- and FPU-types */
#define AFF_68000 (1)
#define AFF_68020 (2)
#define AFF_68030 (4)
#define AFF_68040 (8)
#define AFF_68881 (16)
#define AFF_68882 (32)
/* the possible OS-languages */
#define USA 0
#define FRG 1
#define FRA 2
#define UK 3
#define SPA 4
#define ITA 5
#define SWE 6
#define SWF 7
#define SWG 8
#define TUR 9
#define FIN 10
#define NOR 11
#define DEN 12
#define SAU 13
#define HOL 14
/* some inline functions */
static __inline int fpu_idle_frame_size (void)
{
char fpu_frame[216];
__asm__ __volatile__ ("fnop"::);
__asm__ __volatile__ ("fsave %0@" : : "a" (fpu_frame));
return fpu_frame[1];
}
static __inline void change_stack (u_long *stackp)
{
__asm__ volatile ("movel %0,sp\n\t" :: "g" (stackp) : "sp");
}
static __inline void disable_interrupts (void)
{
__asm__ volatile ("orw #0x700,sr":);
}
extern struct atari_bootinfo bi;
static __inline void disable_cache (void)
{
__asm__ volatile ("movec %0,cacr" :: "d" (0));
if (bi.cputype & CPU_68060) {
/* '060: clear branch cache after disabling it;
* disable superscalar operation (and enable FPU) */
__asm__ volatile ("movec %0,cacr" :: "d" (0x00400000));
__asm__ volatile ("moveq #0,d0;"
".long 0x4e7b0808" /* movec d0,pcr */
: /* no outputs */
: /* no inputs */
: "d0");
}
}
static __inline void disable_mmu (void)
{
if (bi.cputype & (CPU_68040|CPU_68060)) {
__asm__ volatile ("moveq #0,d0;"
".long 0x4e7b0003;" /* movec d0,tc */
".long 0x4e7b0004;" /* movec d0,itt0 */
".long 0x4e7b0005;" /* movec d0,itt1 */
".long 0x4e7b0006;" /* movec d0,dtt0 */
".long 0x4e7b0007" /* movec d0,dtt1 */
: /* no outputs */
: /* no inputs */
: "d0");
}
else {
__asm__ volatile ("subl #4,sp\n\t"
"pmove tc,sp@\n\t"
"bclr #7,sp@\n\t"
"pmove sp@,tc\n\t"
"addl #4,sp");
if (bi.cputype & CPU_68030) {
__asm__ volatile ("clrl sp@-\n\t"
".long 0xf0170800\n\t" /* pmove sp@,tt0 */
".long 0xf0170c00\n\t" /* pmove sp@,tt1 */
"addl #4,sp\n");
}
}
}
static __inline void jump_to_mover (void *, void *, void *, void *, int, int,
void *) __attribute__ ((noreturn));
static __inline void jump_to_mover (void *kernel_start, void *mem_start,
void *ramdisk_end, void *mem_end,
int kernel_size, int ramdisk_size,
void *mover_addr)
{
asm volatile ("movel %0,a0\n\t"
"movel %1,a1\n\t"
"movel %2,a2\n\t"
"movel %3,a3\n\t"
"movel %4,d0\n\t"
"movel %5,d1\n\t"
"jmp %6@\n"
: /* no outputs */
: "g" (kernel_start), "g" (mem_start),
"g" (ramdisk_end), "g" (mem_end),
"g" (kernel_size), "g" (ramdisk_size),
"a" (mover_addr)
: "a0", "a1", "a2", "a3", "d0", "d1");
/* Avoid warning that function may return */
for (;;) ;
}
#endif /* BOOTSTRAP_H */
This diff is collapsed.
#ifndef _ethlance_h
#define _ethlance_h
extern ETHIF_SWITCH LanceSwitch;
#endif /* _ethlance_h */
typedef struct _osheader
{
unsigned short os_entry;
unsigned short os_version;
void *reseth;
struct _osheader *os_beg;
void *os_end;
long os_rsv1;
void *os_magic;
long os_date;
unsigned short os_conf;
unsigned short os_dosdate;
char **p_root;
unsigned char **pkbshift;
void **p_run;
char *p_rsv2;
} OSHEADER;
#define phystop ((unsigned long *)0x42e)
#define _sysbase ((OSHEADER **)0x4f2)
#define _p_cookies ((unsigned long **)0x5a0)
#define ramtop ((unsigned long *)0x5a4)
......@@ -218,6 +218,10 @@ define_bool CONFIG_VT y
define_bool CONFIG_VT_CONSOLE y
define_bool CONFIG_FB_CONSOLE y
if [ "$CONFIG_ATARI" = "y" ]; then
define_bool CONFIG_NVRAM y
fi
tristate 'Parallel printer support' CONFIG_PRINTER
if [ "$CONFIG_AMIGA" = "y" ]; then
dep_tristate 'Multiface Card III parallel support' CONFIG_MULTIFACE_III_LP $CONFIG_PRINTER
......@@ -243,6 +247,7 @@ if [ "$CONFIG_AMIGA" = "y" ]; then
dep_tristate 'GVP IO-Extender parallel printer support' CONFIG_GVPIOEXT_LP $CONFIG_GVPIOEXT
dep_tristate 'GVP IO-Extender PLIP support' CONFIG_GVPIOEXT_PLIP $CONFIG_GVPIOEXT
tristate 'Multiface Card III serial support' CONFIG_MULTIFACE_III_TTY
bool 'Hisoft Whippet PCMCIA serial support' CONFIG_WHIPPET
fi
if [ "$CONFIG_ATARI_MFPSER" = "y" -o "$CONFIG_ATARI_SCC" = "y" -o \
"$CONFIG_ATARI_MIDI" = "y" -o "$CONFIG_AMIGA_BUILTIN_SERIAL" = "y" -o \
......
......@@ -152,9 +152,6 @@ CONFIG_NETDEVICES=y
# Filesystems
#
# CONFIG_QUOTA is not set
# CONFIG_DCACHE_PRELOAD is not set
# CONFIG_OMIRR is not set
# CONFIG_TRANS_NAMES is not set
CONFIG_MINIX_FS=y
CONFIG_EXT2_FS=y
CONFIG_FAT_FS=y
......
......@@ -37,6 +37,7 @@
#include <linux/linkage.h>
#include <asm/entry.h>
|################################
| (1) EXAMPLE CALL-OUTS #
| #
......
......@@ -420,7 +420,10 @@ int vc_resize(unsigned long lines, unsigned long columns)
set_scrmem(fg_console, 0);
set_origin(fg_console);
#endif /* XXX */
/* don't update in graphics mode */
if (currcons == fg_console && vt_cons[fg_console]->vc_mode == KD_TEXT)
update_screen(fg_console);
set_cursor(fg_console);
return 0;
......@@ -512,7 +515,8 @@ void vc_resize_con(unsigned long lines, unsigned long columns,
console_table[currcons]->winsize = ws;
}
if (currcons == fg_console)
/* don't update in graphics mode */
if (currcons == fg_console && vt_cons[fg_console]->vc_mode == KD_TEXT)
update_screen(fg_console);
}
......
......@@ -273,6 +273,9 @@ Ltest_berr:
movel %d2,%a0@
lea %pc@(SYMBOL_NAME(is_medusa)),%a0
movel %d3,%a0@
lea %pc@(Liobase),%a0
movel %d2,%a0@ /* On a Hades the iobase must be set
before opening the serial port. */
Lnotypetest:
#endif
......
......@@ -283,8 +283,9 @@ asmlinkage int sys_execve(char *name, char **argv, char **envp)
struct pt_regs *regs = (struct pt_regs *) &name;
lock_kernel();
error = getname(name, &filename);
if (error)
filename = getname(name);
error = PTR_ERR(filename);
if (IS_ERR(filename))
goto out;
error = do_execve(filename, argv, envp, regs);
putname(filename);
......
......@@ -205,11 +205,10 @@ asmlinkage int sys_ioperm(unsigned long from, unsigned long num, int on)
return -ENOSYS;
}
/* Convert virtual address VADDR to physical address PADDR, recording
in VALID whether the virtual address is actually mapped. */
#define virt_to_phys_040(vaddr, paddr, valid) \
{ \
unsigned long _mmusr; \
/* Convert virtual address VADDR to physical address PADDR */
#define virt_to_phys_040(vaddr) \
({ \
unsigned long _mmusr, _paddr; \
\
__asm__ __volatile__ (".chip 68040\n\t" \
"ptestr (%1)\n\t" \
......@@ -217,20 +216,14 @@ asmlinkage int sys_ioperm(unsigned long from, unsigned long num, int on)
".chip 68k" \
: "=r" (_mmusr) \
: "a" (vaddr)); \
if (!(_mmusr & MMU_R_040)) \
(valid) = 0; \
else \
{ \
(valid) = 1; \
(paddr) = _mmusr & PAGE_MASK; \
} \
}
_paddr = (_mmusr & MMU_R_040) ? (_mmusr & PAGE_MASK) : 0; \
_paddr; \
})
static inline int
cache_flush_040 (unsigned long addr, int scope, int cache, unsigned long len)
{
unsigned long paddr;
int valid;
unsigned long paddr, i;
switch (scope)
{
......@@ -261,19 +254,31 @@ cache_flush_040 (unsigned long addr, int scope, int cache, unsigned long len)
break;
case FLUSH_SCOPE_LINE:
len >>= 4;
/* Find the physical address of the first mapped page in the
address range. */
if ((paddr = virt_to_phys_040(addr))) {
paddr += addr & ~(PAGE_MASK | 15);
len = (len + (addr & 15) + 15) >> 4;
} else {
unsigned long tmp = PAGE_SIZE - (addr & ~PAGE_MASK);
if (len <= tmp)
return 0;
addr += tmp;
len -= tmp;
tmp = PAGE_SIZE;
for (;;)
{
virt_to_phys_040 (addr, paddr, valid);
if (valid)
if ((paddr = virt_to_phys_040(addr)))
break;
if (len <= PAGE_SIZE / 16)
if (len <= tmp)
return 0;
len -= (PAGE_SIZE - (addr & PAGE_MASK)) / 16;
addr = (addr + PAGE_SIZE) & PAGE_MASK;
addr += tmp;
len -= tmp;
}
len = (len + 15) >> 4;
}
i = (PAGE_SIZE - (paddr & ~PAGE_MASK)) >> 4;
while (len--)
{
switch (cache)
......@@ -301,36 +306,33 @@ cache_flush_040 (unsigned long addr, int scope, int cache, unsigned long len)
: : "a" (paddr));
break;
}
addr += 16;
if (len)
{
if ((addr & (PAGE_SIZE-1)) < 16)
if (!--i && len)
{
addr += PAGE_SIZE;
i = PAGE_SIZE / 16;
/* Recompute physical address when crossing a page
boundary. */
for (;;)
{
virt_to_phys_040 (addr, paddr, valid);
if (valid)
if ((paddr = virt_to_phys_040(addr)))
break;
if (len <= PAGE_SIZE / 16)
if (len <= i)
return 0;
len -= (PAGE_SIZE - (addr & PAGE_MASK)) / 16;
addr = (addr + PAGE_SIZE) & PAGE_MASK;
len -= i;
addr += PAGE_SIZE;
}
}
else
paddr += 16;
}
}
break;
default:
case FLUSH_SCOPE_PAGE:
len += (addr & ~PAGE_MASK) + (PAGE_SIZE - 1);
for (len >>= PAGE_SHIFT; len--; addr += PAGE_SIZE)
{
virt_to_phys_040 (addr, paddr, valid);
if (!valid)
if (!(paddr = virt_to_phys_040(addr)))
continue;
switch (cache)
{
......@@ -363,21 +365,21 @@ cache_flush_040 (unsigned long addr, int scope, int cache, unsigned long len)
return 0;
}
#define virt_to_phys_060(vaddr, paddr, valid) \
{ \
#define virt_to_phys_060(vaddr) \
({ \
unsigned long paddr; \
__asm__ __volatile__ (".chip 68060\n\t" \
"plpar (%0)\n\t" \
".chip 68k" \
: "=a" (paddr) \
: "0" (vaddr)); \
(valid) = 1; /* XXX */ \
}
(paddr); /* XXX */ \
})
static inline int
cache_flush_060 (unsigned long addr, int scope, int cache, unsigned long len)
{
unsigned long paddr;
int valid;
unsigned long paddr, i;
switch (scope)
{
......@@ -407,19 +409,30 @@ cache_flush_060 (unsigned long addr, int scope, int cache, unsigned long len)
break;
case FLUSH_SCOPE_LINE:
len >>= 4;
/* Find the physical address of the first mapped page in the
address range. */
len += addr & 15;
addr &= -16;
if (!(paddr = virt_to_phys_060(addr))) {
unsigned long tmp = PAGE_SIZE - (addr & ~PAGE_MASK);
if (len <= tmp)
return 0;
addr += tmp;
len -= tmp;
tmp = PAGE_SIZE;
for (;;)
{
virt_to_phys_060 (addr, paddr, valid);
if (valid)
if ((paddr = virt_to_phys_060(addr)))
break;
if (len <= PAGE_SIZE / 16)
if (len <= tmp)
return 0;
len -= (PAGE_SIZE - (addr & PAGE_MASK)) / 16;
addr = (addr + PAGE_SIZE) & PAGE_MASK;
addr += tmp;
len -= tmp;
}
}
len = (len + 15) >> 4;
i = (PAGE_SIZE - (paddr & ~PAGE_MASK)) >> 4;
while (len--)
{
switch (cache)
......@@ -447,36 +460,35 @@ cache_flush_060 (unsigned long addr, int scope, int cache, unsigned long len)
: : "a" (paddr));
break;
}
addr += 16;
if (len)
if (!--i && len)
{
if ((addr & (PAGE_SIZE-1)) < 16)
{
/* Recompute the physical address when crossing a
page boundary. */
addr += PAGE_SIZE;
i = PAGE_SIZE / 16;
/* Recompute physical address when crossing a page
boundary. */
for (;;)
{
virt_to_phys_060 (addr, paddr, valid);
if (valid)
if ((paddr = virt_to_phys_060(addr)))
break;
if (len <= PAGE_SIZE / 16)
if (len <= i)
return 0;
len -= (PAGE_SIZE - (addr & PAGE_MASK)) / 16;
addr = (addr + PAGE_SIZE) & PAGE_MASK;
len -= i;
addr += PAGE_SIZE;
}
}
else
paddr += 16;
}
}
break;
default:
case FLUSH_SCOPE_PAGE:
len += (addr & ~PAGE_MASK) + (PAGE_SIZE - 1);
addr &= PAGE_MASK; /* Workaround for bug in some
revisions of the 68060 */
for (len >>= PAGE_SHIFT; len--; addr += PAGE_SIZE)
{
virt_to_phys_060 (addr, paddr, valid);
if (!valid)
if (!(paddr = virt_to_phys_060(addr)))
continue;
switch (cache)
{
......
......@@ -80,7 +80,7 @@ bool 'System V IPC' CONFIG_SYSVIPC
bool 'Sysctl support' CONFIG_SYSCTL
if [ "$CONFIG_SGI" != "y" ]; then
tristate 'Parallel port support' CONFIG_PARPORT
tristate 'Parallel port support' CONFIG_PNP_PARPORT
fi
endmenu
......
......@@ -86,6 +86,7 @@ CONFIG_INET=y
# CONFIG_IP_ACCT is not set
# CONFIG_IP_ROUTER is not set
# CONFIG_NET_IPIP is not set
# CONFIG_SYN_COOKIES is not set
#
# (it is safe to leave these untouched)
......
......@@ -278,7 +278,10 @@ loc_ethernet: li s1,~JAZZ_IE_ETHERNET
b loc_call
li t3,PTRSIZE*JAZZ_ETHERNET_IRQ # delay slot
loc_scsi: PANIC("Unimplemented loc_scsi handler")
loc_scsi: li s1,~JAZZ_IE_SCSI
li a0,12 # JAZZ_SCSI_IRQ */
b loc_call
li t3,PTRSIZE*12 # JAZZ_ETHERNET_IRQ # delay slot
/*
* Keyboard interrupt handler
......
......@@ -375,6 +375,7 @@ void vdma_enable(int channel)
* Clear all interrupt flags
*/
r4030_write_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5),
r4030_read_reg32(JAZZ_R4030_CHNL_ENABLE+(channel<<5)) |
R4030_TC_INTR | R4030_MEM_INTR | R4030_ADDR_INTR);
/*
......
......@@ -11,6 +11,7 @@
#include <linux/ioport.h>
#include <linux/sched.h>
#include <linux/interrupt.h>
#include <asm/bootinfo.h>
#include <asm/irq.h>
#include <asm/jazz.h>
#include <asm/ptrace.h>
......@@ -36,11 +37,21 @@ extern void jazz_machine_restart(char *command);
extern void jazz_machine_halt(void);
extern void jazz_machine_power_off(void);
void (*board_time_init)(struct irqaction *irq);
__initfunc(static void jazz_time_init(struct irqaction *irq))
{
/* set the clock to 100 Hz */
r4030_write_reg32(JAZZ_TIMER_INTERVAL, 9);
setup_x86_irq(0, irq);
}
__initfunc(static void jazz_irq_setup(void))
{
set_except_vector(0, jazz_handle_int);
r4030_write_reg16(JAZZ_IO_IRQ_ENABLE,
JAZZ_IE_ETHERNET |
JAZZ_IE_SCSI |
JAZZ_IE_SERIAL1 |
JAZZ_IE_SERIAL2 |
JAZZ_IE_PARALLEL |
......@@ -57,14 +68,42 @@ __initfunc(static void jazz_irq_setup(void))
__initfunc(void jazz_setup(void))
{
tag *atag;
/*
* we just check if a tag_screen_info can be gathered
* in setup_arch(), if yes we don't proceed futher...
*/
atag = bi_TagFind(tag_screen_info);
if (!atag) {
/*
* If no, we try to find the tag_arc_displayinfo which is
* always created by Milo for an ARC box (for now Milo only
* works on ARC boxes :) -Stoned.
*/
atag = bi_TagFind(tag_arcdisplayinfo);
if (atag) {
screen_info.orig_x =
((mips_arc_DisplayInfo*)TAGVALPTR(atag))->cursor_x;
screen_info.orig_y =
((mips_arc_DisplayInfo*)TAGVALPTR(atag))->cursor_y;
screen_info.orig_video_cols =
((mips_arc_DisplayInfo*)TAGVALPTR(atag))->columns;
screen_info.orig_video_lines =
((mips_arc_DisplayInfo*)TAGVALPTR(atag))->lines;
}
}
irq_setup = jazz_irq_setup;
fd_cacheflush = jazz_fd_cacheflush;
feature = &jazz_feature; // Will go away
port_base = JAZZ_PORT_BASE;
isa_slot_offset = 0xe3000000;
request_region(0x00,0x20,"dma1");
request_region(0x40,0x20,"timer");
request_region(0x80,0x10,"dma page reg");
request_region(0xc0,0x20,"dma2");
board_time_init = jazz_time_init;
/* The RTC is outside the port address space */
_machine_restart = jazz_machine_restart;
......
This diff is collapsed.
......@@ -131,20 +131,21 @@ asmlinkage int sys_clone(struct pt_regs *regs)
*/
asmlinkage int sys_execve(struct pt_regs *regs)
{
int res;
int error;
char * filename;
lock_kernel();
res = getname((char *) (long)regs->regs[4], &filename);
if (res)
filename = getname((char *) (long)regs->regs[4]);
error = PTR_ERR(filename);
if (IS_ERR(filename))
goto out;
res = do_execve(filename, (char **) (long)regs->regs[5],
error = do_execve(filename, (char **) (long)regs->regs[5],
(char **) (long)regs->regs[6], regs);
putname(filename);
out:
unlock_kernel();
return res;
return error;
}
/*
......
......@@ -7,7 +7,7 @@
*
* Copyright (C) 1995, 1996 by Ralf Baechle
*
* $Id: syscalls.h,v 1.5 1997/06/25 17:08:35 ralf Exp $
* $Id: syscalls.h,v 1.6 1997/07/20 15:32:25 ralf Exp $
*/
/*
......@@ -208,3 +208,5 @@ SYS(sys_getresuid, 3)
SYS(sys_query_module, 5)
SYS(sys_poll, 3)
SYS(sys_nfsservctl, 3)
SYS(sys_setresgid, 3) /* 4190 */
SYS(sys_getresgid, 3)
This diff is collapsed.
......@@ -7,7 +7,7 @@
*
* Copyright (C) 1995, 1996, 1997 by Ralf Baechle
*
* $Id: sysmips.c,v 1.4 1997/06/30 15:52:37 ralf Exp $
* $Id: sysmips.c,v 1.5 1997/07/20 15:32:27 ralf Exp $
*/
#include <linux/errno.h>
#include <linux/linkage.h>
......@@ -57,18 +57,21 @@ sys_sysmips(int cmd, int arg1, int arg2, int arg3)
switch(cmd)
{
case SETNAME:
if (!suser()) {
retval = -EPERM;
if (!suser())
goto out;
}
name = (char *) arg1;
len = strlen_user(name);
if (len < 0)
retval = len;
if (len < 0)
goto out;
if (len == 0 || len > __NEW_UTS_LEN)
retval = -EINVAL;
if (len == 0 || len > __NEW_UTS_LEN)
goto out;
copy_from_user(system_utsname.nodename, name, len);
system_utsname.nodename[len] = '\0';
retval = 0;
......
......@@ -81,17 +81,6 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
*/
bad_area:
up(&mm->mmap_sem);
/* Did we have an exception handler installed? */
fixup = search_exception_table(regs->cp0_epc);
if (fixup) {
long new_epc;
new_epc = fixup_exception(dpf_reg, fixup, regs->cp0_epc);
printk(KERN_DEBUG "Exception at [<%lx>] (%lx)\n",
regs->cp0_epc, new_epc);
regs->cp0_epc = new_epc;
goto out;
}
if (user_mode(regs)) {
tsk->tss.cp0_badvaddr = address;
......@@ -111,6 +100,18 @@ asmlinkage void do_page_fault(struct pt_regs *regs, unsigned long writeaccess,
force_sig(SIGSEGV, tsk);
goto out;
}
/* Did we have an exception handler installed? */
fixup = search_exception_table(regs->cp0_epc);
if (fixup) {
long new_epc;
new_epc = fixup_exception(dpf_reg, fixup, regs->cp0_epc);
printk(KERN_DEBUG "%s: Exception at [<%lx>] (%lx)\n",
tsk->comm, regs->cp0_epc, new_epc);
regs->cp0_epc = new_epc;
goto out;
}
/*
* Oops. The kernel tried to access some bad page. We'll have to
* terminate things with extreme prejudice.
......
......@@ -156,7 +156,6 @@ static inline void
zeropage(unsigned long page)
{
flush_page_to_ram(page);
sync_mem();
__zeropage(page);
}
......
......@@ -25,61 +25,62 @@ HOSTCC = gcc
CC = gcc$(SUFFIX)
CFLAGSINC = -D__KERNEL__ -I$(TOPDIR)/include -D__powerpc__
CFLAGS = $(CFLAGSINC) \
-Wstrict-prototypes \
-fomit-frame-pointer \
-Wstrict-prototypes -fomit-frame-pointer \
-fno-builtin \
-finhibit-size-directive -fno-strength-reduce\
-O2 -fsigned-char -pipe -mstring -mmultiple
-finhibit-size-directive \
-O2 -fsigned-char -pipe -ffixed-r2 -mstring -mmultiple -msoft-float
# -fverbose-asm
CPP = $(CC) -E $(CFLAGS)
AR = ar$(SUFFIX)
RANLIB = ranlib$(SUFFIX)
STRIP = strip$(SUFFIX)
NM = nm$(SUFFIX)
ifdef CONFIG_603
CFLAGS := $(CFLAGS) -mcpu=603 -DCPU=603
ifdef CONFIG_601
CFLAGS := $(CFLAGS) -mcpu=601 -DCPU=601
endif
ifdef CONFIG_603e
CFLAGS := $(CFLAGS) -mcpu=603e -DCPU=603e
ifdef CONFIG_603
CFLAGS := $(CFLAGS) -mcpu=603 -DCPU=603
endif
ifdef CONFIG_604
CFLAGS := $(CFLAGS) -mcpu=604 -DCPU=604
endif
#
# NFS_ROOT_NAME specifies the default name of the directory to mount
# as root via NFS, if the kernel does not get the "root=" option from
# the boot loader. The "%s" will be replaced by the IP-number of the
# local system.
#
NFS_ROOT = -DNFS_ROOT="\"/joplin/ppc/root\""
HEAD := arch/ppc/kernel/head.o
ARCH_SUBDIRS = arch/ppc/kernel arch/ppc/mm arch/ppc/lib
SUBDIRS := $(SUBDIRS) $(ARCH_SUBDIRS)
ARCHIVES := arch/ppc/kernel/kernel.o arch/ppc/mm/mm.o arch/ppc/lib/lib.o $(ARCHIVES)
CORE_FILES := arch/ppc/kernel/kernel.o arch/ppc/mm/mm.o arch/ppc/lib/lib.o $(CORE_FILES)
MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
netboot: vmlinux
checks:
@$(MAKE) -C arch/$(ARCH)/kernel checks
netboot: checks vmlinux
@$(MAKEBOOT) netboot
znetboot: vmlinux
znetboot: checks vmlinux
@$(MAKEBOOT) znetboot
zImage: vmlinux
#rcpboot: checks vmlinux
# @$(MAKEBOOT) rcpboot
zImage: checks vmlinux
@$(MAKEBOOT) zImage
floppy: vmlinux
floppy: checks vmlinux
@$(MAKEBOOT) floppy
install: vmlinux
install: checks vmlinux
@$(MAKEBOOT) install
vmlinux.coff : checks vmlinux
$(MAKE) -C arch/ppc/coffboot/ vmlinux.coff
arch/ppc/kernel: dummy
$(MAKE) linuxsubdirs SUBDIRS=arch/ppc/kernel
......@@ -89,12 +90,24 @@ arch/ppc/mm: dummy
arch/ppc/lib: dummy
$(MAKE) linuxsubdirs SUBDIRS=arch/ppc/lib
diffs:
arch/ppc/mkdiff
tar:
arch/ppc/mktar
archclean:
rm -f arch/ppc/kernel/mk_defs arch/ppc/kernel/ppc_defs.h TAGS
rm -f arch/ppc/kernel/mk_defs arch/ppc/kernel/ppc_defs.h arch/ppc/kernel/checks TAGS
rm -f `find arch/ppc/ \( -name '*.[oas]' -o -name '*~' -o -name '#*#' \) -print`
rm -f `find include/asm-ppc/ \( -name '*.[oas]' -o -name '*~' -o -name '#*#' \) -print`
@$(MAKEBOOT) clean
archdep:
$(MAKE) -C arch/ppc/boot fastdep
$(MAKE) -C arch/ppc/kernel fastdep
$(MAKE) -C arch/ppc/mm fastdep
$(MAKE) -C arch/ppc/lib fastdep
tags :
etags arch/ppc/*/*.c arch/ppc/*/*.S include/asm/* */*.c
corttags :
etags arch/ppc/*/*.c include/asm/* */*.c drivers/*/*.c net/*.c
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -271,7 +271,7 @@ extern int fill_inbuf OF((void));
extern void flush_outbuf OF((void));
extern void flush_window OF((void));
extern char *strlwr OF((char *s));
extern char *basename OF((char *fname));
/*extern char *basename OF((char *fname));*/
extern char *add_envopt OF((int *argcp, char ***argvp, char *env));
extern void error OF((char *m));
extern void warn OF((char *a, char *b));
......
#include "../kernel/ppc_defs.h"
#include "../kernel/ppc_asm.tmpl"
#include <asm/processor.h>
.text
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
/*
* WARNING! This file is automatically generated - DO NOT EDIT!
*/
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment