Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Dec 2001 13:53:52 -0500 (EST)
From:      Andrew Gallatin <gallatin@cs.duke.edu>
To:        John Baldwin <jhb@FreeBSD.ORG>
Cc:        alpha@FreeBSD.ORG
Subject:   Re: mdproc flags in KSE
Message-ID:  <15391.37056.22312.225550@grasshopper.cs.duke.edu>
In-Reply-To: <XFMail.011218100048.jhb@FreeBSD.org>
References:  <XFMail.011218100048.jhb@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?15391.37056.22312.225550>