Commit 95cf11e7 authored by James Simmons's avatar James Simmons

Merge maxwell.earthlink.net:/usr/src/linus-2.5

into maxwell.earthlink.net:/usr/src/fbdev-2.5
parents cfe1d063 9552d6bc
......@@ -2185,9 +2185,15 @@ S: Germany
N: Corey Minyard
E: minyard@wf-rch.cirr.com
E: minyard@mvista.com
W: http://home.attbi.com/~minyard
D: Sony CDU31A CDROM Driver
S: 1805 Marquette
S: Richardson, Texas 75081
D: IPMI driver
D: Various networking fixes long ago
D: Original ppc_md work
D: Shared zlib
S: 7406 Wheat Field Rd
S: Garland, Texas 75044
S: USA
N: Patrick Mochel
......
......@@ -22,7 +22,7 @@ To get the dma_ API, you must #include <linux/dma-mapping.h>
void *
dma_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_handle)
dma_addr_t *dma_handle, int flag)
void *
pci_alloc_consistent(struct pci_dev *dev, size_t size,
dma_addr_t *dma_handle)
......@@ -43,6 +43,12 @@ Note: consistent memory can be expensive on some platforms, and the
minimum allocation length may be as big as a page, so you should
consolidate your requests for consistent memory as much as possible.
The flag parameter (dma_alloc_coherent only) allows the caller to
specify the GFP_ flags (see kmalloc) for the allocation (the
implementation may chose to ignore flags that affect the location of
the returned memory, like GFP_DMA). For pci_alloc_consistent, you
must assume GFP_ATOMIC behaviour.
void
dma_free_coherent(struct device *dev, size_t size, void *cpu_addr
dma_addr_t dma_handle)
......@@ -261,7 +267,7 @@ API at all.
void *
dma_alloc_noncoherent(struct device *dev, size_t size,
dma_addr_t *dma_handle)
dma_addr_t *dma_handle, int flag)
Identical to dma_alloc_coherent() except that the platform will
choose to return either consistent or non-consistent memory as it sees
......
This diff is collapsed.
......@@ -23,7 +23,7 @@ and /proc/bus/usb/devices, as well as /proc/bus/usb/BBB/DDD files.
to interact with USB devices.
There are a number of mount options supported by usbfs.
Consult the source code (linux/drivers/usb/inode.c) for
Consult the source code (linux/drivers/usb/core/inode.c) for
information about those options.
**NOTE**: The filesystem has been renamed from "usbdevfs" to
......
VERSION = 2
PATCHLEVEL = 5
SUBLEVEL = 57
SUBLEVEL = 58
EXTRAVERSION =
# *DOCUMENTATION*
......
......@@ -166,6 +166,7 @@ static struct cpufreq_driver integrator_driver = {
.verify = integrator_verify_speed,
.setpolicy = integrator_set_policy,
.policy = &integrator_policy,
.name = "integrator",
};
#endif
......
......@@ -214,6 +214,7 @@ static struct cpufreq_driver sa1100_driver = {
.verify = sa11x0_verify_speed,
.setpolicy = sa1100_setspeed,
.policy = &sa1100_policy,
.name = "sa1100",
};
static int __init sa1100_dram_init(void)
......
......@@ -309,6 +309,7 @@ static struct cpufreq_driver sa1110_driver = {
.verify = sa11x0_verify_speed,
.setpolicy = sa1110_setspeed,
.policy = &sa1110_policy,
.name = "sa1110",
};
static int __init sa1110_clk_init(void)
......
......@@ -75,6 +75,14 @@ config X86_SUMMIT
If you don't have one of these computers, you should say N here.
config X86_BIGSMP
bool "Support for other sub-arch SMP systems with more than 8 CPUs"
help
This option is needed for the systems that have more than 8 CPUs
and if the system is not of any sub-arch type above.
If you don't have such a system, you should say N here.
# Visual Workstation support is utterly broken.
# If you want to see it working mail an VW540 to hch@infradead.org 8)
#config X86_VISWS
......@@ -949,15 +957,27 @@ config CPU_FREQ
If in doubt, say N.
config CPU_FREQ_PROC_INTF
bool "/proc/cpufreq interface (DEPRECATED)"
depends on CPU_FREQ && PROC_FS
help
This enables the /proc/cpufreq interface for controlling
CPUFreq. Please note that it is recommended to use the sysfs
interface instead (which is built automatically).
For details, take a look at linux/Documentation/cpufreq.
If in doubt, say N.
config CPU_FREQ_24_API
bool "/proc/sys/cpu/ interface (2.4. / OLD)"
depends on CPU_FREQ
help
This enables the /proc/sys/cpu/ sysctl interface for controlling
CPUFreq, as known from the 2.4.-kernel patches for CPUFreq. 2.5
uses /proc/cpufreq instead. Please note that some drivers do not
work well with the 2.4. /proc/sys/cpu sysctl interface, so if in
doubt, say N here.
uses a sysfs interface instead. Please note that some drivers do
not work well with the 2.4. /proc/sys/cpu sysctl interface,
so if in doubt, say N here.
For details, take a look at linux/Documentation/cpufreq.
......@@ -1035,6 +1055,18 @@ config X86_LONGRUN
If in doubt, say N.
config X86_GX_SUSPMOD
tristate "Cyrix MediaGX/NatSemi Geode Suspend Modulation"
depends on CPU_FREQ
help
This add the CPUFreq driver for NatSemi Geode processors which
support suspend modulation.
For details, take a look at linux/Documentation/cpufreq.
If in doubt, say N.
endmenu
......
......@@ -65,6 +65,10 @@ mcore-$(CONFIG_X86_VISWS) := mach-visws
mflags-$(CONFIG_X86_NUMAQ) := -Iinclude/asm-i386/mach-numaq
mcore-$(CONFIG_X86_NUMAQ) := mach-default
# BIGSMP subarch support
mflags-$(CONFIG_X86_BIGSMP) := -Iinclude/asm-i386/mach-bigsmp
mcore-$(CONFIG_X86_BIGSMP) := mach-default
# default subarch .h files
mflags-y += -Iinclude/asm-i386/mach-default
......
......@@ -4,3 +4,4 @@ obj-$(CONFIG_X86_SPEEDSTEP) += speedstep.o
obj-$(CONFIG_X86_P4_CLOCKMOD) += p4-clockmod.o
obj-$(CONFIG_ELAN_CPUFREQ) += elanfreq.o
obj-$(CONFIG_X86_LONGRUN) += longrun.o
obj-$(CONFIG_X86_GX_SUSPMOD) += gx-suspmod.o
......@@ -260,6 +260,9 @@ static int __init elanfreq_init(void)
driver->verify = &elanfreq_verify;
driver->setpolicy = &elanfreq_setpolicy;
driver->init = NULL;
driver->exit = NULL;
strncpy(driver->name, "elanfreq", CPUFREQ_NAME_LEN);
driver->policy[0].cpu = 0;
ret = cpufreq_frequency_table_cpuinfo(&driver->policy[0], &elanfreq_table[0]);
......
This diff is collapsed.
......@@ -771,6 +771,9 @@ static int __init longhaul_init (void)
driver->verify = &longhaul_verify;
driver->setpolicy = &longhaul_setpolicy;
driver->init = NULL;
driver->exit = NULL;
strncpy(driver->name, "longhaul", CPUFREQ_NAME_LEN);
driver->policy[0].cpu = 0;
driver->policy[0].min = (unsigned int) lowest_speed;
......
......@@ -251,6 +251,9 @@ static int __init longrun_init(void)
driver->policy[0].cpuinfo.min_freq = longrun_low_freq;
driver->policy[0].cpuinfo.max_freq = longrun_high_freq;
driver->policy[0].cpuinfo.transition_latency = CPUFREQ_ETERNAL;
driver->init = NULL;
driver->exit = NULL;
strncpy(driver->name, "longrun", CPUFREQ_NAME_LEN);
longrun_get_policy(&driver->policy[0]);
......
......@@ -240,6 +240,9 @@ static int __init cpufreq_p4_init(void)
driver->verify = &cpufreq_p4_verify;
driver->setpolicy = &cpufreq_p4_setpolicy;
driver->init = NULL;
driver->exit = NULL;
strncpy(driver->name, "p4-clockmod", CPUFREQ_NAME_LEN);
for (i=0;i<NR_CPUS;i++) {
driver->policy[i].cpu = i;
......
......@@ -184,6 +184,9 @@ static int __init powernow_k6_init(void)
driver->verify = &powernow_k6_verify;
driver->setpolicy = &powernow_k6_setpolicy;
driver->init = NULL;
driver->exit = NULL;
strncpy(driver->name, "powernow-k6", CPUFREQ_NAME_LEN);
/* cpuinfo and default policy values */
driver->policy[0].cpu = 0;
......
......@@ -690,6 +690,9 @@ static int __init speedstep_init(void)
driver->verify = &speedstep_verify;
driver->setpolicy = &speedstep_setpolicy;
driver->init = NULL;
driver->exit = NULL;
strncpy(driver->name, "speedstep", CPUFREQ_NAME_LEN);
driver->policy[0].cpuinfo.transition_latency = CPUFREQ_ETERNAL;
......
......@@ -14,10 +14,11 @@
#include <asm/io.h>
void *dma_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_handle)
dma_addr_t *dma_handle, int gfp)
{
void *ret;
int gfp = GFP_ATOMIC;
/* ignore region specifiers */
gfp &= ~(__GFP_DMA | __GFP_HIGHMEM);
if (dev == NULL || (*dev->dma_mask < 0xffffffff))
gfp |= GFP_DMA;
......
......@@ -78,7 +78,8 @@ spinlock_t rtc_lock = SPIN_LOCK_UNLOCKED;
spinlock_t i8253_lock = SPIN_LOCK_UNLOCKED;
EXPORT_SYMBOL(i8253_lock);
struct timer_opts* timer;
extern struct timer_opts timer_none;
struct timer_opts* timer = &timer_none;
/*
* This version of gettimeofday has microsecond resolution
......
......@@ -2,6 +2,6 @@
# Makefile for x86 timers
#
obj-y := timer.o timer_tsc.o timer_pit.o
obj-y := timer.o timer_none.o timer_tsc.o timer_pit.o
obj-$(CONFIG_X86_CYCLONE) += timer_cyclone.o
......@@ -150,7 +150,6 @@ static int init_cyclone(void)
}
#if 0 /* XXX future work */
static void delay_cyclone(unsigned long loops)
{
unsigned long bclock, now;
......@@ -162,12 +161,12 @@ static void delay_cyclone(unsigned long loops)
now = cyclone_timer[0];
} while ((now-bclock) < loops);
}
#endif
/************************************************************/
/* cyclone timer_opts struct */
struct timer_opts timer_cyclone = {
.init = init_cyclone,
.mark_offset = mark_offset_cyclone,
.get_offset = get_offset_cyclone
.get_offset = get_offset_cyclone,
.delay = delay_cyclone,
};
#include <asm/timer.h>
static int init_none(void)
{
return 0;
}
static void mark_offset_none(void)
{
/* nothing needed */
}
static unsigned long get_offset_none(void)
{
return 0;
}
static void delay_none(unsigned long loops)
{
int d0;
__asm__ __volatile__(
"\tjmp 1f\n"
".align 16\n"
"1:\tjmp 2f\n"
".align 16\n"
"2:\tdecl %0\n\tjns 2b"
:"=&a" (d0)
:"0" (loops));
}
/* tsc timer_opts struct */
struct timer_opts timer_none = {
.init = init_none,
.mark_offset = mark_offset_none,
.get_offset = get_offset_none,
.delay = delay_none,
};
......@@ -27,6 +27,19 @@ static void mark_offset_pit(void)
/* nothing needed */
}
static void delay_pit(unsigned long loops)
{
int d0;
__asm__ __volatile__(
"\tjmp 1f\n"
".align 16\n"
"1:\tjmp 2f\n"
".align 16\n"
"2:\tdecl %0\n\tjns 2b"
:"=&a" (d0)
:"0" (loops));
}
/* This function must be called with interrupts disabled
* It was inspired by Steve McCanne's microtime-i386 for BSD. -- jrs
......@@ -129,4 +142,5 @@ struct timer_opts timer_pit = {
.init = init_pit,
.mark_offset = mark_offset_pit,
.get_offset = get_offset_pit,
.delay = delay_pit,
};
......@@ -16,7 +16,6 @@
int tsc_disable __initdata = 0;
extern int x86_udelay_tsc;
extern spinlock_t i8253_lock;
static int use_tsc;
......@@ -107,6 +106,17 @@ static void mark_offset_tsc(void)
delay_at_last_interrupt = (count + LATCH/2) / LATCH;
}
static void delay_tsc(unsigned long loops)
{
unsigned long bclock, now;
rdtscl(bclock);
do
{
rep_nop();
rdtscl(now);
} while ((now-bclock) < loops);
}
/* ------ Calibrate the TSC -------
* Return 2^32 * (1 / (TSC clocks per usec)) for do_fast_gettimeoffset().
......@@ -272,8 +282,6 @@ static int init_tsc(void)
* We could be more selective here I suspect
* and just enable this for the next intel chips ?
*/
x86_udelay_tsc = 1;
/* report CPU clock rate in Hz.
* The formula is (10^6 * 2^32) / (2^32 * 1 / (clocks/us)) =
* clock/second. Our precision is about 100 ppm.
......@@ -310,4 +318,5 @@ struct timer_opts timer_tsc = {
.init = init_tsc,
.mark_offset = mark_offset_tsc,
.get_offset = get_offset_tsc,
.delay = delay_tsc,
};
......@@ -15,54 +15,17 @@
#include <linux/delay.h>
#include <asm/processor.h>
#include <asm/delay.h>
#include <asm/timer.h>
#ifdef CONFIG_SMP
#include <asm/smp.h>
#endif
int x86_udelay_tsc = 0; /* Delay via TSC */
/*
* Do a udelay using the TSC for any CPU that happens
* to have one that we trust.
*/
static void __rdtsc_delay(unsigned long loops)
{
unsigned long bclock, now;
rdtscl(bclock);
do
{
rep_nop();
rdtscl(now);
} while ((now-bclock) < loops);
}
/*
* Non TSC based delay loop for 386, 486, MediaGX
*/
static void __loop_delay(unsigned long loops)
{
int d0;
__asm__ __volatile__(
"\tjmp 1f\n"
".align 16\n"
"1:\tjmp 2f\n"
".align 16\n"
"2:\tdecl %0\n\tjns 2b"
:"=&a" (d0)
:"0" (loops));
}
extern struct timer_opts* timer;
void __delay(unsigned long loops)
{
if (x86_udelay_tsc)
__rdtsc_delay(loops);
else
__loop_delay(loops);
timer->delay(loops);
}
inline void __const_udelay(unsigned long xloops)
......
......@@ -338,254 +338,6 @@ unsigned long pcibios_fixup(unsigned long mem_start, unsigned long mem_end)
/*****************************************************************************/
int pcibios_present(void)
{
return(pci_bus_is_present);
}
/*****************************************************************************/
int pcibios_read_config_dword(unsigned char bus, unsigned char dev,
unsigned char offset, unsigned int *val)
{
volatile unsigned long *rp;
unsigned long idsel, fnsel;
#ifdef DEBUGPCI
printk("pcibios_read_config_dword(bus=%x,dev=%x,offset=%x,val=%x)\n",
bus, dev, offset, val);
#endif
if (bus || ((pci_slotmask & (0x1 << PCI_SLOT(dev))) == 0)) {
*val = 0xffffffff;
return(PCIBIOS_SUCCESSFUL);
}
rp = (volatile unsigned long *) COMEM_BASE;
idsel = COMEM_DA_CFGRD | COMEM_DA_ADDR(0x1 << ((dev >> 3) + 16));
fnsel = (dev & 0x7) << 8;
rp[LREG(COMEM_DAHBASE)] = idsel;
*val = rp[LREG(COMEM_PCIBUS + (offset & 0xfc) + fnsel)];
#if 1
/* If we get back what we wrote, then nothing there */
/* This is pretty dodgy, but, hey, what else do we do?? */
if (!offset && (*val == ((idsel & 0xfffff000) | (offset & 0x00000fff))))
*val = 0xffffffff;
#endif
return(PCIBIOS_SUCCESSFUL);
}
/*****************************************************************************/
int pcibios_read_config_word(unsigned char bus, unsigned char dev,
unsigned char offset, unsigned short *val)
{
volatile unsigned long *rp;
volatile unsigned short *bp;
unsigned long idsel, fnsel;
unsigned char swapoffset;
#ifdef DEBUGPCI
printk("pcibios_read_config_word(bus=%x,dev=%x,offset=%x)\n",
bus, dev, offset);
#endif
if (bus || ((pci_slotmask & (0x1 << PCI_SLOT(dev))) == 0)) {
*val = 0xffff;
return(PCIBIOS_SUCCESSFUL);
}
rp = (volatile unsigned long *) COMEM_BASE;
bp = (volatile unsigned short *) COMEM_BASE;
idsel = COMEM_DA_CFGRD | COMEM_DA_ADDR(0x1 << ((dev >> 3) + 16));
fnsel = (dev & 0x7) << 8;
swapoffset = (offset & 0xfc) + (~offset & 0x02);
rp[LREG(COMEM_DAHBASE)] = idsel;
*val = bp[WREG(COMEM_PCIBUS + swapoffset + fnsel)];
return(PCIBIOS_SUCCESSFUL);
}
/*****************************************************************************/
int pcibios_read_config_byte(unsigned char bus, unsigned char dev,
unsigned char offset, unsigned char *val)
{
volatile unsigned long *rp;
volatile unsigned char *bp;
unsigned long idsel, fnsel;
unsigned char swapoffset;
#ifdef DEBUGPCI
printk("pcibios_read_config_byte(bus=%x,dev=%x,offset=%x)\n",
bus, dev, offset);
#endif
if (bus || ((pci_slotmask & (0x1 << PCI_SLOT(dev))) == 0)) {
*val = 0xff;
return(PCIBIOS_SUCCESSFUL);
}
rp = (volatile unsigned long *) COMEM_BASE;
bp = (volatile unsigned char *) COMEM_BASE;
idsel = COMEM_DA_CFGRD | COMEM_DA_ADDR(0x1 << ((dev >> 3) + 16));
fnsel = (dev & 0x7) << 8;
swapoffset = (offset & 0xfc) + (~offset & 0x03);
rp[LREG(COMEM_DAHBASE)] = idsel;
*val = bp[(COMEM_PCIBUS + swapoffset + fnsel)];
return(PCIBIOS_SUCCESSFUL);
}
/*****************************************************************************/
int pcibios_write_config_dword(unsigned char bus, unsigned char dev,
unsigned char offset, unsigned int val)
{
volatile unsigned long *rp;
unsigned long idsel, fnsel;
#ifdef DEBUGPCI
printk("pcibios_write_config_dword(bus=%x,dev=%x,offset=%x,val=%x)\n",
bus, dev, offset, val);
#endif
if (bus || ((pci_slotmask & (0x1 << PCI_SLOT(dev))) == 0))
return(PCIBIOS_SUCCESSFUL);
rp = (volatile unsigned long *) COMEM_BASE;
idsel = COMEM_DA_CFGRD | COMEM_DA_ADDR(0x1 << ((dev >> 3) + 16));
fnsel = (dev & 0x7) << 8;
rp[LREG(COMEM_DAHBASE)] = idsel;
rp[LREG(COMEM_PCIBUS + (offset & 0xfc) + fnsel)] = val;
return(PCIBIOS_SUCCESSFUL);
}
/*****************************************************************************/
int pcibios_write_config_word(unsigned char bus, unsigned char dev,
unsigned char offset, unsigned short val)
{
volatile unsigned long *rp;
volatile unsigned short *bp;
unsigned long idsel, fnsel;
unsigned char swapoffset;
#ifdef DEBUGPCI
printk("pcibios_write_config_word(bus=%x,dev=%x,offset=%x,val=%x)\n",
bus, dev, offset, val);
#endif
if (bus || ((pci_slotmask & (0x1 << PCI_SLOT(dev))) == 0))
return(PCIBIOS_SUCCESSFUL);
rp = (volatile unsigned long *) COMEM_BASE;
bp = (volatile unsigned short *) COMEM_BASE;
idsel = COMEM_DA_CFGRD | COMEM_DA_ADDR(0x1 << ((dev >> 3) + 16));
fnsel = (dev & 0x7) << 8;
swapoffset = (offset & 0xfc) + (~offset & 0x02);
rp[LREG(COMEM_DAHBASE)] = idsel;
bp[WREG(COMEM_PCIBUS + swapoffset + fnsel)] = val;
return(PCIBIOS_SUCCESSFUL);
}
/*****************************************************************************/
int pcibios_write_config_byte(unsigned char bus, unsigned char dev,
unsigned char offset, unsigned char val)
{
volatile unsigned long *rp;
volatile unsigned char *bp;
unsigned long idsel, fnsel;
unsigned char swapoffset;
#ifdef DEBUGPCI
printk("pcibios_write_config_byte(bus=%x,dev=%x,offset=%x,val=%x)\n",
bus, dev, offset, val);
#endif
if (bus || ((pci_slotmask & (0x1 << PCI_SLOT(dev))) == 0))
return(PCIBIOS_SUCCESSFUL);
rp = (volatile unsigned long *) COMEM_BASE;
bp = (volatile unsigned char *) COMEM_BASE;
idsel = COMEM_DA_CFGRD | COMEM_DA_ADDR(0x1 << ((dev >> 3) + 16));
fnsel = (dev & 0x7) << 8;
swapoffset = (offset & 0xfc) + (~offset & 0x03);
rp[LREG(COMEM_DAHBASE)] = idsel;
bp[(COMEM_PCIBUS + swapoffset + fnsel)] = val;
return(PCIBIOS_SUCCESSFUL);
}
/*****************************************************************************/
int pcibios_find_device(unsigned short vendor, unsigned short devid,
unsigned short index, unsigned char *bus, unsigned char *dev)
{
unsigned int vendev, val;
unsigned char devnr;
#ifdef DEBUGPCI
printk("pcibios_find_device(vendor=%04x,devid=%04x,index=%d)\n",
vendor, devid, index);
#endif
if (vendor == 0xffff)
return(PCIBIOS_BAD_VENDOR_ID);
vendev = (devid << 16) | vendor;
for (devnr = 0; (devnr < 32); devnr++) {
pcibios_read_config_dword(0, devnr, PCI_VENDOR_ID, &val);
if (vendev == val) {
if (index-- == 0) {
*bus = 0;
*dev = devnr;
return(PCIBIOS_SUCCESSFUL);
}
}
}
return(PCIBIOS_DEVICE_NOT_FOUND);
}
/*****************************************************************************/
int pcibios_find_class(unsigned int class, unsigned short index,
unsigned char *bus, unsigned char *dev)
{
unsigned int val;
unsigned char devnr;
#ifdef DEBUGPCI
printk("pcibios_find_class(class=%04x,index=%d)\n", class, index);
#endif
/* FIXME: this ignores multi-function devices... */
for (devnr = 0; (devnr < 128); devnr += 8) {
pcibios_read_config_dword(0, devnr, PCI_CLASS_REVISION, &val);
if ((val >> 8) == class) {
if (index-- == 0) {
*bus = 0;
*dev = devnr;
return(PCIBIOS_SUCCESSFUL);
}
}
}
return(PCIBIOS_DEVICE_NOT_FOUND);
}
/*****************************************************************************/
/*
* Local routines to interrcept the standard I/O and vector handling
* code. Don't include this 'till now - initialization code above needs
......
/*
* linux/arch/m68knommu/kernel/entry.S
*
* Copyright (C) 1999-2002, Greg Ungerer (gerg@snapgear.com)
* Copyright (C) 1998 D. Jeff Dionne <jeff@lineo.ca>,
* Kenneth Albanowski <kjahds@kjahds.com>,
* Copyright (C) 2000 Lineo Inc. (www.lineo.com)
*
* Based on:
*
* linux/arch/m68k/kernel/entry.S
*
* Copyright (C) 1991, 1992 Linus Torvalds
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file README.legal in the main directory of this archive
* for more details.
*
* Linux/m68k support by Hamish Macdonald
*
* 68060 fixes by Jesper Skov
* ColdFire support by Greg Ungerer (gerg@snapgear.com)
* 5307 fixes by David W. Miller
* linux 2.4 support David McCullough <davidm@snapgear.com>
*/
#include <linux/config.h>
#include <linux/sys.h>
#include <linux/linkage.h>
#include <asm/thread_info.h>
#include <asm/errno.h>
#include <asm/setup.h>
#include <asm/segment.h>
#include <asm/asm-offsets.h>
#include <asm/entry.h>
.text
.globl buserr
.globl trap
.globl ret_from_exception
.globl ret_from_signal
.globl sys_fork
.globl sys_clone
.globl sys_vfork
ENTRY(buserr)
SAVE_ALL
moveq #-1,%d0
movel %d0,%sp@(LORIG_D0)
movel %sp,%sp@- /* stack frame pointer argument */
jsr buserr_c
addql #4,%sp
jra ret_from_exception
ENTRY(trap)
SAVE_ALL
moveq #-1,%d0
movel %d0,%sp@(LORIG_D0)
movel %sp,%sp@- /* stack frame pointer argument */
jsr trap_c
addql #4,%sp
jra ret_from_exception
#ifdef TRAP_DBG_INTERRUPT
.globl dbginterrupt
ENTRY(dbginterrupt)
SAVE_ALL
moveq #-1,%d0
movel %d0,%sp@(LORIG_D0)
movel %sp,%sp@- /* stack frame pointer argument */
jsr dbginterrupt_c
addql #4,%sp
jra ret_from_exception
#endif
ENTRY(reschedule)
/* save top of frame */
pea %sp@
jbsr set_esp0
addql #4,%sp
pea ret_from_exception
jmp schedule
ENTRY(ret_from_fork)
jra ret_from_exception
ENTRY(sys_fork)
SAVE_SWITCH_STACK
pea %sp@(SWITCH_STACK_SIZE)
jbsr m68k_fork
addql #4,%sp
RESTORE_SWITCH_STACK
rts
ENTRY(sys_vfork)
SAVE_SWITCH_STACK
pea %sp@(SWITCH_STACK_SIZE)
jbsr m68k_vfork
addql #4,%sp
RESTORE_SWITCH_STACK
rts
ENTRY(sys_clone)
SAVE_SWITCH_STACK
pea %sp@(SWITCH_STACK_SIZE)
jbsr m68k_clone
addql #4,%sp
RESTORE_SWITCH_STACK
rts
ENTRY(sys_sigsuspend)
SAVE_SWITCH_STACK
pea %sp@(SWITCH_STACK_SIZE)
jbsr do_sigsuspend
addql #4,%sp
RESTORE_SWITCH_STACK
rts
ENTRY(sys_rt_sigsuspend)
SAVE_SWITCH_STACK
pea %sp@(SWITCH_STACK_SIZE)
jbsr do_rt_sigsuspend
addql #4,%sp
RESTORE_SWITCH_STACK
rts
ENTRY(sys_sigreturn)
SAVE_SWITCH_STACK
jbsr do_sigreturn
RESTORE_SWITCH_STACK
rts
ENTRY(sys_rt_sigreturn)
SAVE_SWITCH_STACK
jbsr do_rt_sigreturn
RESTORE_SWITCH_STACK
rts
......@@ -343,10 +343,10 @@ static void c_stop(struct seq_file *m, void *v)
}
struct seq_operations cpuinfo_op = {
start: c_start,
next: c_next,
stop: c_stop,
show: show_cpuinfo,
.start = c_start,
.next = c_next,
.stop = c_stop,
.show = show_cpuinfo,
};
void arch_gettod(int *year, int *mon, int *day, int *hour,
......
......@@ -857,7 +857,7 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs *regs)
case SIGQUIT: case SIGILL: case SIGTRAP:
case SIGIOT: case SIGFPE: case SIGSEGV:
case SIGBUS: case SIGSYS: case SIGXCPU: case SIGXFSZ:
if (do_coredump(signr, regs))
if (do_coredump(signr, exit_code, regs))
exit_code |= 0x80;
/* FALLTHRU */
......
MEMORY {
ram : ORIGIN = 0x10000, LENGTH = 0x200000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x20000, LENGTH = 0x007E0000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit/text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x30020000, LENGTH = 0xe0000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text 0x30020000 : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x20000, LENGTH = 0x3e0000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
*(.modinfo)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
. = ALIGN(4);
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(8192) ;
*(.data.init_task)
. = ALIGN(8192) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
. = ALIGN(4096);
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4);
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
. = ALIGN(4);
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x20000, LENGTH = 0x3e0000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
*(.modinfo)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
. = ALIGN(4);
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(8192) ;
*(.data.init_task)
. = ALIGN(8192) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
. = ALIGN(4096);
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4);
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
. = ALIGN(4);
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x400, LENGTH = 0x400000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
*(.modinfo)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
. = ALIGN(4);
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(8192) ;
*(.data.init_task)
. = ALIGN(8192) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
. = ALIGN(4096);
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4);
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
. = ALIGN(4);
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x20000, LENGTH = 0x007E0000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x400, LENGTH = 0x1000000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = . ;
. = ALIGN(4);
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x20000, LENGTH = 0x007E0000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x400, LENGTH = 0x1000000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = . ;
. = ALIGN(4);
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x400, LENGTH = 0x400000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x400, LENGTH = 0x800000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = . ;
. = ALIGN(4);
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
MEMORY {
ram : ORIGIN = 0x20000, LENGTH = 0x007E0000
}
jiffies = jiffies_64 + 4;
SECTIONS {
.text : {
_stext = . ;
*(.text)
*(.exit.text)
*(.text.lock)
*(.exitcall.exit)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > ram
.data BLOCK(0x4) : {
_sdata = . ;
__data_start = . ;
*(.data)
*(.data.exit)
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.init BLOCK(4096) : {
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
} > ram
.bss BLOCK(0x4) : {
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
_end = . ;
} > ram
}
OUTPUT_ARCH(m68k)
ENTRY(_start)
MEMORY {
romvec : ORIGIN = 0x10c00000, LENGTH = 0x10400
flash : ORIGIN = 0x10c10400, LENGTH = 0xfec00
eflash : ORIGIN = 0x10d00000, LENGTH = 4
ramvec : ORIGIN = 0x00000000, LENGTH = 0x400
ram : ORIGIN = 0x10000400, LENGTH = 0x100000-0x400
eram : ORIGIN = 0x10100000, LENGTH = 4
}
jiffies = jiffies_64 + 4;
SECTIONS {
. = 0x10c00000 ;
.romvec : {
_flashstart = . ;
_romvec = . ;
} > romvec
. = 0x10c10400 ;
.text : {
_text = .; /* Text and read-only data */
text_start = . ;
*(.text)
*(.text.*)
*(.rodata)
*(.fixup)
*(__ex_table)
. = ALIGN(4) ;
_etext = . ;
__data_rom_start = . ;
} > flash
. = 0x10d00000 ;
.eflash :
{
_flashend = . ;
} > eflash
. = 0 ;
.ramvec :
{
__ramvec = . ;
} > ramvec
/* . = 0x10000400 ; */
.data 0x10000400 :
{
_sdata = . ;
__data_start = . ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
*(.data)
*(.data.*)
*(.setup.init)
*(.exitcall.exit)
. = ALIGN(4096) ;
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
_edata = . ;
edata = . ;
} > ram
.bss :
{
. = ALIGN(16) ;
_sbss = . ;
__bss_start = . ;
__data_end = . ;
*(.bss)
*(COMMON)
. = ALIGN(16) ;
end = . ;
_ebss = . ;
_end = . ;
} > ram
. = 0x10100000 ;
.eram :
{
__ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x00000000, LENGTH = 1028
flash : ORIGIN = 1028, LENGTH = 0x00080000 - 1028
eflash : ORIGIN = 0x00000000 + 0x00100000, LENGTH = 1
ramvec : ORIGIN = 0x00200000, LENGTH = 1028
ram : ORIGIN = 0x00200000 + 1028, LENGTH = 0x00080000 - 1028
eram : ORIGIN = 0x00200000 + 0x00080000, LENGTH = 1
dpram : ORIGIN = 0xffffe000, LENGTH = 0x00002000
}
jiffies = jiffies_64 + 4;
SECTIONS
{
.dpram :
{
_dprbase = . ;
} > dpram
.romvec :
{
_romvec = . ;
__flashstart = . ;
*(.data.initvect)
. = ALIGN(4);
} > romvec
.text :
{
text_start = . ;
*(.text)
*(.exit.text)
*(.text.*)
*(.rodata)
*(.fixup)
*(.kstrtab)
__start___ksymtab = . ;
*(__ksymtab)
__stop___ksymtab = . ;
__start___gpl_ksymtab = . ;
*(__gpl_ksymtab)
__stop___gpl_ksymtab = . ;
__start___ex_table = . ;
*(___ex_table)
__stop___ex_table = . ;
. = ALIGN(4) ;_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > flash
.eflash :
{
__flashend = . ;
} > eflash
.ramvec :
{
__ramstart = . ;
_ramvec = . ;
} > ramvec
.data :
{
_sdata = . ;
__data_start = . ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
*(.data)
*(.data.*)
*(.setup.init)
*(.exitcall.exit)
. = ALIGN(4096) ;
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
_edata = . ;
edata = .;
} > ram
.bss :
{
_sbss = ALIGN( 0x10 ) ;
__bss_start = ALIGN( 0x10 ) ;
__data_end = ALIGN( 0x10 ) ;
*(.bss)
*(COMMON)
_ebss = . ;
__bss_end = . ;
end = ALIGN( 0x10 ) ;
_end = ALIGN( 0x10 ) ;
} > ram
.eram :
{
_boot_stack = . - 4;
__ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x00000000, LENGTH = 1028
flash : ORIGIN = 1028, LENGTH = 0x00200000 - 1028
eflash : ORIGIN = 0x00000000 + 0x00200000, LENGTH = 1
ramvec : ORIGIN = 0x00200000, LENGTH = 1028
ram : ORIGIN = 0x00200000 + 1028, LENGTH = 0x00200000 - 1028
eram : ORIGIN = 0x00200000 + 0x00200000, LENGTH = 1
dpram : ORIGIN = 0xffffe000, LENGTH = 0x00002000
}
jiffies = jiffies_64 + 4;
SECTIONS
{
.dpram :
{
_dprbase = . ;
} > dpram
.romvec :
{
_romvec = . ;
__flashstart = . ;
*(.data.initvect)
. = ALIGN(4);
} > romvec
.text :
{
text_start = . ;
*(.text)
*(.exit.text)
*(.text.*)
*(.rodata)
*(.fixup)
*(.kstrtab)
__start___ksymtab = . ;
*(__ksymtab)
__stop___ksymtab = . ;
__start___gpl_ksymtab = . ;
*(__gpl_ksymtab)
__stop___gpl_ksymtab = . ;
__start___ex_table = . ;
*(___ex_table)
__stop___ex_table = . ;
. = ALIGN(4) ;_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > flash
.eflash :
{
__flashend = . ;
} > eflash
.ramvec :
{
__ramstart = . ;
_ramvec = . ;
} > ramvec
.data :
{
_sdata = . ;
__data_start = . ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
*(.data)
*(.data.*)
*(.setup.init)
*(.exitcall.exit)
. = ALIGN(4096) ;
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
_edata = . ;
edata = .;
} > ram
.bss :
{
_sbss = ALIGN( 0x10 ) ;
__bss_start = ALIGN( 0x10 ) ;
__data_end = ALIGN( 0x10 ) ;
*(.bss)
*(COMMON)
_ebss = . ;
__bss_end = . ;
end = ALIGN( 0x10 ) ;
_end = ALIGN( 0x10 ) ;
} > ram
.eram :
{
_boot_stack = . - 4;
__ramend = . ;
} > eram
}
......@@ -54,7 +54,7 @@ _stext: movew #0x2700,%sr
bne 1b
/* Copy data segment from ROM to RAM */
moveal #__data_rom_start, %a0
moveal #_etext, %a0
moveal #_sdata, %a1
moveal #_edata, %a2
......
jiffies = jiffies_64 + 4;
SECTIONS
{
.romvec :
{
_flashstart = . ;
_romvec = . ;
__rom_start = . ;
} > romvec
.text :
{
_stext = . ;
*(.text)
*(.exit.text)
. = ALIGN(0x4) ;
*(.text.*)
. = ALIGN(0x4) ;
*(.exitcall.exit)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(0x4) ;
_etext = . ;
__data_rom_start = . ;
} > flash
.eflash :
{
_flashend = . ;
} > eflash
.ramvec :
{
__ram_start = . ;
__ramvec = . ;
} > ramvec
.data :
{
. = ALIGN(0x4) ;
_sdata = . ;
__data_start = . ;
. = ALIGN(0x4) ;
*(.rodata)
. = ALIGN(0x4) ;
*(.data)
. = ALIGN(0x4) ;
*(.data.*)
. = ALIGN(0x4) ;
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(0x4) ;
__setup_start = .;
*(.init.setup)
. = ALIGN(0x4) ;
__setup_end = .;
. = ALIGN(0x4) ;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(0x4) ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.bss :
{
. = ALIGN(0x4) ;
_sbss = . ;
*(.bss)
. = ALIGN(0x4) ;
*(COMMON)
. = ALIGN(0x4) ;
_ebss = . ;
_end = . ;
} > ram
.eram :
{
__ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x00600000, LENGTH = 0x00000400
flash : ORIGIN = 0x00600400, LENGTH = 0x00200000 - 0x00010400
eflash : ORIGIN = 0x007f0000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 0x00000400
ram : ORIGIN = 0x00020000, LENGTH = 0x00600000 - 0x00020000
eram : ORIGIN = 0x00600000, LENGTH = 0
}
INCLUDE arch/m68knommu/platform/68EZ328/ucsimm/fixed.ld
MEMORY
{
romvec : ORIGIN = 0x10c10000, LENGTH = 0x00000400
flash : ORIGIN = 0x10c10400, LENGTH = 0x00200000 - 0x00010400
eflash : ORIGIN = 0x10e00000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 0x00000400
bvec : ORIGIN = 0x00020000, LENGTH = 0x00000400
ram : ORIGIN = 0x00020400, LENGTH = 0x00800000 - 0x00020400
eram : ORIGIN = 0x00800000, LENGTH = 0
}
jiffies = jiffies_64 + 4;
SECTIONS
{
.fakevec :
{
} > romvec
.rom :
{
__rom_start = . ;
} > flash
.eflash :
{
_flashend = . ;
} > eflash
.realvec :
{
_ramvec = . ;
} > ramvec
.romvec :
{
_romvec = . ;
} > bvec
.text :
{
__ram_start = . ;
text_start = . ;
*(.text)
*(.exit.text)
*(.text.*)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > ram
.data :
{
_sdata = . ;
__data_start = . ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
*(.data)
*(.data.*)
*(.exitcall.exit)
. = ALIGN(4096) ;
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
_edata = . ;
edata = ALIGN( 0x10 ) ;
} > ram
.bss :
{
_sbss = ALIGN( 0x10 ) ;
__bss_start = ALIGN( 0x10 ) ;
__data_end = ALIGN( 0x10 ) ;
*(.bss)
*(COMMON)
_ebss = . ;
__bss_end = . ;
end = ALIGN( 0x10 ) ;
_end = ALIGN( 0x10 ) ;
} > ram
.eram :
{
__ramend = . ;
_ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x10c10000, LENGTH = 0x00000400
flash : ORIGIN = 0x10c10400, LENGTH = 0x001fec00
eflash : ORIGIN = 0x10d00000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 1024
ram : ORIGIN = 0x00020000, LENGTH = 0x00800000 - 0x00020000
eram : ORIGIN = 0x00800000, LENGTH = 0
}
INCLUDE arch/m68knommu/platform/68EZ328/ucsimm/fixed.ld
......@@ -86,7 +86,7 @@ ram_jump:
#ifndef CONFIG_RAMKERNEL
/* Copy data segment from ROM to RAM */
moveal #__data_rom_start, %a0
moveal #_etext, %a0
moveal #_sdata, %a1
moveal #_edata, %a2
......
jiffies = jiffies_64 + 4;
SECTIONS
{
.romvec :
{
_flashstart = . ;
_romvec = . ;
__rom_start = . ;
} > romvec
.text :
{
_stext = . ;
*(.text)
. = ALIGN(0x4) ;
*(.text.*)
. = ALIGN(0x4) ;
*(.exitcall.exit)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(0x4) ;
_etext = . ;
__data_rom_start = . ;
} > flash
.eflash :
{
_flashend = . ;
} > eflash
.ramvec :
{
__ram_start = . ;
__ramvec = . ;
} > ramvec
.data :
{
. = ALIGN(0x4) ;
_sdata = . ;
__data_start = . ;
. = ALIGN(0x4) ;
*(.rodata)
. = ALIGN(0x4) ;
*(.data)
. = ALIGN(0x4) ;
*(.data.*)
. = ALIGN(0x4) ;
__setup_start = .;
*(.init.setup)
. = ALIGN(0x4) ;
__setup_end = .;
. = ALIGN(0x4) ;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(0x4) ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.bss :
{
. = ALIGN(0x4) ;
_sbss = . ;
*(.bss)
. = ALIGN(0x4) ;
*(COMMON)
. = ALIGN(0x4) ;
_ebss = . ;
_end = . ;
} > ram
.eram :
{
__ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x04030000, LENGTH = 1k
flash : ORIGIN = 0x04030400, LENGTH = 2M - 197k
eflash : ORIGIN = 0x04200000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 1k
bvec : ORIGIN = 0x00010000, LENGTH = 1k
ram : ORIGIN = 0x00010400, LENGTH = 32M - 65k
eram : ORIGIN = 0x02000000, LENGTH = 0
}
jiffies = jiffies_64 + 4;
SECTIONS
{
.fakevec :
{
} > romvec
.rom :
{
__rom_start = . ;
} > flash
.eflash :
{
_flashend = . ;
} > eflash
.realvec :
{
__ramvec = . ;
} > ramvec
.romvec :
{
_romvec = . ;
} > bvec
.text :
{
__ram_start = . ;
text_start = . ;
*(.text)
*(.text.*)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > ram
.data :
{
_sdata = . ;
__data_start = . ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
*(.data)
*(.data.*)
*(.exitcall.exit)
. = ALIGN(4096) ;
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
_edata = . ;
edata = ALIGN( 0x10 ) ;
} > ram
.bss :
{
_sbss = ALIGN( 0x10 ) ;
__bss_start = ALIGN( 0x10 ) ;
__data_end = ALIGN( 0x10 ) ;
*(.bss)
*(COMMON)
_ebss = . ;
__bss_end = . ;
end = ALIGN( 0x10 ) ;
_end = ALIGN( 0x10 ) ;
} > ram
.eram :
{
__ramend = . ;
_ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x04030000, LENGTH = 1k
flash : ORIGIN = 0x04030400, LENGTH = 2M - 197k
eflash : ORIGIN = 0x04200000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 1k
ram : ORIGIN = 0x00010000, LENGTH = 32M - 64k
eram : ORIGIN = 0x02000000, LENGTH = 0
}
INCLUDE arch/m68knommu/platform/68VZ328/de2/fixed.ld
......@@ -54,7 +54,7 @@ _stext: movew #0x2700,%sr
bne 1b
/* Copy data segment from ROM to RAM */
moveal #__data_rom_start, %a0
moveal #_etext, %a0
moveal #_sdata, %a1
moveal #_edata, %a2
......
jiffies = jiffies_64 + 4;
SECTIONS
{
.romvec :
{
_flashstart = . ;
_romvec = . ;
__rom_start = . ;
} > romvec
.text :
{
_stext = . ;
*(.text)
. = ALIGN(0x4) ;
*(.text.*)
. = ALIGN(0x4) ;
*(.exitcall.exit)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
. = ALIGN(0x4) ;
_etext = . ;
__data_rom_start = . ;
} > flash
.eflash :
{
_flashend = . ;
} > eflash
.ramvec :
{
__ram_start = . ;
__ramvec = . ;
} > ramvec
.data :
{
. = ALIGN(0x4) ;
_sdata = . ;
__data_start = . ;
. = ALIGN(0x4) ;
*(.rodata)
. = ALIGN(0x4) ;
*(.data)
. = ALIGN(0x4) ;
*(.data.*)
. = ALIGN(0x4) ;
__setup_start = .;
*(.init.setup)
. = ALIGN(0x4) ;
__setup_end = .;
. = ALIGN(0x4) ;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(0x4) ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
_edata = . ;
} > ram
.bss :
{
. = ALIGN(0x4) ;
_sbss = . ;
*(.bss)
. = ALIGN(0x4) ;
*(COMMON)
. = ALIGN(0x4) ;
_ebss = . ;
_end = . ;
} > ram
.eram :
{
__ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x00600000, LENGTH = 0x00000400
flash : ORIGIN = 0x00600400, LENGTH = 0x00200000 - 0x00010400
eflash : ORIGIN = 0x007f0000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 0x00000400
ram : ORIGIN = 0x00020000, LENGTH = 0x00600000 - 0x00020000
eram : ORIGIN = 0x00600000, LENGTH = 0
}
INCLUDE arch/m68knommu/platform/68VZ328/ucdimm/fixed.ld
MEMORY
{
romvec : ORIGIN = 0x10c10000, LENGTH = 0x00000400
flash : ORIGIN = 0x10c10400, LENGTH = 0x00200000 - 0x00010400
eflash : ORIGIN = 0x10e00000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 0x00000400
bvec : ORIGIN = 0x00020000, LENGTH = 0x00000400
ram : ORIGIN = 0x00020400, LENGTH = 0x00800000 - 0x00020400
eram : ORIGIN = 0x00800000, LENGTH = 0
}
jiffies = jiffies_64 + 4;
SECTIONS
{
.fakevec :
{
} > romvec
.rom :
{
__rom_start = . ;
} > flash
.eflash :
{
_flashend = . ;
} > eflash
.realvec :
{
_ramvec = . ;
} > ramvec
.romvec :
{
_romvec = . ;
} > bvec
.text :
{
__ram_start = . ;
text_start = . ;
*(.text)
*(.text.*)
*(.rodata)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
__start___gpl_ksymtab = .; /* Kernel symbol table: GPL-only */
*(__gpl_ksymtab)
__stop___gpl_ksymtab = .;
_etext = . ;
__data_rom_start = ALIGN ( 4 ) ;
} > ram
.data :
{
_sdata = . ;
__data_start = . ;
. = ALIGN(0x2000) ;
*(.data.init_task)
. = ALIGN(0x2000) ;
*(.data)
*(.data.*)
*(.exitcall.exit)
. = ALIGN(4096) ;
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4) ;
__init_end = .;
_edata = . ;
edata = ALIGN( 0x10 ) ;
} > ram
.bss :
{
_sbss = ALIGN( 0x10 ) ;
__bss_start = ALIGN( 0x10 ) ;
__data_end = ALIGN( 0x10 ) ;
*(.bss)
*(COMMON)
_ebss = . ;
__bss_end = . ;
end = ALIGN( 0x10 ) ;
_end = ALIGN( 0x10 ) ;
} > ram
.eram :
{
__ramend = . ;
_ramend = . ;
} > eram
}
MEMORY
{
romvec : ORIGIN = 0x10c10000, LENGTH = 0x00000400
flash : ORIGIN = 0x10c10400, LENGTH = 0x001fec00
eflash : ORIGIN = 0x10d00000, LENGTH = 0
ramvec : ORIGIN = 0x00000000, LENGTH = 1024
ram : ORIGIN = 0x00020000, LENGTH = 0x00800000 - 0x00020000
eram : ORIGIN = 0x00800000, LENGTH = 0
}
INCLUDE arch/m68knommu/platform/68VZ328/ucdimm/fixed.ld
/*
* vmlinux.lds.S -- master linker script for m68knommu arch
*
* (C) Copyright 2002, Greg Ungerer <gerg@snapgear.com>
*
* This ends up looking compilcated, because of the number of
* address variations for ram and rom/flash layouts. The real
* work of the linker script is all at the end, and reasonably
* strait forward.
*/
#include <linux/config.h>
/*
* Original Palm pilot (same for Xcopilot).
* There is really only a rom target for this.
*/
#ifdef CONFIG_PILOT3
#ifdef CONFIG_ROMKERNEL
#include "platform/68328/pilot/rom.ld"
#endif
#ifdef CONFIG_RAMKERNEL
#include "platform/68328/pilot/ram.ld"
#endif
#define ROMVEC_START 0x10c00000
#define ROMVEC_LENGTH 0x10400
#define ROM_START 0x10c10400
#define ROM_LENGTH 0xfec00
#define ROM_END 0x10d00000
#define RAMVEC_START 0x00000000
#define RAMVEC_LENGTH 0x400
#define RAM_START 0x10000400
#define RAM_LENGTH 0xffc00
#define RAM_END 0x10100000
#define DATA_ADDR RAM_START
#endif
#ifdef CONFIG_UCSIMM
/*
* Same setup on both the uCsimm and uCdimm.
*/
#if defined(CONFIG_UCSIMM) || defined(CONFIG_UCDIMM)
#ifdef CONFIG_RAMKERNEL
#include "platform/68EZ328/ucsimm/ram.ld"
#define ROMVEC_START 0x10c10000
#define ROMVEC_LENGTH 0x400
#define ROM_START 0x10c10400
#define ROM_LENGTH 0x1efc00
#define ROM_END 0x10e00000
#define RAMVEC_START 0x00000000
#define RAMVEC_LENGTH 0x400
#define RAM_START 0x00020400
#define RAM_LENGTH 0x7dfc00
#define RAM_END 0x00800000
#endif
#ifdef CONFIG_ROMKERNEL
#include "platform/68EZ328/ucsimm/rom.ld"
#define ROMVEC_START 0x10c10000
#define ROMVEC_LENGTH 0x400
#define ROM_START 0x10c10400
#define ROM_LENGTH 0x1efc00
#define ROM_END 0x10e00000
#define RAMVEC_START 0x00000000
#define RAMVEC_LENGTH 0x400
#define RAM_START 0x00020000
#define RAM_LENGTH 0x600000
#define RAM_END 0x00800000
#endif
#ifdef CONFIG_HIMEMKERNEL
#include "platform/68EZ328/ucsimm/himem.ld"
#define ROMVEC_START 0x00600000
#define ROMVEC_LENGTH 0x400
#define ROM_START 0x00600400
#define ROM_LENGTH 0x1efc00
#define ROM_END 0x007f0000
#define RAMVEC_START 0x00000000
#define RAMVEC_LENGTH 0x400
#define RAM_START 0x00020000
#define RAM_LENGTH 0x5e0000
#define RAM_END 0x00600000
#endif
#endif
#ifdef CONFIG_UCDIMM
#ifdef CONFIG_RAMKERNEL
#include "platform/68VZ328/ucdimm/ram.ld"
#endif
#ifdef CONFIG_ROMKERNEL
#include "platform/68VZ328/ucdimm/rom.ld"
#endif
#ifdef CONFIG_HIMEMKERNEL
#include "platform/68VZ328/ucdimm/himem.ld"
#endif
#endif
#ifdef CONFIG_DRAGEN2
#ifdef CONFIG_RAMKERNEL
#include "platform/68VZ328/de2/ram.ld"
#define ROMVEC_START 0x04030000
#define ROMVEC_LENGTH 0x400
#define ROM_START 0x04030400
#define ROM_LENGTH 0x1cec00
#define ROM_END 0x04200000
#define RAMVEC_START 0x00000000
#define RAMVEC_LENGTH 0x400
#define RAM_START 0x00010400
#define RAM_LENGTH 0x1ff0000
#define RAM_END 0x02000000
#endif
#ifdef CONFIG_ROMKERNEL
#include "platform/68VZ328/de2/rom.ld"
#define ROMVEC_START 0x04030000
#define ROMVEC_LENGTH 0x400
#define ROM_START 0x04030400
#define ROM_LENGTH 0x1cec00
#define ROM_END 0x04200000
#define RAMVEC_START 0x00000000
#define RAMVEC_LENGTH 0x400
#define RAM_START 0x00010000
#define RAM_LENGTH 0x1ff0000
#define RAM_END 0x02000000
#endif
#ifdef CONFIG_HIMEMKERNEL
#include "platform/68VZ328/de2/himem.ld"
#define ROMVEC_START 0x01e00000
#define ROMVEC_LENGTH 0x400
#define ROM_START 0x01e00400
#define ROM_LENGTH 0x1ffc00
#define ROM_END 0x02000000
#define RAMVEC_START 0x00000000
#define RAMVEC_LENGTH 0x400
#define RAM_START 0x00010000
#define RAM_LENGTH 0x1df0000
#define RAM_END 0x01e00000
#endif
#endif
#ifdef CONFIG_UCQUICC
#ifdef CONFIG_RAMKERNEL
#include "platform/68360/uCquicc/ram.ld"
#endif
#ifdef CONFIG_ROMKERNEL
#include "platform/68360/uCquicc/rom.ld"
#endif
#define ROMVEC_START 0x00000000
#define ROMVEC_LENGTH 0x404
#define ROM_START 0x00000404
#define ROM_LENGTH 0x1ff6fc
#define ROM_END 0x00200000
#define RAMVEC_START 0x00200000
#define RAMVEC_LENGTH 0x404
#define RAM_START 0x00200404
#define RAM_LENGTH 0x1ff6fc
#define RAM_END 0x00400000
#endif
#ifdef CONFIG_ARN5206
#include "platform/5206/ARNEWSH/ram.ld"
/*
* The standard Arnewsh 5206 board only has 1MiB of ram. Not normally
* enough to be usefull. Assume the user has fitted something larger,
* at least 4MiB in size. No point in not letting the kernel completely
* link, it will be obvious if it is too big when they go to load it.
*/
#if defined(CONFIG_ARN5206)
#define RAM_START 0x10000
#define RAM_LENGTH 0x3f0000
#endif
#ifdef CONFIG_M5206eC3
#include "platform/5206e/MOTOROLA/ram.ld"
#endif
#ifdef CONFIG_ELITE
#include "platform/5206e/eLITE/ram.ld"
/*
* The Motorola 5206eLITE board only has 1MiB of static RAM.
*/
#if defined(CONFIG_ELITE)
#define RAM_START 0x30020000
#define RAM_END 0xe0000
#endif
#ifdef CONFIG_M5249C3
#include "platform/5249/MOTOROLA/ram.ld"
/*
* All the Motorola eval boards have the same basic arrangement.
* The end of RAM will vary depending on how much ram is fitted,
* but this isn't important here, we assume at least 4MiB.
*/
#if defined(CONFIG_M5206eC3) || defined(CONFIG_M5249C3) || \
defined(CONFIG_M5272C3) || defined(CONFIG_M5306C3) || \
defined(CONFIG_ARN5307) || defined(CONFIG_M5407C3)
#define RAM_START 0x20000
#define RAM_LENGTH 0x3e0000
#endif
#ifdef CONFIG_M5272C3
#include "platform/5272/MOTOROLA/ram.ld"
/*
* These flash boot boards use all of ram for operation. Again the
* actual memory size is not important here, assume at least 4MiB.
* They currently have no support for running in flash.
*/
#if defined(CONFIG_NETtel) || defined(CONFIG_eLIA) || \
defined(CONFIG_DISKtel) || defined(CONFIG_SECUREEDGEMP3) || \
defined(CONFIG_CLEOPATRA)
#define RAM_START 0x400
#define RAM_LENGTH 0x3ffc00
#endif
#ifdef CONFIG_ARN5307
#include "platform/5307/ARNEWSH/ram.ld"
#endif
#ifdef CONFIG_M5307C3
#include "platform/5307/MOTOROLA/ram.ld"
#endif
#ifdef CONFIG_eLIA
#include "platform/5307/eLIA/ram.ld"
#endif
#ifdef CONFIG_DISKtel
#include "platform/5307/DISKtel/ram.ld"
#ifdef CONFIG_RAMKERNEL
#define TEXT ram
#define DATA ram
#define INIT ram
#define BSS ram
#endif
#ifdef CONFIG_SECUREEDGEMP3
#include "platform/5307/MP3/ram.ld"
#ifdef CONFIG_ROMKERNEL
#define TEXT rom
#define DATA ram
#define INIT ram
#define BSS ram
#endif
#ifdef CONFIG_M5407
#include "platform/5407/MOTOROLA/ram.ld"
#ifndef DATA_ADDR
#define DATA_ADDR
#endif
#ifdef CONFIG_CLEOPATRA
#ifdef CONFIG_M5307
#include "platform/5307/CLEOPATRA/ram.ld"
OUTPUT_ARCH(m68k)
ENTRY(_start)
MEMORY {
#ifdef RAMVEC_START
ramvec : ORIGIN = RAMVEC_START, LENGTH = RAMVEC_LENGTH
#endif
#ifdef CONFIG_M5407
#include "platform/5407/CLEOPATRA/ram.ld"
ram : ORIGIN = RAM_START, LENGTH = RAM_LENGTH
#ifdef RAM_END
eram : ORIGIN = RAM_END, LENGTH = 0
#endif
#ifdef ROM_START
romvec : ORIGIN = ROMVEC_START, LENGTH = ROMVEC_LENGTH
rom : ORIGIN = ROM_START, LENGTH = ROM_LENGTH
erom : ORIGIN = ROM_END, LENGTH = 0
#endif
}
#ifdef CONFIG_NETtel
#ifdef CONFIG_M5206e
#include "platform/5206e/NETtel/ram.ld"
#endif
#ifdef CONFIG_M5272
#include "platform/5272/NETtel/ram.ld"
#endif
#ifdef CONFIG_M5307
#include "platform/5307/NETtel/ram.ld"
jiffies = jiffies_64 + 4;
SECTIONS {
#ifdef ROMVEC_START
. = ROMVEC_START ;
.romvec : {
__rom_start = . ;
_romvec = .;
*(.data.initvect)
} > romvec
#endif
.text : {
_stext = . ;
*(.text)
*(.text.lock)
*(.rodata)
*(.rodata.*)
. = ALIGN(0x4) ;
*(.kstrtab)
. = ALIGN(16); /* Exception table */
__start___ex_table = .;
*(__ex_table)
__stop___ex_table = .;
__start___ksymtab = .; /* Kernel symbol table */
*(__ksymtab)
__stop___ksymtab = .;
. = ALIGN(4) ;
_etext = . ;
} > TEXT
#ifdef ROM_END
. = ROM_END ;
.erom : {
__rom_end = . ;
} > erom
#endif
#ifdef RAMVEC_START
. = RAMVEC_START ;
.ramvec : {
__ramvec = .;
} > ramvec
#endif
.data DATA_ADDR : {
. = ALIGN(4);
_sdata = . ;
*(.data)
. = ALIGN(8192) ;
*(.data.init_task)
_edata = . ;
} > DATA
.init : {
. = ALIGN(4096);
__init_begin = .;
*(.init.text)
*(.init.data)
. = ALIGN(16);
__setup_start = .;
*(.init.setup)
__setup_end = .;
__start___param = .;
*(__param)
__stop___param = .;
__initcall_start = .;
*(.initcall1.init)
*(.initcall2.init)
*(.initcall3.init)
*(.initcall4.init)
*(.initcall5.init)
*(.initcall6.init)
*(.initcall7.init)
__initcall_end = .;
. = ALIGN(4);
__initramfs_start = .;
*(.init.ramfs)
__initramfs_end = .;
. = ALIGN(4);
__init_end = .;
} > INIT
/DISCARD/ : {
*(.exit.text)
*(.exit.data)
*(.exitcall.exit)
}
.bss : {
. = ALIGN(4);
_sbss = . ;
*(.bss)
*(COMMON)
. = ALIGN(4) ;
_ebss = . ;
} > BSS
#ifdef RAM_END
. = RAM_END ;
.eram : {
__ramend = . ;
_ramend = . ;
} > eram
#endif
}
......@@ -755,8 +755,6 @@ static struct ioctl32_list ioctl32_handler_table[] = {
IOCTL32_HANDLER(BLKSECTGET, w_long),
IOCTL32_DEFAULT(BLKSSZGET),
IOCTL32_HANDLER(BLKPG, blkpg_ioctl_trans),
IOCTL32_DEFAULT(BLKELVGET),
IOCTL32_DEFAULT(BLKELVSET),
IOCTL32_DEFAULT(BLKBSZGET),
IOCTL32_DEFAULT(BLKBSZSET),
......
......@@ -107,6 +107,11 @@ config PARISC64
enable this option otherwise. The 64bit kernel is significantly bigger
and slower than the 32bit one.
config COMPAT
bool
depends on PARISC64
default y
config PDC_NARROW
bool "32-bit firmware"
depends on PARISC64
......@@ -337,6 +342,8 @@ source "drivers/usb/Kconfig"
source "net/bluetooth/Kconfig"
source "arch/parisc/oprofile/Kconfig"
menu "Kernel hacking"
config DEBUG_KERNEL
......
......@@ -18,69 +18,51 @@
#
ifdef CONFIG_PARISC64
CROSS_COMPILE := hppa64-linux-
UTS_MACHINE := parisc64
LDFLAGS_BLOB := --format binary --oformat elf64-hppa-linux
CROSS_COMPILE := hppa64-linux-
UTS_MACHINE := parisc64
LDFLAGS_BLOB := --format binary --oformat elf64-hppa-linux
else
MACHINE := $(subst 64,,$(shell uname -m))
ifneq (${MACHINE},parisc)
# cross compilation
CROSS_COMPILE := hppa-linux-
MACHINE := $(subst 64,,$(shell uname -m))
ifneq ($(MACHINE),parisc)
CROSS_COMPILE := hppa-linux-
endif
LDFLAGS_BLOB := --format binary --oformat elf32-hppa-linux
LDFLAGS_BLOB := --format binary --oformat elf32-hppa-linux
endif
FINAL_LD=$(CROSS_COMPILE)ld --warn-common --warn-section-align
OBJCOPY_FLAGS =-O binary -R .note -R .comment -S
CFLAGS_PIPE := -pipe
CFLAGS_NSR := -fno-strength-reduce
CFLAGS := $(CFLAGS) -D__linux__ $(CFLAGS_PIPE) $(CFLAGS_NSR)
cflags-y := -D__linux__ -pipe -fno-strength-reduce
# These should be on for older toolchains or SOM toolchains that don't
# enable them by default.
CFLAGS += -mno-space-regs -mfast-indirect-calls
cflags-y += -mno-space-regs -mfast-indirect-calls
# No fixed-point multiply
CFLAGS += -mdisable-fpregs
cflags-y += -mdisable-fpregs
# Without this, "ld -r" results in .text sections that are too big
# (> 0x40000) for branches to reach stubs.
CFLAGS += -ffunction-sections
cflags-y += -ffunction-sections
# select which processor to optimise for
ifdef CONFIG_PA7100
CFLAGS += -march=1.1 -mschedule=7100
endif
ifdef CONFIG_PA7200
CFLAGS += -march=1.1 -mschedule=7200
endif
cflags-$(CONFIG_PA7100) += -march=1.1 -mschedule=7100
cflags-$(CONFIG_PA7200) += -march=1.1 -mschedule=7200
cflags-$(CONFIG_PA7100LC) += -march=1.1 -mschedule=7100LC
cflags-$(CONFIG_PA8X00) += -march=2.0 -mschedule=8000
ifdef CONFIG_PA7100LC
CFLAGS += -march=1.1 -mschedule=7100LC
endif
head-y := arch/parisc/kernel/head.o
head-$(CONFIG_PARISC64) := arch/parisc/kernel/head64.o
ifdef CONFIG_PA8X00
CFLAGS += -march=2.0 -mschedule=8000
endif
CFLAGS += $(cflags-y)
HEAD := $(head-y)
HEAD := arch/parisc/kernel/head.o
ifdef CONFIG_PARISC64
HEAD := arch/parisc/kernel/head64.o
endif
core-y += $(addprefix arch/parisc/, kernel/pdc_cons.o kernel/process.o \
mm/ kernel/ hpux/ math-emu/ kernel/init_task.o )
libs-y += arch/parisc/lib/ `$(CC) -print-libgcc-file-name`
core-y += arch/parisc/kernel/pdc_cons.o \
arch/parisc/kernel/process.o \
arch/parisc/mm/ \
arch/parisc/kernel/ \
arch/parisc/hpux/ \
arch/parisc/math-emu/ \
arch/parisc/kernel/init_task.o
libs-y += arch/parisc/lib/ \
`$(CC) -print-libgcc-file-name`
drivers-$(CONFIG_OPROFILE) += arch/parisc/oprofile/
palo: vmlinux
@if [ $$(palo -f /dev/null >/dev/null 2>&1 ; echo $$?) != 2 ]; then \
......@@ -101,33 +83,26 @@ oldpalo: vmlinux
export TOPDIR=`pwd`; \
unset STRIP LDFLAGS CPP CPPFLAGS AFLAGS CFLAGS CC LD; cd ../palo && make lifimage
Image: palo
Image-clean:
ramdisk.o:
zImage: palo
bzImage: palo
# Shorthands for known targets not supported by parisc, use palo as default
Image zImage bzImage: palo
compressed: zImage
prepare: include/asm-parisc/offsets.h
install:
archmrproper:
archclean:
prepare: include/asm-$(ARCH)/offsets.h
arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \
arch/parisc/kernel/asm-offsets.s: include/asm include/linux/version.h \
include/config/MARKER
include/asm-$(ARCH)/offsets.h.tmp: arch/$(ARCH)/kernel/asm-offsets.s
@$(generate-asm-offsets.h) < $< > $@
include/asm-$(ARCH)/offsets.h: include/asm-$(ARCH)/offsets.h.tmp
include/asm-parisc/offsets.h: arch/parisc/kernel/asm-offsets.s
@echo -n ' Generating $@'
@$(generate-asm-offsets.h) < $< > $@.tmp
@$(update-if-changed)
archclean:
archmrproper:
CLEAN_FILES += palo.conf lifimage include/asm-parisc/offsets.h \
include/asm-parisc/offsets.h.tmp
define archhelp
@echo '* vmlinux - Uncompressed kernel image (./vmlinux)'
@echo ' palo - Bootable image (./lifimage)'
endef
This diff is collapsed.
......@@ -131,9 +131,9 @@ static int cp_hpux_stat(struct kstat *stat, struct hpux_stat64 *statbuf)
tmp.st_gid = stat->gid;
tmp.st_rdev = stat->rdev;
tmp.st_size = stat->size;
tmp.st_atime = stat->atime;
tmp.st_mtime = stat->mtime;
tmp.st_ctime = stat->ctime;
tmp.st_atime = stat->atime.tv_sec;
tmp.st_mtime = stat->mtime.tv_sec;
tmp.st_ctime = stat->ctime.tv_sec;
tmp.st_blocks = stat->blocks;
tmp.st_blksize = stat->blksize;
return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
......
......@@ -2,16 +2,14 @@
# Makefile for arch/parisc/kernel
#
ifdef CONFIG_PARISC64
EXTRA_TARGETS := init_task.o pdc_cons.o process.o head64.o unaligned.o perf.o perf_asm.o
else
EXTRA_TARGETS := init_task.o pdc_cons.o process.o head.o unaligned.o
endif
head-y := head.o
head-$(CONFIG_PARISC64) := head64.o
EXTRA_TARGETS := init_task.o pdc_cons.o process.o unaligned.o $(head-y)
AFLAGS_entry.o := -traditional
AFLAGS_entry.o := -traditional
AFLAGS_pacache.o := -traditional
export-objs := parisc_ksyms.o
export-objs := parisc_ksyms.o
obj-y := cache.o pacache.o setup.o traps.o time.o irq.o \
pa7300lc.o syscall.o entry.o sys_parisc.o firmware.o \
......@@ -19,10 +17,11 @@ obj-y := cache.o pacache.o setup.o traps.o time.o irq.o \
signal.o hpmc.o real2.o parisc_ksyms.o unaligned.o \
processor.o pdc_chassis.o
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_PA11) += pci-dma.o
obj-$(CONFIG_PCI) += pci.o
obj-$(CONFIG_PARISC64) += binfmt_elf32.o sys_parisc32.o \
ioctl32.o signal32.o
obj-$(CONFIG_SMP) += smp.o
obj-$(CONFIG_PROFILING) += profile.o
obj-$(CONFIG_PA11) += pci-dma.o
obj-$(CONFIG_PCI) += pci.o
obj-$(CONFIG_MODULES) += module.o
obj-$(CONFIG_PARISC64) += binfmt_elf32.o sys_parisc32.o ioctl32.o signal32.o
# only supported for PCX-W/U in 64-bit mode at the moment
obj-$(CONFIG_PARISC64) += perf.o perf_asm.o
obj-$(CONFIG_PARISC64) += perf.o perf_asm.o
......@@ -29,6 +29,7 @@
int main(void)
{
DEFINE(TASK_THREAD_INFO, offsetof(struct task_struct, thread_info));
DEFINE(TASK_STATE, offsetof(struct task_struct, state));
DEFINE(TASK_FLAGS, offsetof(struct task_struct, flags));
DEFINE(TASK_SIGPENDING, offsetof(struct task_struct, pending));
......@@ -213,6 +214,7 @@ int main(void)
DEFINE(PT_SIZE, sizeof(struct pt_regs));
DEFINE(PT_SZ_ALGN, align(sizeof(struct pt_regs), 64));
BLANK();
DEFINE(TI_TASK, offsetof(struct thread_info, task));
DEFINE(TI_EXEC_DOMAIN, offsetof(struct thread_info, exec_domain));
DEFINE(TI_FLAGS, offsetof(struct thread_info, flags));
DEFINE(TI_CPU, offsetof(struct thread_info, cpu));
......
......@@ -19,7 +19,7 @@ typedef unsigned int elf_greg_t;
#include <linux/module.h>
#include <linux/config.h>
#include <linux/elfcore.h>
#include "sys32.h" /* struct timeval32 */
#include <linux/compat.h>
#define elf_prstatus elf_prstatus32
struct elf_prstatus32
......@@ -32,10 +32,10 @@ struct elf_prstatus32
pid_t pr_ppid;
pid_t pr_pgrp;
pid_t pr_sid;
struct timeval32 pr_utime; /* User time */
struct timeval32 pr_stime; /* System time */
struct timeval32 pr_cutime; /* Cumulative user time */
struct timeval32 pr_cstime; /* Cumulative system time */
struct compat_timeval pr_utime; /* User time */
struct compat_timeval pr_stime; /* System time */
struct compat_timeval pr_cutime; /* Cumulative user time */
struct compat_timeval pr_cstime; /* Cumulative system time */
elf_gregset_t pr_reg; /* GP registers */
int pr_fpvalid; /* True if math co-processor being used. */
};
......@@ -89,4 +89,12 @@ struct elf_prpsinfo32
#define SET_PERSONALITY(ex, ibcs2) \
current->personality = PER_LINUX_32BIT
#define jiffies_to_timeval jiffies_to_compat_timeval
static __inline__ void
jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
{
value->tv_usec = (jiffies % HZ) * (1000000L / HZ);
value->tv_sec = jiffies / HZ;
}
#include "../../../fs/binfmt_elf.c"
This diff is collapsed.
This diff is collapsed.
......@@ -48,7 +48,6 @@ boot_args:
.import $global$ /* forward declaration */
.import fault_vector_11,code /* IVA parisc 1.1 32 bit */
.import fault_vector_20,code /* IVA parisc 2.0 32 bit */
.import start_parisc,code /* then enable VM and go here */
.export stext
.export _stext,data /* Kernel want it this way! */
......@@ -74,7 +73,7 @@ stext:
ldo R%PA(_end)(%r4),%r4
$bss_loop:
cmpb,<<,n %r3,%r4,$bss_loop
stb,ma %r0,1(%r3)
stw,ma %r0,4(%r3)
/* Save away the arguments the boot loader passed in (32 bit args) */
......@@ -277,8 +276,8 @@ smp_slave_stext:
ldo R%PA(smp_init_current_idle_task)(%sp),%sp
ldw 0(%sp),%sp /* load task address */
mtctl %sp,%cr30 /* store in cr30 */
addil L%TASK_SZ_ALGN,%sp /* stack is above task */
ldo R%TASK_SZ_ALGN(%r1),%sp
addil L%THREAD_SZ_ALGN,%sp /* stack is above task */
ldo R%THREAD_SZ_ALGN(%r1),%sp
/* point CPU to kernel page tables */
ldil L%PA(swapper_pg_dir),%r4
......
......@@ -176,7 +176,9 @@ common_stext:
#endif /* CONFIG_SMP */
/* Save the rfi target address */
std %r11, TASK_PT_GR11-TASK_SZ_ALGN(%sp)
ldo -THREAD_SZ_ALGN(%sp), %r1
ldd TI_TASK(%r1), %r1
std %r11, TASK_PT_GR11(%r1)
#ifndef CONFIG_PDC_NARROW
/* Switch to wide mode; Superdome doesn't support narrow PDC
......@@ -206,7 +208,9 @@ common_stext:
stext_pdc_ret:
/* restore rfi target address*/
ldd TASK_PT_GR11-TASK_SZ_ALGN(%sp), %r11
ldo -THREAD_SZ_ALGN(%sp), %r1
ldd TI_TASK(%r1), %r1
ldd TASK_PT_GR11(%r1), %r11
/* PARANOID: clear user scratch/user space SR's */
mtsp %r0,%sr0
......@@ -310,7 +314,7 @@ smp_slave_stext:
load32 PA(smp_init_current_idle_task),%sp
ldd 0(%sp),%sp /* load task address */
mtctl %sp,%cr30 /* store in cr30 */
ldo TASK_SZ_ALGN(%sp),%sp
ldo THREAD_SZ_ALGN(%sp),%sp
tophys_r1 %sp
/* point CPU to kernel page tables */
......
......@@ -28,6 +28,7 @@
#include <asm/pdc.h>
#include <asm/processor.h>
#include <asm/page.h>
#include <asm/parisc-device.h>
/*
** Debug options
......@@ -529,7 +530,8 @@ static void __init system_map_inventory(void)
* first stop the usb controller, otherwise the machine
* might crash during iommu setup
*/
pdc_suspend_usb();
#warning We still probably need to worry about USB here, but how?
/* pdc_suspend_usb(); */
for (i = 0; status != PDC_BAD_PROC && status != PDC_NE_MOD; i++) {
struct parisc_device *dev;
......@@ -587,6 +589,8 @@ void __init do_memory_inventory(void)
void __init do_device_inventory(void)
{
extern void parisc_generic_device_register(void);
printk(KERN_INFO "Searching for devices...\n");
switch (pdc_type) {
......@@ -606,7 +610,7 @@ void __init do_device_inventory(void)
default:
panic("Unknown PDC type!\n");
}
parisc_generic_device_register();
printk(KERN_INFO "Found devices:\n");
print_parisc_devices();
}
This diff is collapsed.
This diff is collapsed.
......@@ -86,9 +86,9 @@ EXPORT_SYMBOL(pdc_iodc_read);
#include <asm/io.h>
EXPORT_SYMBOL(__ioremap);
EXPORT_SYMBOL(iounmap);
EXPORT_SYMBOL(memcpy_toio);
EXPORT_SYMBOL(memcpy_fromio);
EXPORT_SYMBOL(memset_io);
EXPORT_SYMBOL(__memcpy_toio);
EXPORT_SYMBOL(__memcpy_fromio);
EXPORT_SYMBOL(__memset_io);
#if defined(CONFIG_PCI) || defined(CONFIG_ISA)
EXPORT_SYMBOL(inb);
......@@ -141,7 +141,6 @@ extern void $$divU(void);
extern void $$remI(void);
extern void $$remU(void);
extern void $$mulI(void);
extern void $$mulU(void);
extern void $$divU_3(void);
extern void $$divU_5(void);
extern void $$divU_6(void);
......@@ -166,9 +165,6 @@ EXPORT_SYMBOL_NOVERS($$divU);
EXPORT_SYMBOL_NOVERS($$remI);
EXPORT_SYMBOL_NOVERS($$remU);
EXPORT_SYMBOL_NOVERS($$mulI);
#ifndef __LP64__
EXPORT_SYMBOL_NOVERS($$mulU);
#endif
EXPORT_SYMBOL_NOVERS($$divU_3);
EXPORT_SYMBOL_NOVERS($$divU_5);
EXPORT_SYMBOL_NOVERS($$divU_6);
......@@ -215,3 +211,10 @@ extern void $$dyncall(void);
EXPORT_SYMBOL_NOVERS($$dyncall);
#endif
#ifdef CONFIG_PROFILING
EXPORT_SYMBOL_GPL(register_profile_notifier);
EXPORT_SYMBOL_GPL(unregister_profile_notifier);
#endif
#include <asm/pgtable.h>
EXPORT_SYMBOL_NOVERS(vmalloc_start);
This diff is collapsed.
......@@ -238,7 +238,7 @@ pcibios_update_resource(
if (res->flags & IORESOURCE_IO) {
barval = PCI_PORT_ADDR(res->start);
} else if (res->flags & IORESOURCE_MEM) {
barval = PCI_BUS_ADDR(HBA_DATA(dev->bus->sysdata), res->start);
barval = PCI_BUS_ADDR(HBA_DATA(dev->bus->dev->platform_data), res->start);
} else {
panic("pcibios_update_resource() WTF? flags not IO or MEM");
}
......@@ -350,7 +350,7 @@ void __devinit pcibios_fixup_pbus_ranges(
struct pbus_set_ranges_data *ranges
)
{
struct pci_hba_data *hba = HBA_DATA(bus->sysdata);
struct pci_hba_data *hba = HBA_DATA(bus->dev->platform_data);
/*
** I/O space may see busnumbers here. Something
......@@ -487,24 +487,6 @@ pcibios_setup_host_bridge(struct pci_bus *bus)
}
/*
** Mostly copied from drivers/pci/setup-bus.c:pci_assign_unassigned_resources()
*/
void __devinit
pcibios_assign_unassigned_resources(struct pci_bus *bus)
{
/* from drivers/pci/setup-bus.c */
extern void pbus_assign_resources(struct pci_bus *bus, struct pbus_set_ranges_data *ranges);
struct pbus_set_ranges_data ranges;
ranges.io_end = ranges.io_start
= bus->resource[0]->start + PCIBIOS_MIN_IO;
ranges.mem_end = ranges.mem_start
= bus->resource[1]->start + PCIBIOS_MIN_MEM;
pbus_assign_resources(bus, &ranges);
}
/*
** PARISC specific (unfortunately)
*/
......
......@@ -56,7 +56,7 @@ static int pdc_console_setup(struct console *co, char *options)
#define PDC_CONSOLE_DEVICE pdc_console_device
static kdev_t pdc_console_device (struct console *c)
{
return mk_kdev(PDCCONS_MAJOR, 0);
return mk_kdev(MUX_MAJOR, 0);
}
#else
#define PDC_CONSOLE_DEVICE NULL
......
This diff is collapsed.
This diff is collapsed.
......@@ -42,6 +42,7 @@
#include <asm/page.h>
#include <asm/pdc.h>
#include <asm/irq.h> /* for struct irq_region */
#include <asm/parisc-device.h>
struct system_cpuinfo_parisc boot_cpu_data;
struct cpuinfo_parisc cpu_data[NR_CPUS];
......
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.
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