Commit 5b788016 authored by David S. Miller's avatar David S. Miller

Merge nuts.ninka.net:/home/davem/src/BK/sparcwork-2.5

into nuts.ninka.net:/home/davem/src/BK/sparc-2.5
parents de5b180b 3e6e7e36
...@@ -1135,7 +1135,7 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs, ...@@ -1135,7 +1135,7 @@ asmlinkage int do_signal(sigset_t *oldset, struct pt_regs * regs,
if (current->pid == 1) if (current->pid == 1)
continue; continue;
switch (signr) { switch (signr) {
case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGURG:
continue; continue;
case SIGTSTP: case SIGTTIN: case SIGTTOU: case SIGTSTP: case SIGTTIN: case SIGTTOU:
......
...@@ -32,12 +32,10 @@ do { unsigned int *dest = &(__elf_regs[0]); \ ...@@ -32,12 +32,10 @@ do { unsigned int *dest = &(__elf_regs[0]); \
for(i = 0; i < 16; i++) \ for(i = 0; i < 16; i++) \
dest[i] = (unsigned int) src->u_regs[i];\ dest[i] = (unsigned int) src->u_regs[i];\
/* Don't try this at home kids... */ \ /* Don't try this at home kids... */ \
set_fs(USER_DS); \
sp = (unsigned int *) (src->u_regs[14] & \ sp = (unsigned int *) (src->u_regs[14] & \
0x00000000fffffffc); \ 0x00000000fffffffc); \
for(i = 0; i < 16; i++) \ for(i = 0; i < 16; i++) \
__get_user(dest[i+16], &sp[i]); \ __get_user(dest[i+16], &sp[i]); \
set_fs(KERNEL_DS); \
dest[32] = tstate_to_psr(src->tstate); \ dest[32] = tstate_to_psr(src->tstate); \
dest[33] = (unsigned int) src->tpc; \ dest[33] = (unsigned int) src->tpc; \
dest[34] = (unsigned int) src->tnpc; \ dest[34] = (unsigned int) src->tnpc; \
......
...@@ -682,7 +682,7 @@ static int do_signal(sigset_t *oldset, struct pt_regs * regs, ...@@ -682,7 +682,7 @@ static int do_signal(sigset_t *oldset, struct pt_regs * regs,
if (current->pid == 1) if (current->pid == 1)
continue; continue;
switch (signr) { switch (signr) {
case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGURG:
continue; continue;
case SIGTSTP: case SIGTTIN: case SIGTTOU: case SIGTSTP: case SIGTTIN: case SIGTTOU:
......
...@@ -1353,7 +1353,7 @@ int do_signal32(sigset_t *oldset, struct pt_regs * regs, ...@@ -1353,7 +1353,7 @@ int do_signal32(sigset_t *oldset, struct pt_regs * regs,
if (current->pid == 1) if (current->pid == 1)
continue; continue;
switch (signr) { switch (signr) {
case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGCONT: case SIGCHLD: case SIGWINCH: case SIGURG:
continue; continue;
case SIGTSTP: case SIGTTIN: case SIGTTOU: case SIGTSTP: case SIGTTIN: case SIGTTOU:
......
...@@ -1218,16 +1218,9 @@ static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file) ...@@ -1218,16 +1218,9 @@ static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file)
/* Set up header */ /* Set up header */
fill_elf_header(&elf, segs+1); /* including notes section*/ fill_elf_header(&elf, segs+1); /* including notes section*/
fs = get_fs();
set_fs(KERNEL_DS);
has_dumped = 1; has_dumped = 1;
current->flags |= PF_DUMPCORE; current->flags |= PF_DUMPCORE;
DUMP_WRITE(&elf, sizeof(elf));
offset += sizeof(elf); /* Elf header */
offset += (segs+1) * sizeof(struct elf_phdr); /* Program headers */
/* /*
* Set up the notes in similar form to SVR4 core dumps made * Set up the notes in similar form to SVR4 core dumps made
* with info from their /proc. * with info from their /proc.
...@@ -1254,6 +1247,13 @@ static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file) ...@@ -1254,6 +1247,13 @@ static int elf_core_dump(long signr, struct pt_regs * regs, struct file * file)
numnote --; numnote --;
#endif #endif
fs = get_fs();
set_fs(KERNEL_DS);
DUMP_WRITE(&elf, sizeof(elf));
offset += sizeof(elf); /* Elf header */
offset += (segs+1) * sizeof(struct elf_phdr); /* Program headers */
/* Write notes phdr entry */ /* Write notes phdr entry */
{ {
struct elf_phdr phdr; struct elf_phdr phdr;
......
...@@ -32,11 +32,9 @@ do { unsigned long *dest = &(__elf_regs[0]); \ ...@@ -32,11 +32,9 @@ do { unsigned long *dest = &(__elf_regs[0]); \
memcpy(&dest[0], &src->u_regs[0], \ memcpy(&dest[0], &src->u_regs[0], \
sizeof(unsigned long) * 16); \ sizeof(unsigned long) * 16); \
/* Don't try this at home kids... */ \ /* Don't try this at home kids... */ \
set_fs(USER_DS); \
sp = (unsigned long *) src->u_regs[14]; \ sp = (unsigned long *) src->u_regs[14]; \
copy_from_user(&dest[16], sp, \ copy_from_user(&dest[16], sp, \
sizeof(unsigned long) * 16); \ sizeof(unsigned long) * 16); \
set_fs(KERNEL_DS); \
dest[32] = src->psr; \ dest[32] = src->psr; \
dest[33] = src->pc; \ dest[33] = src->pc; \
dest[34] = src->npc; \ dest[34] = src->npc; \
...@@ -57,6 +55,9 @@ typedef struct { ...@@ -57,6 +55,9 @@ typedef struct {
unsigned int pr_q[64]; unsigned int pr_q[64];
} elf_fpregset_t; } elf_fpregset_t;
#define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \
({ ELF_CORE_COPY_REGS((*(__elf_regs)), (__tsk)->thread_info->kregs); 1; })
/* /*
* This is used to ensure we don't load something for the wrong architecture. * This is used to ensure we don't load something for the wrong architecture.
*/ */
......
...@@ -169,7 +169,7 @@ extern void fpsave(unsigned long *fpregs, unsigned long *fsr, ...@@ -169,7 +169,7 @@ extern void fpsave(unsigned long *fpregs, unsigned long *fsr,
"nop\n\t" \ "nop\n\t" \
"nop\n\t" \ "nop\n\t" \
"jmpl %%o7 + 0x8, %%g0\n\t" \ "jmpl %%o7 + 0x8, %%g0\n\t" \
" ld [%%g3 + %5], %0\n\t" \ " ld [%%g3 + %5], %0\n\t" \
: "=&r" (last) \ : "=&r" (last) \
: "r" (&(current_set[hard_smp_processor_id()])), \ : "r" (&(current_set[hard_smp_processor_id()])), \
"r" ((next)->thread_info), \ "r" ((next)->thread_info), \
...@@ -177,9 +177,10 @@ extern void fpsave(unsigned long *fpregs, unsigned long *fsr, ...@@ -177,9 +177,10 @@ extern void fpsave(unsigned long *fpregs, unsigned long *fsr,
"i" (TI_KSP), \ "i" (TI_KSP), \
"i" (TI_TASK), \ "i" (TI_TASK), \
"r" (task_pc) \ "r" (task_pc) \
: "g1", "g2", "g3", "g4", "g5", "g7", "l0", "l1", \ : "g1", "g2", "g3", "g4", "g5", "g7", \
"l4", "l5", "l6", "l7", "i0", "i1", "i2", "i3", "i4", "i5", "o0", "o1", "o2", \ "l0", "l1", "l3", "l4", "l5", "l6", "l7", \
"o3"); \ "i0", "i1", "i2", "i3", "i4", "i5", \
"o0", "o1", "o2", "o3"); \
here:; } while(0) here:; } while(0)
/* /*
......
...@@ -42,13 +42,11 @@ do { unsigned long *dest = &(__elf_regs[0]); \ ...@@ -42,13 +42,11 @@ do { unsigned long *dest = &(__elf_regs[0]); \
for(i = 0; i < 16; i++) \ for(i = 0; i < 16; i++) \
dest[i] = src->u_regs[i]; \ dest[i] = src->u_regs[i]; \
/* Don't try this at home kids... */ \ /* Don't try this at home kids... */ \
set_fs(USER_DS); \
sp = (unsigned long *) \ sp = (unsigned long *) \
((src->u_regs[14] + STACK_BIAS) \ ((src->u_regs[14] + STACK_BIAS) \
& 0xfffffffffffffff8UL); \ & 0xfffffffffffffff8UL); \
for(i = 0; i < 16; i++) \ for(i = 0; i < 16; i++) \
__get_user(dest[i+16], &sp[i]); \ __get_user(dest[i+16], &sp[i]); \
set_fs(KERNEL_DS); \
dest[32] = src->tstate; \ dest[32] = src->tstate; \
dest[33] = src->tpc; \ dest[33] = src->tpc; \
dest[34] = src->tnpc; \ dest[34] = src->tnpc; \
...@@ -63,6 +61,9 @@ typedef struct { ...@@ -63,6 +61,9 @@ typedef struct {
} elf_fpregset_t; } elf_fpregset_t;
#endif #endif
#define ELF_CORE_COPY_TASK_REGS(__tsk, __elf_regs) \
({ ELF_CORE_COPY_REGS((*(__elf_regs)), (__tsk)->thread_info->kregs); 1; })
/* /*
* This is used to ensure we don't load something for the wrong architecture. * This is used to ensure we don't load something for the wrong architecture.
*/ */
......
...@@ -130,7 +130,7 @@ static int parport_pc_find_nonpci_ports (int autoirq, int autodma) ...@@ -130,7 +130,7 @@ static int parport_pc_find_nonpci_ports (int autoirq, int autodma)
unsigned long base = edev->resource[0].start; unsigned long base = edev->resource[0].start;
unsigned long config = edev->resource[1].start; unsigned long config = edev->resource[1].start;
spin_lock_init(&sparc_ebus_dmas[count].info); spin_lock_init(&sparc_ebus_dmas[count].info.lock);
sparc_ebus_dmas[count].info.regs = sparc_ebus_dmas[count].info.regs =
edev->resource[2].start; edev->resource[2].start;
if (!sparc_ebus_dmas[count].info.regs) if (!sparc_ebus_dmas[count].info.regs)
......
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