From owner-p4-projects@FreeBSD.ORG Tue Mar 21 04:58:55 2006 Return-Path: X-Original-To: p4-projects@freebsd.org Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 38EF216A420; Tue, 21 Mar 2006 04:58:55 +0000 (UTC) X-Original-To: perforce@freebsd.org Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D82E916A401 for ; Tue, 21 Mar 2006 04:58:54 +0000 (UTC) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9949743D46 for ; Tue, 21 Mar 2006 04:58:54 +0000 (GMT) (envelope-from kmacy@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k2L4ws4F006827 for ; Tue, 21 Mar 2006 04:58:54 GMT (envelope-from kmacy@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k2L4wsu6006824 for perforce@freebsd.org; Tue, 21 Mar 2006 04:58:54 GMT (envelope-from kmacy@freebsd.org) Date: Tue, 21 Mar 2006 04:58:54 GMT Message-Id: <200603210458.k2L4wsu6006824@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to kmacy@freebsd.org using -f From: Kip Macy To: Perforce Change Reviews Cc: Subject: PERFORCE change 93688 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 21 Mar 2006 04:58:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=93688 Change 93688 by kmacy@kmacy_storage:sun4vtmp on 2006/03/21 04:58:03 add non control flow changes for spill/fill exception handlers to use physical addresses Affected files ... .. //depot/projects/kmacy_sun4v/src/sys/sparc64/sparc64/genassym.c#13 edit .. //depot/projects/kmacy_sun4v/src/sys/sun4v/include/asmacros.h#11 edit .. //depot/projects/kmacy_sun4v/src/sys/sun4v/include/pcb.h#8 edit .. //depot/projects/kmacy_sun4v/src/sys/sun4v/include/pcpu.h#8 edit .. //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/machdep.c#16 edit Differences ... ==== //depot/projects/kmacy_sun4v/src/sys/sparc64/sparc64/genassym.c#13 (text+ko) ==== @@ -201,9 +201,6 @@ ASSYM(PC_IRTAIL, offsetof(struct pcpu, pc_irtail)); ASSYM(PC_IRFREE, offsetof(struct pcpu, pc_irfree)); ASSYM(PC_MID, offsetof(struct pcpu, pc_mid)); -ASSYM(PC_TLB_CTX, offsetof(struct pcpu, pc_tlb_ctx)); -ASSYM(PC_TLB_CTX_MAX, offsetof(struct pcpu, pc_tlb_ctx_max)); -ASSYM(PC_TLB_CTX_MIN, offsetof(struct pcpu, pc_tlb_ctx_min)); ASSYM(PC_CNT, offsetof(struct pcpu, pc_cnt)); ASSYM(PC_SIZEOF, sizeof(struct pcpu)); @@ -223,6 +220,9 @@ ASSYM(PC_KWBUF, offsetof(struct pcpu, pc_kwbuf)); ASSYM(PC_PMAP, offsetof(struct pcpu, pc_curpmap)); #else +ASSYM(PC_TLB_CTX, offsetof(struct pcpu, pc_tlb_ctx)); +ASSYM(PC_TLB_CTX_MAX, offsetof(struct pcpu, pc_tlb_ctx_max)); +ASSYM(PC_TLB_CTX_MIN, offsetof(struct pcpu, pc_tlb_ctx_min)); ASSYM(PC_PMAP, offsetof(struct pcpu, pc_pmap)); #endif @@ -273,6 +273,9 @@ ASSYM(TD_KSTACK, offsetof(struct thread, td_kstack)); ASSYM(TD_PCB, offsetof(struct thread, td_pcb)); ASSYM(TD_PROC, offsetof(struct thread, td_proc)); +ASSYM(TD_MD, offsetof(struct thread, td_md)); +ASSYM(MD_SAVED_PIL, offsetof(struct mdthread, md_saved_pil)); + ASSYM(PCB_SIZEOF, sizeof(struct pcb)); ASSYM(PCB_RW, offsetof(struct pcb, pcb_rw)); ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/include/asmacros.h#11 (text+ko) ==== @@ -131,6 +131,14 @@ #define GET_MMFSA_SCRATCH(reg) \ ldxa [%g0 + %g0]ASI_SCRATCHPAD, reg; + +#define GET_PCPU_PHYS_SCRATCH(tmp) \ + sethi %uhi(VM_MIN_DIRECT_ADDRESS), tmp; \ + mov SCRATCH_REG_PCPU, PCPU_REG; \ + sllx tmp, 32, tmp; \ + ldxa [%g0 + PCPU_REG]ASI_SCRATCHPAD, PCPU_REG; \ + andn PCPU_REG, tmp, PCPU_REG + #define GET_PCPU_SCRATCH \ mov SCRATCH_REG_PCPU, PCPU_REG; \ ldxa [%g0 + PCPU_REG]ASI_SCRATCHPAD, PCPU_REG; @@ -171,6 +179,13 @@ #define SET_SCRATCH(offsetreg, reg) stxa reg, [%g0 + offsetreg]ASI_SCRATCHPAD + +#define GET_PCB_PHYS(tmp, reg) \ + mov PC_CURPCB_RA, reg; \ + GET_PCPU_PHYS_SCRATCH(tmp); \ + ldxa [PCPU_REG + reg]ASI_REAL, reg; + + #define GET_PCB(reg) \ GET_PCPU_SCRATCH; \ ldx [PCPU_REG + PC_CURPCB], reg; ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/include/pcb.h#8 (text+ko) ==== @@ -45,7 +45,7 @@ uint64_t pcb_nsaved; /* number of windows saved in pcb_rw */ uint64_t pcb_pc; uint64_t pcb_sp; - uint64_t pcb_pa; /* physical address of pcb */ + uint64_t pcb_ra; /* physical address of pcb */ uint64_t pcb_pad[4]; } __aligned(64); ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/include/pcpu.h#8 (text+ko) ==== @@ -74,10 +74,8 @@ struct rwindow pc_kwbuf; \ u_long pc_kwbuf_sp; \ u_int pc_kwbuf_full; \ - u_int pc_node; \ - u_int pc_tlb_ctx; \ - u_int pc_tlb_ctx_max; \ - u_int pc_tlb_ctx_min + u_int pc_node; \ + u_long pc_curpcb_ra; /* XXX SUN4V_FIXME - as we access the *_ra and *_size fields in quick * succession we _really_ want them to be L1 cache line size aligned ==== //depot/projects/kmacy_sun4v/src/sys/sun4v/sun4v/machdep.c#16 (text+ko) ==== @@ -384,9 +384,6 @@ #endif pc->pc_addr = (vm_offset_t)pcpu0; pc->pc_node = child; - pc->pc_tlb_ctx = TLB_CTX_USER_MIN; - pc->pc_tlb_ctx_min = TLB_CTX_USER_MIN; - pc->pc_tlb_ctx_max = TLB_CTX_USER_MAX; /* * Initialize global registers.