public inbox for frysk-cvs@sourceware.org help / color / mirror / Atom feed
From: pmuldoon@sourceware.org To: frysk-cvs@sourceware.org Subject: [SCM] master: Rewrite Corefile FP note writing for PPC32/64. Date: Thu, 24 Jan 2008 18:15:00 -0000 [thread overview] Message-ID: <20080124181531.23137.qmail@sourceware.org> (raw) The branch, master has been updated via 1d1338d115a70655940f94a009d401afeb86ea0b (commit) from 70fa8f890eed8bbf43198163308160eab1a2451d (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email. - Log ----------------------------------------------------------------- commit 1d1338d115a70655940f94a009d401afeb86ea0b Author: Phil Muldoon <pmuldoon@redhat.com> Date: Thu Jan 24 18:15:23 2008 +0000 Rewrite Corefile FP note writing for PPC32/64. 2008-01-24 Phil Muldoon <pmuldoon@redhat.com> * PPC32LinuxElfCorefile.java (writeNoteFPRegset): Rewrite using BankRegisters to form bank. * PPC64LinuxElfCorefile.java (writeNoteFPRegset): Ditto. ----------------------------------------------------------------------- Summary of changes: frysk-core/frysk/util/ChangeLog | 6 ++ frysk-core/frysk/util/PPC32LinuxElfCorefile.java | 29 +++++++++ frysk-core/frysk/util/PPC64LinuxElfCorefile.java | 71 +++++++++------------- 3 files changed, 65 insertions(+), 41 deletions(-) First 500 lines of diff: diff --git a/frysk-core/frysk/util/ChangeLog b/frysk-core/frysk/util/ChangeLog index bfd3171..6c4300c 100644 --- a/frysk-core/frysk/util/ChangeLog +++ b/frysk-core/frysk/util/ChangeLog @@ -1,3 +1,9 @@ +2008-01-24 Phil Muldoon <pmuldoon@redhat.com> + + * PPC32LinuxElfCorefile.java (writeNoteFPRegset): Rewrite using + BankRegisters to form bank. + * PPC64LinuxElfCorefile.java (writeNoteFPRegset): Ditto. + 2008-01-24 Andrew Cagney <cagney@redhat.com> * IA32LinuxElfCorefile.java: Update; RegisterBank moved to diff --git a/frysk-core/frysk/util/PPC32LinuxElfCorefile.java b/frysk-core/frysk/util/PPC32LinuxElfCorefile.java index fec155f..e5dc38d 100644 --- a/frysk-core/frysk/util/PPC32LinuxElfCorefile.java +++ b/frysk-core/frysk/util/PPC32LinuxElfCorefile.java @@ -43,6 +43,9 @@ package frysk.util; +import java.util.Iterator; + +import inua.eio.ArrayByteBuffer; import inua.eio.ByteBuffer; import lib.dwfl.ElfEHeader; import lib.dwfl.ElfEMachine; @@ -54,6 +57,8 @@ import lib.dwfl.ElfPrpsinfo; import lib.dwfl.ElfPrstatus; import frysk.isa.PPC32Registers; import frysk.isa.Register; +import frysk.isa.banks.BankRegister; +import frysk.isa.banks.LinuxPPCRegisterBanks; import frysk.proc.Proc; import frysk.proc.Task; import frysk.sys.proc.AuxvBuilder; @@ -243,6 +248,30 @@ public class PPC32LinuxElfCorefile extends LinuxElfCorefile { * frysk.proc.Task) */ protected void writeNoteFPRegset(ElfNhdr nhdrEntry, Task task) { + + ElfPrFPRegSet xfpRegSet = new ElfPrFPRegSet(); + + final int bankSize = 260; + final int maxRegSize = 8; + byte[] scratch = new byte[maxRegSize]; + byte[] byteOrderedRegister= new byte[bankSize]; + ArrayByteBuffer byteOrderedBuffer = new ArrayByteBuffer(byteOrderedRegister); + + Iterator registerIterator = LinuxPPCRegisterBanks.FPREGS32.entryIterator(); + while (registerIterator.hasNext()) { + BankRegister bankRegister = ((BankRegister)registerIterator.next()); + Register register = bankRegister.getRegister(); + task.access(register, 0, register.getType().getSize(), scratch, 0, false); + bankRegister.access(byteOrderedBuffer, 0, maxRegSize, scratch, 0, true); + } + + byteOrderedBuffer.get(byteOrderedRegister); + + xfpRegSet.setFPRegisterBuffer(byteOrderedRegister); + + // Write it + nhdrEntry.setNhdrDesc(ElfNhdrType.NT_FPREGSET, xfpRegSet); + ElfPrFPRegSet fpRegSet = new ElfPrFPRegSet(); // Write FP Register info over wholesae. Do not interpret. diff --git a/frysk-core/frysk/util/PPC64LinuxElfCorefile.java b/frysk-core/frysk/util/PPC64LinuxElfCorefile.java index df6b20b..c438b91 100644 --- a/frysk-core/frysk/util/PPC64LinuxElfCorefile.java +++ b/frysk-core/frysk/util/PPC64LinuxElfCorefile.java @@ -43,6 +43,10 @@ package frysk.util; +import inua.eio.ArrayByteBuffer; + +import java.util.Iterator; + import lib.dwfl.ElfEHeader; import lib.dwfl.ElfEMachine; import lib.dwfl.ElfNhdr; @@ -53,6 +57,8 @@ import lib.dwfl.ElfPrpsinfo; import lib.dwfl.ElfPrstatus; import frysk.isa.PPC64Registers; import frysk.isa.Register; +import frysk.isa.banks.BankRegister; +import frysk.isa.banks.LinuxPPCRegisterBanks; import frysk.proc.Proc; import frysk.proc.Task; import frysk.sys.proc.AuxvBuilder; @@ -244,48 +250,31 @@ public class PPC64LinuxElfCorefile extends LinuxElfCorefile { */ protected void writeNoteFPRegset(ElfNhdr nhdrEntry, Task task) { - ElfPrFPRegSet fpRegSet = new ElfPrFPRegSet(); - - Register[] ppc64FloatingPointerRegMap = { - PPC64Registers.FPR0, PPC64Registers.FPR1, PPC64Registers.FPR2, - PPC64Registers.FPR3, PPC64Registers.FPR4, PPC64Registers.FPR5, - PPC64Registers.FPR6, PPC64Registers.FPR7, PPC64Registers.FPR8, - PPC64Registers.FPR9, PPC64Registers.FPR10, PPC64Registers.FPR11, - PPC64Registers.FPR12, PPC64Registers.FPR13, PPC64Registers.FPR14, - PPC64Registers.FPR15, PPC64Registers.FPR16, PPC64Registers.FPR17, - PPC64Registers.FPR18, PPC64Registers.FPR19, PPC64Registers.FPR20, - PPC64Registers.FPR21, PPC64Registers.FPR22, PPC64Registers.FPR23, - PPC64Registers.FPR24, PPC64Registers.FPR25, PPC64Registers.FPR26, - PPC64Registers.FPR27, PPC64Registers.FPR28, PPC64Registers.FPR29, - PPC64Registers.FPR30, PPC64Registers.FPR31 }; - - int totalBufferSize = 0; - for (int i = 0; i < ppc64FloatingPointerRegMap.length; i++) { - int registerSize = ppc64FloatingPointerRegMap[i].getType().getSize(); - totalBufferSize += registerSize; - } - - // Creating a raw byte buffer to fill with fp regs value - byte[] regBuffer = new byte[totalBufferSize]; - - // Filling the buffer - int regBufferIndex = 0; - for (int i = 0; i < ppc64FloatingPointerRegMap.length; i++) { - int registerSize = ppc64FloatingPointerRegMap[i].getType().getSize(); - byte[] currentRegBuffer = new byte[registerSize]; - task.access(ppc64FloatingPointerRegMap[i], 0, - registerSize, currentRegBuffer, 0, false); - for(int j=0; j < registerSize; j++) { - regBuffer[regBufferIndex] = currentRegBuffer[j]; - regBufferIndex++; - } - } - - // Write FP Register info over wholesae. Do not interpret. - fpRegSet.setFPRegisterBuffer(regBuffer); + + ElfPrFPRegSet xfpRegSet = new ElfPrFPRegSet(); + + final int bankSize = 260; + final int maxRegSize = 8; + byte[] scratch = new byte[maxRegSize]; + byte[] byteOrderedRegister= new byte[bankSize]; + ArrayByteBuffer byteOrderedBuffer = new ArrayByteBuffer(byteOrderedRegister); + + Iterator registerIterator = LinuxPPCRegisterBanks.FPREGS64.entryIterator(); + while (registerIterator.hasNext()) { + BankRegister bankRegister = ((BankRegister)registerIterator.next()); + Register register = bankRegister.getRegister(); + task.access(register, 0, register.getType().getSize(), scratch, 0, false); + bankRegister.access(byteOrderedBuffer, 0, maxRegSize, scratch, 0, true); + } + + byteOrderedBuffer.get(byteOrderedRegister); + + xfpRegSet.setFPRegisterBuffer(byteOrderedRegister); + + // Write it + nhdrEntry.setNhdrDesc(ElfNhdrType.NT_FPREGSET, xfpRegSet); - // Write it - nhdrEntry.setNhdrDesc(ElfNhdrType.NT_FPREGSET, fpRegSet); + } /*F(non-Javadoc) hooks/post-receive -- frysk system monitor/debugger
reply other threads:[~2008-01-24 18:15 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20080124181531.23137.qmail@sourceware.org \ --to=pmuldoon@sourceware.org \ --cc=frysk-cvs@sourceware.org \ --cc=frysk@sourceware.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).