Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Dec 2001 10:00:48 -0800 (PST)
From:      John Baldwin <jhb@FreeBSD.org>
To:        alpha@FreeBSD.org
Subject:   mdproc flags in KSE
Message-ID:  <XFMail.011218100048.jhb@FreeBSD.org>

next in thread | raw e-mail | index | archive | help
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? 
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
the entire process, or does it have to be regenerated on the fly all the time?
I think the FPUSED flag will need to be per-process (or perhaps go away) since
a thread can't store persistent state.  (Threads can come and go rather easily.)

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/

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?XFMail.011218100048.jhb>