linux/arch/arm64/include/asm
Daniel Thompson 0d15ef6778 arm64: kgdb: Match pstate size with gdbserver protocol
Current versions of gdb do not interoperate cleanly with kgdb on arm64
systems because gdb and kgdb do not use the same register description.
This patch modifies kgdb to work with recent releases of gdb (>= 7.8.1).

Compatibility with gdb (after the patch is applied) is as follows:

  gdb-7.6 and earlier  Ok
  gdb-7.7 series       Works if user provides custom target description
  gdb-7.8(.0)          Works if user provides custom target description
  gdb-7.8.1 and later  Ok

When commit 44679a4f14 ("arm64: KGDB: Add step debugging support") was
introduced it was paired with a gdb patch that made an incompatible
change to the gdbserver protocol. This patch was eventually merged into
the gdb sources:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=a4d9ba85ec5597a6a556afe26b712e878374b9dd

The change to the protocol was mostly made to simplify big-endian support
inside the kernel gdb stub. Unfortunately the gdb project released
gdb-7.7.x and gdb-7.8.0 before the protocol incompatibility was identified
and reversed:
https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=bdc144174bcb11e808b4e73089b850cf9620a7ee

This leaves us in a position where kgdb still uses the no-longer-used
protocol; gdb-7.8.1, which restored the original behaviour, was
released on 2014-10-29.

