Merge branch 'parisc-4.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux
Pull parisc updates from Helge Deller: - parisc now uses the generic dma_noncoherent_ops implementation (Christoph Hellwig) - further memory barrier and spinlock improvements (John David Anglin) - prepare removal of current_text_addr() functions (Nick Desaulniers) - improve kernel stack unwinding on parisc (me) - drop ENOTSUP which was defined on parisc only (me) * 'parisc-4.19-1' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-linux: parisc: Fix and improve kernel stack unwinding parisc: Remove unnecessary barriers from spinlock.h parisc: Remove ordered stores from syscall.S parisc: prefer _THIS_IP_ and _RET_IP_ statement expressions parisc: Add HAVE_REGS_AND_STACK_ACCESS_API feature parisc: Drop architecture-specific ENOTSUP define parisc: use generic dma_noncoherent_ops parisc: always use flush_kernel_dcache_range for DMA cache maintainance parisc: merge pcx_dma_ops and pcxl_dma_ops
This commit is contained in:
@@ -36,6 +36,7 @@
|
||||
#define RP_OFFSET 16
|
||||
#define FRAME_SIZE 128
|
||||
#define CALLEE_REG_FRAME_SIZE 144
|
||||
#define REG_SZ 8
|
||||
#define ASM_ULONG_INSN .dword
|
||||
#else /* CONFIG_64BIT */
|
||||
#define LDREG ldw
|
||||
@@ -50,6 +51,7 @@
|
||||
#define RP_OFFSET 20
|
||||
#define FRAME_SIZE 64
|
||||
#define CALLEE_REG_FRAME_SIZE 128
|
||||
#define REG_SZ 4
|
||||
#define ASM_ULONG_INSN .word
|
||||
#endif
|
||||
|
||||
|
@@ -21,11 +21,6 @@
|
||||
** flush/purge and allocate "regular" cacheable pages for everything.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PA11
|
||||
extern const struct dma_map_ops pcxl_dma_ops;
|
||||
extern const struct dma_map_ops pcx_dma_ops;
|
||||
#endif
|
||||
|
||||
extern const struct dma_map_ops *hppa_dma_ops;
|
||||
|
||||
static inline const struct dma_map_ops *get_arch_dma_ops(struct bus_type *bus)
|
||||
|
@@ -18,9 +18,9 @@
|
||||
#ifdef __ASSEMBLY__
|
||||
|
||||
#define ENTRY(name) \
|
||||
.export name !\
|
||||
ALIGN !\
|
||||
name:
|
||||
ALIGN !\
|
||||
name: ASM_NL\
|
||||
.export name
|
||||
|
||||
#ifdef CONFIG_64BIT
|
||||
#define ENDPROC(name) \
|
||||
@@ -31,13 +31,18 @@ name:
|
||||
END(name)
|
||||
#endif
|
||||
|
||||
#define ENTRY_CFI(name) \
|
||||
#define ENTRY_CFI(name, ...) \
|
||||
ENTRY(name) ASM_NL\
|
||||
.proc ASM_NL\
|
||||
.callinfo __VA_ARGS__ ASM_NL\
|
||||
.entry ASM_NL\
|
||||
CFI_STARTPROC
|
||||
|
||||
#define ENDPROC_CFI(name) \
|
||||
ENDPROC(name) ASM_NL\
|
||||
CFI_ENDPROC
|
||||
CFI_ENDPROC ASM_NL\
|
||||
.exit ASM_NL\
|
||||
.procend ASM_NL\
|
||||
ENDPROC(name)
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
|
@@ -25,4 +25,15 @@ static inline unsigned long regs_return_value(struct pt_regs *regs)
|
||||
return regs->gr[20];
|
||||
}
|
||||
|
||||
static inline void instruction_pointer_set(struct pt_regs *regs,
|
||||
unsigned long val)
|
||||
{
|
||||
regs->iaoq[0] = val;
|
||||
}
|
||||
|
||||
/* Query offset/name of register from its name/offset */
|
||||
extern int regs_query_register_offset(const char *name);
|
||||
extern const char *regs_query_register_name(unsigned int offset);
|
||||
#define MAX_REG_OFFSET (offsetof(struct pt_regs, ipsw))
|
||||
|
||||
#endif
|
||||
|
@@ -20,7 +20,6 @@ static inline void arch_spin_lock_flags(arch_spinlock_t *x,
|
||||
{
|
||||
volatile unsigned int *a;
|
||||
|
||||
mb();
|
||||
a = __ldcw_align(x);
|
||||
while (__ldcw(a) == 0)
|
||||
while (*a == 0)
|
||||
@@ -30,17 +29,16 @@ static inline void arch_spin_lock_flags(arch_spinlock_t *x,
|
||||
local_irq_disable();
|
||||
} else
|
||||
cpu_relax();
|
||||
mb();
|
||||
}
|
||||
#define arch_spin_lock_flags arch_spin_lock_flags
|
||||
|
||||
static inline void arch_spin_unlock(arch_spinlock_t *x)
|
||||
{
|
||||
volatile unsigned int *a;
|
||||
mb();
|
||||
|
||||
a = __ldcw_align(x);
|
||||
*a = 1;
|
||||
mb();
|
||||
*a = 1;
|
||||
}
|
||||
|
||||
static inline int arch_spin_trylock(arch_spinlock_t *x)
|
||||
@@ -48,10 +46,8 @@ static inline int arch_spin_trylock(arch_spinlock_t *x)
|
||||
volatile unsigned int *a;
|
||||
int ret;
|
||||
|
||||
mb();
|
||||
a = __ldcw_align(x);
|
||||
ret = __ldcw(a) != 0;
|
||||
mb();
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
@@ -4,6 +4,9 @@
|
||||
|
||||
#include <linux/list.h>
|
||||
|
||||
/* Max number of levels to backtrace */
|
||||
#define MAX_UNWIND_ENTRIES 30
|
||||
|
||||
/* From ABI specifications */
|
||||
struct unwind_table_entry {
|
||||
unsigned int region_start;
|
||||
|
Reference in New Issue
Block a user