From owner-freebsd-alpha Tue Dec 18 10:54:32 2001 Delivered-To: freebsd-alpha@freebsd.org Received: from duke.cs.duke.edu (duke.cs.duke.edu [152.3.140.1]) by hub.freebsd.org (Postfix) with ESMTP id CA8D637B41C; Tue, 18 Dec 2001 10:54:22 -0800 (PST) Received: from grasshopper.cs.duke.edu (grasshopper.cs.duke.edu [152.3.145.30]) by duke.cs.duke.edu (8.9.3/8.9.3) with ESMTP id NAA13946; Tue, 18 Dec 2001 13:54:17 -0500 (EST) Received: (from gallatin@localhost) by grasshopper.cs.duke.edu (8.11.6/8.9.1) id fBIIrqO16789; Tue, 18 Dec 2001 13:53:52 -0500 (EST) (envelope-from gallatin@cs.duke.edu) From: Andrew Gallatin MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Message-ID: <15391.37056.22312.225550@grasshopper.cs.duke.edu> Date: Tue, 18 Dec 2001 13:53:52 -0500 (EST) To: John Baldwin Cc: alpha@FreeBSD.ORG Subject: Re: mdproc flags in KSE In-Reply-To: References: X-Mailer: VM 6.75 under 21.1 (patch 12) "Channel Islands" XEmacs Lucid Sender: owner-freebsd-alpha@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org John Baldwin writes: > The alpha had several fields in its mdproc struct prior to KSE, and KSE stuck > them all in mdthread, which isn't quite correct. Specifically, we have the > following for mdthread now: > > struct mdthread { > u_long md_flags; > struct pcb *md_pcbpaddr; /* phys addr of the pcb */ > struct mdbpt md_sstep[2]; /* two single step breakpoints */ > u_int64_t md_hae; /* user HAE register value */ > void *osf_sigtramp; /* user-level signal trampoline */ > u_int md_kernnest; /* nesting level in the kernel */ > }; > > #define MDP_FPUSED 0x0001 /* Process used the FPU */ > #define MDP_STEP1 0x0002 /* Single step normal instruction */ > #define MDP_STEP2 0x0004 /* Single step branch instruction */ > #define MDP_HAEUSED 0x0008 /* Process used the HAE */ > #define MDP_UAC_NOPRINT 0x0010 /* Don't print unaligned traps */ > #define MDP_UAC_NOFIX 0x0020 /* Don't fixup unaligned traps */ > #define MDP_UAC_SIGBUS 0x0040 /* Deliver SIGBUS upon > unaligned access */ > #define MDP_UAC_MASK (MDP_UAC_NOPRINT | MDP_UAC_NOFIX | MDP_UAC_SIGBUS) > > Out of that structure, it seems obvious that md_pcbpaddr and md_kernnest need > to be per-thread. It also seems that the UAC flags need to be > per-process and need to move back into a md_flags in mdproc. However, I'm not > sure about the other ones. What is the HAE and in what contexts is it used? Its used by programs, like the X server, which grovel around in PCI memory space... Hmm.. In a quick browse through the code, I don't see where its actually used anymore.. > Also, what are the single stepping fields used for exactly (details, not just > "to implement single stepping :)"). Is the osf_sigtramp just setup once for Single-stepping -- no clue. > the entire process, or does it have to be regenerated on the fly all the time? Its used only by OSFF/ECOFF binaries. It is setup each time osf1_sigaction() is called & used at sigreturn time to point to that process's sigtramp code. Tru64 does'nt just keep it in a standard place like we do. Drew To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-alpha" in the body of the message