I don't believe it is possible to detect/correct the protocol
incompatiblity which means the kernel must take a view about which
version of the gdb remote protocol is "correct". This patch takes the
view that the original/current version of the protocol is correct
and that version found in gdb-7.7.x and gdb-7.8.0 is anomalous.

Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Will Deacon <will.deacon@arm.com>
2016-06-16 19:20:51 +01:00
..
xen
Kbuild ARM64: PCI: Remove generated include of asm-generic/pci-bridge.h 2016-02-05 16:29:12 -06:00
acenv.h
acpi.h arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
alternative.h arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00
arch_gicv3.h irqchip/gic-v3: Make sure read from ICC_IAR1_EL1 is visible on redestributor 2016-02-11 10:20:02 +00:00
arch_timer.h
arm-cci.h
asm-offsets.h
assembler.h arm64: Add new asm macro copy_page 2016-04-28 12:05:46 +01:00
atomic.h
atomic_ll_sc.h
atomic_lse.h arm64: lse: deal with clobbered IP registers after branch via PLT 2016-02-26 18:35:02 +00:00
barrier.h arm64: define __smp_xxx 2016-01-12 20:46:53 +02:00
bitops.h
bitrev.h
boot.h arm64: allow kernel Image to be loaded anywhere in physical memory 2016-02-18 18:16:53 +00:00
brk-imm.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
bug.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
cache.h
cacheflush.h 2nd set of arm64 updates for 4.6: 2016-03-24 19:13:59 -07:00
cachetype.h
cmpxchg.h arm64: cmpxchg: Don't incldue linux/mmdebug.h 2015-12-10 17:36:09 +00:00
compat.h
compiler.h
cpu.h arm64: add ARMv8.2 id_aa64mmfr2 boiler plate 2016-02-18 12:00:01 +00:00
cpu_ops.h
cpufeature.h arm64: Verify CPU errata work arounds on hotplugged CPU 2016-04-25 15:14:03 +01:00
cpuidle.h
cputype.h ARM: SoC 64-bit changes for v4.6 2016-03-20 15:08:45 -07:00
dcc.h
debug-monitors.h arm64: move brk immediate argument definitions to separate header 2016-02-23 17:43:25 +00:00
device.h
dma-mapping.h iommu: of: enforce const-ness of struct iommu_ops 2016-05-09 15:33:29 +02:00
dmi.h
efi.h arm64/efi: Enable runtime call flag checking 2016-04-28 11:34:11 +02:00
elf.h arm64: Provide "model name" in /proc/cpuinfo for PER_LINUX32 tasks 2016-05-31 17:50:30 +01:00
esr.h
exception.h arch, ftrace: for KASAN put hard/soft IRQ entries into separate sections 2016-03-25 16:37:42 -07:00
exec.h
fb.h
fixmap.h arm64: Remove fixmap include fragility 2016-02-26 15:22:53 +00:00
fpsimd.h
fpsimdmacros.h
ftrace.h arm64: Fix misspellings in comments. 2016-03-04 18:19:17 +00:00
futex.h arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00
hardirq.h arm64: kernel: implement ACPI parking protocol 2016-02-16 15:12:32 +00:00
hugetlb.h arm64: hugetlb: add support for PTE contiguous bit 2015-12-21 17:26:00 +00:00
hw_breakpoint.h arm64: hw_breakpoint: Allow EL2 breakpoints if running in HYP 2016-02-29 18:34:18 +00:00
hwcap.h
hypervisor.h
insn.h
io.h
irq.h arm64: remove irq_count and do_softirq_own_stack() 2015-12-21 17:26:01 +00:00
irq_work.h
irqflags.h
jump_label.h
kasan.h arm64: move kernel image to base of vmalloc area 2016-02-18 18:16:44 +00:00
kernel-pgtable.h arm64: choose memstart_addr based on minimum sparsemem section alignment 2016-04-14 16:15:08 +01:00
kgdb.h arm64: kgdb: Match pstate size with gdbserver protocol 2016-06-16 19:20:51 +01:00
kvm_arm.h Small release overall. 2016-05-19 11:27:09 -07:00
kvm_asm.h arm64 updates for 4.7: 2016-05-16 17:17:24 -07:00
kvm_coproc.h
kvm_emulate.h arm64: KVM: VHE: Implement VHE activate/deactivate_traps 2016-02-29 18:34:17 +00:00
kvm_host.h - move kvm_stat tool from QEMU repo into tools/kvm/kvm_stat 2016-05-27 13:41:54 -07:00
kvm_hyp.h arm64: perf: Move PMU register related defines to asm/perf_event.h 2016-03-29 16:04:57 +01:00
kvm_mmio.h KVM: arm/arm64: Export mmio_read/write_bus 2016-05-20 15:39:42 +02:00
kvm_mmu.h Small release overall. 2016-05-19 11:27:09 -07:00
kvm_psci.h
linkage.h
lse.h arm64: lse: deal with clobbered IP registers after branch via PLT 2016-02-26 18:35:02 +00:00
memblock.h
memory.h arm64: update stale PAGE_OFFSET comment 2016-06-03 10:16:21 +01:00
mmu.h arm64: Move unflatten_device_tree() call earlier. 2016-04-15 18:06:08 +01:00
mmu_context.h arm64: Ensure the secondary CPUs have safe ASIDBits size 2016-02-25 10:33:06 +00:00
mmzone.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
module.h arm64: add support for kernel ASLR 2016-02-24 14:57:27 +00:00
neon.h
numa.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
opcodes.h arm64: opcodes.h: Add arm big-endian config options before including arm header 2016-03-29 16:04:57 +01:00
page.h arm64: move {PAGE,CONT}_SHIFT into Kconfig 2016-06-03 10:57:18 +01:00
paravirt.h arm64: introduce CONFIG_PARAVIRT, PARAVIRT_TIME_ACCOUNTING and pv_time_ops 2015-12-21 14:40:54 +00:00
pci.h PCI: Move pci_dma_* helpers to common code 2016-03-07 10:40:02 -06:00
percpu.h
perf_event.h arm64: perf: Move PMU register related defines to asm/perf_event.h 2016-03-29 16:04:57 +01:00
pgalloc.h arm64: mm: add __{pud,pgd}_populate 2016-02-16 15:10:46 +00:00
pgtable-hwdef.h Small release overall. 2016-05-19 11:27:09 -07:00
pgtable-prot.h arm64: Remove fixmap include fragility 2016-02-26 15:22:53 +00:00
pgtable-types.h arm64: always use STRICT_MM_TYPECHECKS 2016-05-03 09:58:38 +01:00
pgtable.h Merge branch 'akpm' (patches from Andrew) 2016-05-19 20:00:06 -07:00
proc-fns.h
processor.h arm64: kernel: Add support for User Access Override 2016-02-18 17:27:04 +00:00
ptrace.h arm64: Rework valid_user_regs 2016-03-02 15:49:28 +00:00
seccomp.h
shmparam.h arm64: fix COMPAT_SHMLBA definition for large pages 2015-12-02 14:00:10 +00:00
signal32.h
smp.h arm64: Add cpu_panic_kernel helper 2016-04-15 18:06:06 +01:00
smp_plat.h
sparsemem.h
spinlock.h arm64: spinlock: Ensure forward-progress in spin_unlock_wait 2016-06-15 11:23:14 +01:00
spinlock_types.h
stackprotector.h
stacktrace.h arm64: ftrace: fix a stack tracer's output under function graph tracer 2015-12-21 17:26:02 +00:00
stage2_pgtable-nopmd.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stage2_pgtable-nopud.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stage2_pgtable.h kvm: arm64: Get rid of fake page table levels 2016-04-21 14:58:21 +02:00
stat.h
string.h
suspend.h arm64: kernel: Add support for hibernate/suspend-to-disk 2016-04-28 13:36:22 +01:00
sync_bitops.h
syscall.h
sysreg.h arm64: Cleanup SCTLR flags 2016-04-28 12:05:46 +01:00
system_misc.h
thread_info.h arm64: Remove the get_thread_info() function 2016-02-18 17:27:05 +00:00
timex.h
tlb.h
tlbflush.h
topology.h arm64, numa: Add NUMA support for arm64 platforms. 2016-04-15 18:06:09 +01:00
traps.h
uaccess.h arm64: Remove orphaned __addr_ok() definition 2016-05-31 13:11:11 +01:00
unistd.h arm64: unistd32.h: wire up missing syscalls for compat tasks 2016-06-01 18:48:20 +01:00
unistd32.h arm64: unistd32.h: wire up missing syscalls for compat tasks 2016-06-01 18:48:20 +01:00
vdso.h
vdso_datapage.h
virt.h arm64: hyp/kvm: Make hyp-stub extensible 2016-04-28 12:05:46 +01:00
word-at-a-time.h arm64: switch to relative exception tables 2016-02-24 14:57:26 +00:00