From owner-svn-src-projects@FreeBSD.ORG Wed Nov 12 13:19:36 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 7894CF3E; Wed, 12 Nov 2014 13:19:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 4B698E67; Wed, 12 Nov 2014 13:19:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id sACDJaru070509; Wed, 12 Nov 2014 13:19:36 GMT (envelope-from andrew@FreeBSD.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id sACDJaYR070508; Wed, 12 Nov 2014 13:19:36 GMT (envelope-from andrew@FreeBSD.org) Message-Id: <201411121319.sACDJaYR070508@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: andrew set sender to andrew@FreeBSD.org using -f From: Andrew Turner Date: Wed, 12 Nov 2014 13:19:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r274432 - projects/arm64/sys/arm64/arm64 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Nov 2014 13:19:36 -0000 Author: andrew Date: Wed Nov 12 13:19:35 2014 New Revision: 274432 URL: https://svnweb.freebsd.org/changeset/base/274432 Log: Merge the common code to print registers. While here quieten the handlers to only print on interesting exceptions. Modified: projects/arm64/sys/arm64/arm64/trap.c Modified: projects/arm64/sys/arm64/arm64/trap.c ============================================================================== --- projects/arm64/sys/arm64/arm64/trap.c Wed Nov 12 13:19:30 2014 (r274431) +++ projects/arm64/sys/arm64/arm64/trap.c Wed Nov 12 13:19:35 2014 (r274432) @@ -158,12 +158,25 @@ data_abort(struct trapframe *frame, uint panic("vm_fault failed"); } +static void +print_registers(struct trapframe *frame) +{ + u_int reg; + + for (reg = 0; reg < 31; reg++) { + printf(" %sx%d: %llx\n", (reg < 10) ? " " : "", reg, frame->tf_x[reg]); + } + printf(" sp: %llx\n", frame->tf_sp); + printf(" lr: %llx\n", frame->tf_lr); + printf(" elr: %llx\n", frame->tf_elr); + printf("spsr: %llx\n", frame->tf_spsr); +} + void do_el1h_sync(struct trapframe *frame) { uint32_t exception; uint64_t esr; - u_int reg; /* Read the esr register to get the exception details */ __asm __volatile("mrs %x0, esr_el1" : "=&r"(esr)); @@ -172,15 +185,13 @@ do_el1h_sync(struct trapframe *frame) exception = (esr >> 26) & 0x3f; - printf("In do_el1h_sync %llx %llx %x\n", frame->tf_elr, esr, exception); - - for (reg = 0; reg < 31; reg++) { - printf(" %sx%d: %llx\n", (reg < 10) ? " " : "", reg, frame->tf_x[reg]); + if (0) { + printf("In do_el1h_sync\n"); + printf(" esr: %llx\n", esr); + printf("excp: %x\n", exception); + print_registers(frame); } - printf(" sp: %llx\n", frame->tf_sp); - printf(" lr: %llx\n", frame->tf_lr); - printf(" elr: %llx\n", frame->tf_elr); - printf("spsr: %llx\n", frame->tf_spsr); + switch(exception) { case 0x25: data_abort(frame, esr, 0); @@ -192,7 +203,6 @@ do_el1h_sync(struct trapframe *frame) default: panic("Unknown exception %x\n", exception); } - printf("Done do_el1h_sync\n"); } void @@ -200,19 +210,17 @@ do_el0_sync(struct trapframe *frame) { uint32_t exception; uint64_t esr; - u_int reg; __asm __volatile("mrs %x0, esr_el1" : "=&r"(esr)); exception = (esr >> 26) & 0x3f; - printf("In do_el0_sync %llx %llx %x\n", frame->tf_elr, esr, exception); - for (reg = 0; reg < 31; reg++) { - printf(" %sx%d: %llx\n", (reg < 10) ? " " : "", reg, frame->tf_x[reg]); + if (0) + { + printf("In do_el0_sync\n"); + printf(" esr: %llx\n", esr); + printf("excp: %x\n", exception); + print_registers(frame); } - printf(" sp: %llx\n", frame->tf_sp); - printf(" lr: %llx\n", frame->tf_lr); - printf(" elr: %llx\n", frame->tf_elr); - printf("spsr: %llx\n", frame->tf_spsr); switch(exception) { case 0x15: