Merge branch 'x86/mm' into core/percpu
Conflicts: arch/x86/mm/fault.c
This commit is contained in:
1
arch/alpha/kernel/.gitignore
vendored
Normal file
1
arch/alpha/kernel/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
vmlinux.lds
|
@@ -658,16 +658,8 @@ __marvel_rtc_io(u8 b, unsigned long addr, int write)
|
||||
rtc_access.data = bcd2bin(b);
|
||||
rtc_access.function = 0x48 + !write; /* GET/PUT_TOY */
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
if (smp_processor_id() != boot_cpuid)
|
||||
smp_call_function_single(boot_cpuid,
|
||||
__marvel_access_rtc,
|
||||
&rtc_access, 1);
|
||||
else
|
||||
__marvel_access_rtc(&rtc_access);
|
||||
#else
|
||||
__marvel_access_rtc(&rtc_access);
|
||||
#endif
|
||||
|
||||
ret = bin2bcd(rtc_access.data);
|
||||
break;
|
||||
|
||||
|
@@ -896,9 +896,9 @@ sys_getxpid:
|
||||
.end sys_getxpid
|
||||
|
||||
.align 4
|
||||
.globl sys_pipe
|
||||
.ent sys_pipe
|
||||
sys_pipe:
|
||||
.globl sys_alpha_pipe
|
||||
.ent sys_alpha_pipe
|
||||
sys_alpha_pipe:
|
||||
lda $sp, -16($sp)
|
||||
stq $26, 0($sp)
|
||||
.prologue 0
|
||||
@@ -916,7 +916,7 @@ sys_pipe:
|
||||
stq $1, 80+16($sp)
|
||||
1: lda $sp, 16($sp)
|
||||
ret
|
||||
.end sys_pipe
|
||||
.end sys_alpha_pipe
|
||||
|
||||
.align 4
|
||||
.globl sys_execve
|
||||
|
@@ -63,6 +63,8 @@ init_srm_irqs(long max, unsigned long ignore_mask)
|
||||
{
|
||||
long i;
|
||||
|
||||
if (NR_IRQS <= 16)
|
||||
return;
|
||||
for (i = 16; i < max; ++i) {
|
||||
if (i < 64 && ((ignore_mask >> i) & 1))
|
||||
continue;
|
||||
|
@@ -40,7 +40,10 @@
|
||||
#define CAT1(x,y) x##y
|
||||
#define CAT(x,y) CAT1(x,y)
|
||||
|
||||
#define DO_DEFAULT_RTC .rtc_port = 0x70
|
||||
#define DO_DEFAULT_RTC \
|
||||
.rtc_port = 0x70, \
|
||||
.rtc_get_time = common_get_rtc_time, \
|
||||
.rtc_set_time = common_set_rtc_time
|
||||
|
||||
#define DO_EV4_MMU \
|
||||
.max_asn = EV4_MAX_ASN, \
|
||||
|
@@ -145,6 +145,8 @@ extern void smp_percpu_timer_interrupt(struct pt_regs *);
|
||||
extern irqreturn_t timer_interrupt(int irq, void *dev);
|
||||
extern void common_init_rtc(void);
|
||||
extern unsigned long est_cycle_freq;
|
||||
extern unsigned int common_get_rtc_time(struct rtc_time *time);
|
||||
extern int common_set_rtc_time(struct rtc_time *time);
|
||||
|
||||
/* smc37c93x.c */
|
||||
extern void SMC93x_Init(void);
|
||||
|
@@ -261,6 +261,8 @@ struct alpha_machine_vector jensen_mv __initmv = {
|
||||
.machine_check = jensen_machine_check,
|
||||
.max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS,
|
||||
.rtc_port = 0x170,
|
||||
.rtc_get_time = common_get_rtc_time,
|
||||
.rtc_set_time = common_set_rtc_time,
|
||||
|
||||
.nr_irqs = 16,
|
||||
.device_interrupt = jensen_device_interrupt,
|
||||
|
@@ -23,6 +23,7 @@
|
||||
#include <asm/hwrpb.h>
|
||||
#include <asm/tlbflush.h>
|
||||
#include <asm/vga.h>
|
||||
#include <asm/rtc.h>
|
||||
|
||||
#include "proto.h"
|
||||
#include "err_impl.h"
|
||||
@@ -426,6 +427,57 @@ marvel_init_rtc(void)
|
||||
init_rtc_irq();
|
||||
}
|
||||
|
||||
struct marvel_rtc_time {
|
||||
struct rtc_time *time;
|
||||
int retval;
|
||||
};
|
||||
|
||||
#ifdef CONFIG_SMP
|
||||
static void
|
||||
smp_get_rtc_time(void *data)
|
||||
{
|
||||
struct marvel_rtc_time *mrt = data;
|
||||
mrt->retval = __get_rtc_time(mrt->time);
|
||||
}
|
||||
|
||||
static void
|
||||
smp_set_rtc_time(void *data)
|
||||
{
|
||||
struct marvel_rtc_time *mrt = data;
|
||||
mrt->retval = __set_rtc_time(mrt->time);
|
||||
}
|
||||
#endif
|
||||
|
||||
static unsigned int
|
||||
marvel_get_rtc_time(struct rtc_time *time)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
struct marvel_rtc_time mrt;
|
||||
|
||||
if (smp_processor_id() != boot_cpuid) {
|
||||
mrt.time = time;
|
||||
smp_call_function_single(boot_cpuid, smp_get_rtc_time, &mrt, 1);
|
||||
return mrt.retval;
|
||||
}
|
||||
#endif
|
||||
return __get_rtc_time(time);
|
||||
}
|
||||
|
||||
static int
|
||||
marvel_set_rtc_time(struct rtc_time *time)
|
||||
{
|
||||
#ifdef CONFIG_SMP
|
||||
struct marvel_rtc_time mrt;
|
||||
|
||||
if (smp_processor_id() != boot_cpuid) {
|
||||
mrt.time = time;
|
||||
smp_call_function_single(boot_cpuid, smp_set_rtc_time, &mrt, 1);
|
||||
return mrt.retval;
|
||||
}
|
||||
#endif
|
||||
return __set_rtc_time(time);
|
||||
}
|
||||
|
||||
static void
|
||||
marvel_smp_callin(void)
|
||||
{
|
||||
@@ -466,7 +518,9 @@ marvel_smp_callin(void)
|
||||
struct alpha_machine_vector marvel_ev7_mv __initmv = {
|
||||
.vector_name = "MARVEL/EV7",
|
||||
DO_EV7_MMU,
|
||||
DO_DEFAULT_RTC,
|
||||
.rtc_port = 0x70,
|
||||
.rtc_get_time = marvel_get_rtc_time,
|
||||
.rtc_set_time = marvel_set_rtc_time,
|
||||
DO_MARVEL_IO,
|
||||
.machine_check = marvel_machine_check,
|
||||
.max_isa_dma_address = ALPHA_MAX_ISA_DMA_ADDRESS,
|
||||
|
@@ -245,6 +245,10 @@ nautilus_init_pci(void)
|
||||
IRONGATE0->pci_mem = pci_mem;
|
||||
|
||||
pci_bus_assign_resources(bus);
|
||||
|
||||
/* pci_common_swizzle() relies on bus->self being NULL
|
||||
for the root bus, so just clear it. */
|
||||
bus->self = NULL;
|
||||
pci_fixup_irqs(alpha_mv.pci_swizzle, alpha_mv.pci_map_irq);
|
||||
}
|
||||
|
||||
|
@@ -52,7 +52,7 @@ sys_call_table:
|
||||
.quad sys_setpgid
|
||||
.quad alpha_ni_syscall /* 40 */
|
||||
.quad sys_dup
|
||||
.quad sys_pipe
|
||||
.quad sys_alpha_pipe
|
||||
.quad osf_set_program_attributes
|
||||
.quad alpha_ni_syscall
|
||||
.quad sys_open /* 45 */
|
||||
|
@@ -46,6 +46,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/hwrpb.h>
|
||||
#include <asm/8253pit.h>
|
||||
#include <asm/rtc.h>
|
||||
|
||||
#include <linux/mc146818rtc.h>
|
||||
#include <linux/time.h>
|
||||
@@ -180,6 +181,15 @@ common_init_rtc(void)
|
||||
init_rtc_irq();
|
||||
}
|
||||
|
||||
unsigned int common_get_rtc_time(struct rtc_time *time)
|
||||
{
|
||||
return __get_rtc_time(time);
|
||||
}
|
||||
|
||||
int common_set_rtc_time(struct rtc_time *time)
|
||||
{
|
||||
return __set_rtc_time(time);
|
||||
}
|
||||
|
||||
/* Validate a computed cycle counter result against the known bounds for
|
||||
the given processor core. There's too much brokenness in the way of
|
||||
|
Reference in New Issue
Block a user