mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-14 15:54:15 +08:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha
Pull alpha updates from Matt Turner: "A few small fixes and clean ups" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha: alpha: fix crash if pthread_create races with signal delivery alpha: fix formating of stack content alpha: fix reboot on Avanti platform alpha: deprecate pci_get_bus_and_slot() alpha: Fix mixed up args in EXC macro in futex operations alpha: osf_sys.c: use timespec64 where appropriate alpha: osf_sys.c: fix put_tv32 regression alpha: make thread_saved_pc static alpha: make XTABS equivalent to TAB3
This commit is contained in:
commit
b89e32ccd1
@ -20,8 +20,8 @@
|
|||||||
"3: .subsection 2\n" \
|
"3: .subsection 2\n" \
|
||||||
"4: br 1b\n" \
|
"4: br 1b\n" \
|
||||||
" .previous\n" \
|
" .previous\n" \
|
||||||
EXC(1b,3b,%1,$31) \
|
EXC(1b,3b,$31,%1) \
|
||||||
EXC(2b,3b,%1,$31) \
|
EXC(2b,3b,$31,%1) \
|
||||||
: "=&r" (oldval), "=&r"(ret) \
|
: "=&r" (oldval), "=&r"(ret) \
|
||||||
: "r" (uaddr), "r"(oparg) \
|
: "r" (uaddr), "r"(oparg) \
|
||||||
: "memory")
|
: "memory")
|
||||||
@ -82,8 +82,8 @@ futex_atomic_cmpxchg_inatomic(u32 *uval, u32 __user *uaddr,
|
|||||||
"3: .subsection 2\n"
|
"3: .subsection 2\n"
|
||||||
"4: br 1b\n"
|
"4: br 1b\n"
|
||||||
" .previous\n"
|
" .previous\n"
|
||||||
EXC(1b,3b,%0,$31)
|
EXC(1b,3b,$31,%0)
|
||||||
EXC(2b,3b,%0,$31)
|
EXC(2b,3b,$31,%0)
|
||||||
: "+r"(ret), "=&r"(prev), "=&r"(cmp)
|
: "+r"(ret), "=&r"(prev), "=&r"(cmp)
|
||||||
: "r"(uaddr), "r"((long)(int)oldval), "r"(newval)
|
: "r"(uaddr), "r"((long)(int)oldval), "r"(newval)
|
||||||
: "memory");
|
: "memory");
|
||||||
|
@ -40,15 +40,12 @@ typedef struct {
|
|||||||
struct thread_struct { };
|
struct thread_struct { };
|
||||||
#define INIT_THREAD { }
|
#define INIT_THREAD { }
|
||||||
|
|
||||||
/* Return saved PC of a blocked thread. */
|
|
||||||
struct task_struct;
|
|
||||||
extern unsigned long thread_saved_pc(struct task_struct *);
|
|
||||||
|
|
||||||
/* Do necessary setup to start up a newly executed thread. */
|
/* Do necessary setup to start up a newly executed thread. */
|
||||||
struct pt_regs;
|
struct pt_regs;
|
||||||
extern void start_thread(struct pt_regs *, unsigned long, unsigned long);
|
extern void start_thread(struct pt_regs *, unsigned long, unsigned long);
|
||||||
|
|
||||||
/* Free all resources held by a thread. */
|
/* Free all resources held by a thread. */
|
||||||
|
struct task_struct;
|
||||||
extern void release_thread(struct task_struct *);
|
extern void release_thread(struct task_struct *);
|
||||||
|
|
||||||
unsigned long get_wchan(struct task_struct *p);
|
unsigned long get_wchan(struct task_struct *p);
|
||||||
|
@ -110,7 +110,11 @@ struct ktermios {
|
|||||||
#define VTDLY 00200000
|
#define VTDLY 00200000
|
||||||
#define VT0 00000000
|
#define VT0 00000000
|
||||||
#define VT1 00200000
|
#define VT1 00200000
|
||||||
#define XTABS 01000000 /* Hmm.. Linux/i386 considers this part of TABDLY.. */
|
/*
|
||||||
|
* Should be equivalent to TAB3, see description of TAB3 in
|
||||||
|
* POSIX.1-2008, Ch. 11.2.3 "Output Modes"
|
||||||
|
*/
|
||||||
|
#define XTABS TAB3
|
||||||
|
|
||||||
/* c_cflag bit meaning */
|
/* c_cflag bit meaning */
|
||||||
#define CBAUD 0000037
|
#define CBAUD 0000037
|
||||||
|
@ -425,7 +425,7 @@ sys_pciconfig_iobase(long which, unsigned long bus, unsigned long dfn)
|
|||||||
if (bus == 0 && dfn == 0) {
|
if (bus == 0 && dfn == 0) {
|
||||||
hose = pci_isa_hose;
|
hose = pci_isa_hose;
|
||||||
} else {
|
} else {
|
||||||
dev = pci_get_bus_and_slot(bus, dfn);
|
dev = pci_get_domain_bus_and_slot(0, bus, dfn);
|
||||||
if (!dev)
|
if (!dev)
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
hose = dev->sysdata;
|
hose = dev->sysdata;
|
||||||
|
@ -144,7 +144,8 @@ struct pci_iommu_arena
|
|||||||
};
|
};
|
||||||
|
|
||||||
#if defined(CONFIG_ALPHA_SRM) && \
|
#if defined(CONFIG_ALPHA_SRM) && \
|
||||||
(defined(CONFIG_ALPHA_CIA) || defined(CONFIG_ALPHA_LCA))
|
(defined(CONFIG_ALPHA_CIA) || defined(CONFIG_ALPHA_LCA) || \
|
||||||
|
defined(CONFIG_ALPHA_AVANTI))
|
||||||
# define NEED_SRM_SAVE_RESTORE
|
# define NEED_SRM_SAVE_RESTORE
|
||||||
#else
|
#else
|
||||||
# undef NEED_SRM_SAVE_RESTORE
|
# undef NEED_SRM_SAVE_RESTORE
|
||||||
|
@ -269,12 +269,13 @@ copy_thread(unsigned long clone_flags, unsigned long usp,
|
|||||||
application calling fork. */
|
application calling fork. */
|
||||||
if (clone_flags & CLONE_SETTLS)
|
if (clone_flags & CLONE_SETTLS)
|
||||||
childti->pcb.unique = regs->r20;
|
childti->pcb.unique = regs->r20;
|
||||||
|
else
|
||||||
|
regs->r20 = 0; /* OSF/1 has some strange fork() semantics. */
|
||||||
childti->pcb.usp = usp ?: rdusp();
|
childti->pcb.usp = usp ?: rdusp();
|
||||||
*childregs = *regs;
|
*childregs = *regs;
|
||||||
childregs->r0 = 0;
|
childregs->r0 = 0;
|
||||||
childregs->r19 = 0;
|
childregs->r19 = 0;
|
||||||
childregs->r20 = 1; /* OSF/1 has some strange fork() semantics. */
|
childregs->r20 = 1; /* OSF/1 has some strange fork() semantics. */
|
||||||
regs->r20 = 0;
|
|
||||||
stack = ((struct switch_stack *) regs) - 1;
|
stack = ((struct switch_stack *) regs) - 1;
|
||||||
*childstack = *stack;
|
*childstack = *stack;
|
||||||
childstack->r26 = (unsigned long) ret_from_fork;
|
childstack->r26 = (unsigned long) ret_from_fork;
|
||||||
@ -361,7 +362,7 @@ EXPORT_SYMBOL(dump_elf_task_fp);
|
|||||||
* all. -- r~
|
* all. -- r~
|
||||||
*/
|
*/
|
||||||
|
|
||||||
unsigned long
|
static unsigned long
|
||||||
thread_saved_pc(struct task_struct *t)
|
thread_saved_pc(struct task_struct *t)
|
||||||
{
|
{
|
||||||
unsigned long base = (unsigned long)task_stack_page(t);
|
unsigned long base = (unsigned long)task_stack_page(t);
|
||||||
|
@ -237,7 +237,7 @@ nautilus_init_pci(void)
|
|||||||
bus = hose->bus = bridge->bus;
|
bus = hose->bus = bridge->bus;
|
||||||
pcibios_claim_one_bus(bus);
|
pcibios_claim_one_bus(bus);
|
||||||
|
|
||||||
irongate = pci_get_bus_and_slot(0, 0);
|
irongate = pci_get_domain_bus_and_slot(pci_domain_nr(bus), 0, 0);
|
||||||
bus->self = irongate;
|
bus->self = irongate;
|
||||||
bus->resource[0] = &irongate_io;
|
bus->resource[0] = &irongate_io;
|
||||||
bus->resource[1] = &irongate_mem;
|
bus->resource[1] = &irongate_mem;
|
||||||
|
@ -160,11 +160,16 @@ void show_stack(struct task_struct *task, unsigned long *sp)
|
|||||||
for(i=0; i < kstack_depth_to_print; i++) {
|
for(i=0; i < kstack_depth_to_print; i++) {
|
||||||
if (((long) stack & (THREAD_SIZE-1)) == 0)
|
if (((long) stack & (THREAD_SIZE-1)) == 0)
|
||||||
break;
|
break;
|
||||||
if (i && ((i % 4) == 0))
|
if ((i % 4) == 0) {
|
||||||
printk("\n ");
|
if (i)
|
||||||
printk("%016lx ", *stack++);
|
pr_cont("\n");
|
||||||
|
printk(" ");
|
||||||
|
} else {
|
||||||
|
pr_cont(" ");
|
||||||
|
}
|
||||||
|
pr_cont("%016lx", *stack++);
|
||||||
}
|
}
|
||||||
printk("\n");
|
pr_cont("\n");
|
||||||
dik_show_trace(sp);
|
dik_show_trace(sp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user