Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha
Pull alpha update from Matt Turner: "A few fixes and wires up some additional syscalls." [ Some of this is technically not really rc7 material, but it's alpha, and it all looks safe anyway. Matt explains: "My alpha has been offline, hence the very late-in-cycle pull request" and hasn't caused problems before, so he gets to slide. - Linus ] * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mattst88/alpha: alpha: uapi: Add support for __SANE_USERSPACE_TYPES__ alpha: Define ioremap_wc alpha: Fix section mismatches alpha: support R_ALPHA_REFLONG relocations for module loading alpha: Fix typo in ev6-copy_user.S alpha: Package string routines together alpha: Update for new syscalls alpha: Fix build error without CONFIG_VGA_HOSE.
This commit is contained in:
@ -299,6 +299,7 @@ static inline void __iomem * ioremap_nocache(unsigned long offset,
|
|||||||
return ioremap(offset, size);
|
return ioremap(offset, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define ioremap_wc ioremap_nocache
|
||||||
#define ioremap_uc ioremap_nocache
|
#define ioremap_uc ioremap_nocache
|
||||||
|
|
||||||
static inline void iounmap(volatile void __iomem *addr)
|
static inline void iounmap(volatile void __iomem *addr)
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#ifndef _ALPHA_TYPES_H
|
#ifndef _ALPHA_TYPES_H
|
||||||
#define _ALPHA_TYPES_H
|
#define _ALPHA_TYPES_H
|
||||||
|
|
||||||
#include <asm-generic/int-ll64.h>
|
#include <uapi/asm/types.h>
|
||||||
|
|
||||||
#endif /* _ALPHA_TYPES_H */
|
#endif /* _ALPHA_TYPES_H */
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include <uapi/asm/unistd.h>
|
#include <uapi/asm/unistd.h>
|
||||||
|
|
||||||
#define NR_SYSCALLS 514
|
#define NR_SYSCALLS 523
|
||||||
|
|
||||||
#define __ARCH_WANT_OLD_READDIR
|
#define __ARCH_WANT_OLD_READDIR
|
||||||
#define __ARCH_WANT_STAT64
|
#define __ARCH_WANT_STAT64
|
||||||
|
@ -9,8 +9,18 @@
|
|||||||
* need to be careful to avoid a name clashes.
|
* need to be careful to avoid a name clashes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef __KERNEL__
|
/*
|
||||||
|
* This is here because we used to use l64 for alpha
|
||||||
|
* and we don't want to impact user mode with our change to ll64
|
||||||
|
* in the kernel.
|
||||||
|
*
|
||||||
|
* However, some user programs are fine with this. They can
|
||||||
|
* flag __SANE_USERSPACE_TYPES__ to get int-ll64.h here.
|
||||||
|
*/
|
||||||
|
#if !defined(__SANE_USERSPACE_TYPES__) && !defined(__KERNEL__)
|
||||||
#include <asm-generic/int-l64.h>
|
#include <asm-generic/int-l64.h>
|
||||||
|
#else
|
||||||
|
#include <asm-generic/int-ll64.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* _UAPI_ALPHA_TYPES_H */
|
#endif /* _UAPI_ALPHA_TYPES_H */
|
||||||
|
@ -475,5 +475,19 @@
|
|||||||
#define __NR_getrandom 511
|
#define __NR_getrandom 511
|
||||||
#define __NR_memfd_create 512
|
#define __NR_memfd_create 512
|
||||||
#define __NR_execveat 513
|
#define __NR_execveat 513
|
||||||
|
#define __NR_seccomp 514
|
||||||
|
#define __NR_bpf 515
|
||||||
|
#define __NR_userfaultfd 516
|
||||||
|
#define __NR_membarrier 517
|
||||||
|
#define __NR_mlock2 518
|
||||||
|
#define __NR_copy_file_range 519
|
||||||
|
#define __NR_preadv2 520
|
||||||
|
#define __NR_pwritev2 521
|
||||||
|
#define __NR_statx 522
|
||||||
|
|
||||||
|
/* Alpha doesn't have protection keys. */
|
||||||
|
#define __IGNORE_pkey_mprotect
|
||||||
|
#define __IGNORE_pkey_alloc
|
||||||
|
#define __IGNORE_pkey_free
|
||||||
|
|
||||||
#endif /* _UAPI_ALPHA_UNISTD_H */
|
#endif /* _UAPI_ALPHA_UNISTD_H */
|
||||||
|
@ -351,7 +351,7 @@ marvel_init_io7(struct io7 *io7)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void __init
|
||||||
marvel_io7_present(gct6_node *node)
|
marvel_io7_present(gct6_node *node)
|
||||||
{
|
{
|
||||||
int pe;
|
int pe;
|
||||||
@ -369,6 +369,7 @@ marvel_io7_present(gct6_node *node)
|
|||||||
static void __init
|
static void __init
|
||||||
marvel_find_console_vga_hose(void)
|
marvel_find_console_vga_hose(void)
|
||||||
{
|
{
|
||||||
|
#ifdef CONFIG_VGA_HOSE
|
||||||
u64 *pu64 = (u64 *)((u64)hwrpb + hwrpb->ctbt_offset);
|
u64 *pu64 = (u64 *)((u64)hwrpb + hwrpb->ctbt_offset);
|
||||||
|
|
||||||
if (pu64[7] == 3) { /* TERM_TYPE == graphics */
|
if (pu64[7] == 3) { /* TERM_TYPE == graphics */
|
||||||
@ -402,9 +403,10 @@ marvel_find_console_vga_hose(void)
|
|||||||
pci_vga_hose = hose;
|
pci_vga_hose = hose;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
gct6_search_struct gct_wanted_node_list[] = {
|
gct6_search_struct gct_wanted_node_list[] __initdata = {
|
||||||
{ GCT_TYPE_HOSE, GCT_SUBTYPE_IO_PORT_MODULE, marvel_io7_present },
|
{ GCT_TYPE_HOSE, GCT_SUBTYPE_IO_PORT_MODULE, marvel_io7_present },
|
||||||
{ 0, 0, NULL }
|
{ 0, 0, NULL }
|
||||||
};
|
};
|
||||||
|
@ -461,6 +461,7 @@ titan_ioremap(unsigned long addr, unsigned long size)
|
|||||||
unsigned long *ptes;
|
unsigned long *ptes;
|
||||||
unsigned long pfn;
|
unsigned long pfn;
|
||||||
|
|
||||||
|
#ifdef CONFIG_VGA_HOSE
|
||||||
/*
|
/*
|
||||||
* Adjust the address and hose, if necessary.
|
* Adjust the address and hose, if necessary.
|
||||||
*/
|
*/
|
||||||
@ -468,6 +469,7 @@ titan_ioremap(unsigned long addr, unsigned long size)
|
|||||||
h = pci_vga_hose->index;
|
h = pci_vga_hose->index;
|
||||||
addr += pci_vga_hose->mem_space->start;
|
addr += pci_vga_hose->mem_space->start;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Find the hose.
|
* Find the hose.
|
||||||
|
@ -181,6 +181,9 @@ apply_relocate_add(Elf64_Shdr *sechdrs, const char *strtab,
|
|||||||
switch (r_type) {
|
switch (r_type) {
|
||||||
case R_ALPHA_NONE:
|
case R_ALPHA_NONE:
|
||||||
break;
|
break;
|
||||||
|
case R_ALPHA_REFLONG:
|
||||||
|
*(u32 *)location = value;
|
||||||
|
break;
|
||||||
case R_ALPHA_REFQUAD:
|
case R_ALPHA_REFQUAD:
|
||||||
/* BUG() can produce misaligned relocations. */
|
/* BUG() can produce misaligned relocations. */
|
||||||
((u32 *)location)[0] = value;
|
((u32 *)location)[0] = value;
|
||||||
|
@ -115,7 +115,7 @@ wait_boot_cpu_to_stop(int cpuid)
|
|||||||
/*
|
/*
|
||||||
* Where secondaries begin a life of C.
|
* Where secondaries begin a life of C.
|
||||||
*/
|
*/
|
||||||
void
|
void __init
|
||||||
smp_callin(void)
|
smp_callin(void)
|
||||||
{
|
{
|
||||||
int cpuid = hard_smp_processor_id();
|
int cpuid = hard_smp_processor_id();
|
||||||
|
@ -532,6 +532,15 @@ sys_call_table:
|
|||||||
.quad sys_getrandom
|
.quad sys_getrandom
|
||||||
.quad sys_memfd_create
|
.quad sys_memfd_create
|
||||||
.quad sys_execveat
|
.quad sys_execveat
|
||||||
|
.quad sys_seccomp
|
||||||
|
.quad sys_bpf /* 515 */
|
||||||
|
.quad sys_userfaultfd
|
||||||
|
.quad sys_membarrier
|
||||||
|
.quad sys_mlock2
|
||||||
|
.quad sys_copy_file_range
|
||||||
|
.quad sys_preadv2 /* 520 */
|
||||||
|
.quad sys_pwritev2
|
||||||
|
.quad sys_statx
|
||||||
|
|
||||||
.size sys_call_table, . - sys_call_table
|
.size sys_call_table, . - sys_call_table
|
||||||
.type sys_call_table, @object
|
.type sys_call_table, @object
|
||||||
|
@ -20,12 +20,8 @@ lib-y = __divqu.o __remqu.o __divlu.o __remlu.o \
|
|||||||
checksum.o \
|
checksum.o \
|
||||||
csum_partial_copy.o \
|
csum_partial_copy.o \
|
||||||
$(ev67-y)strlen.o \
|
$(ev67-y)strlen.o \
|
||||||
$(ev67-y)strcat.o \
|
stycpy.o \
|
||||||
strcpy.o \
|
styncpy.o \
|
||||||
$(ev67-y)strncat.o \
|
|
||||||
strncpy.o \
|
|
||||||
$(ev6-y)stxcpy.o \
|
|
||||||
$(ev6-y)stxncpy.o \
|
|
||||||
$(ev67-y)strchr.o \
|
$(ev67-y)strchr.o \
|
||||||
$(ev67-y)strrchr.o \
|
$(ev67-y)strrchr.o \
|
||||||
$(ev6-y)memchr.o \
|
$(ev6-y)memchr.o \
|
||||||
@ -49,3 +45,17 @@ AFLAGS___remlu.o = -DREM -DINTSIZE
|
|||||||
$(addprefix $(obj)/,__divqu.o __remqu.o __divlu.o __remlu.o): \
|
$(addprefix $(obj)/,__divqu.o __remqu.o __divlu.o __remlu.o): \
|
||||||
$(src)/$(ev6-y)divide.S FORCE
|
$(src)/$(ev6-y)divide.S FORCE
|
||||||
$(call if_changed_rule,as_o_S)
|
$(call if_changed_rule,as_o_S)
|
||||||
|
|
||||||
|
# There are direct branches between {str*cpy,str*cat} and stx*cpy.
|
||||||
|
# Ensure the branches are within range by merging these objects.
|
||||||
|
|
||||||
|
LDFLAGS_stycpy.o := -r
|
||||||
|
LDFLAGS_styncpy.o := -r
|
||||||
|
|
||||||
|
$(obj)/stycpy.o: $(obj)/strcpy.o $(obj)/$(ev67-y)strcat.o \
|
||||||
|
$(obj)/$(ev6-y)stxcpy.o FORCE
|
||||||
|
$(call if_changed,ld)
|
||||||
|
|
||||||
|
$(obj)/styncpy.o: $(obj)/strncpy.o $(obj)/$(ev67-y)strncat.o \
|
||||||
|
$(obj)/$(ev6-y)stxncpy.o FORCE
|
||||||
|
$(call if_changed,ld)
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
.ent __copy_user
|
.ent __copy_user
|
||||||
__copy_user:
|
__copy_user:
|
||||||
.prologue 0
|
.prologue 0
|
||||||
and $18,$18,$0
|
mov $18,$0
|
||||||
and $16,7,$3
|
and $16,7,$3
|
||||||
beq $0,$35
|
beq $0,$35
|
||||||
beq $3,$36
|
beq $3,$36
|
||||||
|
@ -45,9 +45,10 @@
|
|||||||
# Pipeline info: Slotting & Comments
|
# Pipeline info: Slotting & Comments
|
||||||
__copy_user:
|
__copy_user:
|
||||||
.prologue 0
|
.prologue 0
|
||||||
andq $18, $18, $0
|
mov $18, $0 # .. .. .. E
|
||||||
subq $18, 32, $1 # .. E .. .. : Is this going to be a small copy?
|
subq $18, 32, $1 # .. .. E. .. : Is this going to be a small copy?
|
||||||
beq $0, $zerolength # U .. .. .. : U L U L
|
nop # .. E .. ..
|
||||||
|
beq $18, $zerolength # U .. .. .. : U L U L
|
||||||
|
|
||||||
and $16,7,$3 # .. .. .. E : is leading dest misalignment
|
and $16,7,$3 # .. .. .. E : is leading dest misalignment
|
||||||
ble $1, $onebyteloop # .. .. U .. : 1st branch : small amount of data
|
ble $1, $onebyteloop # .. .. U .. : 1st branch : small amount of data
|
||||||
|
Reference in New Issue
Block a user