remove cache_flush_virt() and PADDRT, they're no longer used.
allocate a stack frame for blast_dcache() when profiling so it shows up. in dcache_flush_page(), use a stride of 32 instead of 16 to match the cache line size. correct various comments.
This commit is contained in:
parent
2db3939de3
commit
5500ae7993
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: cache.h,v 1.6 2002/09/29 04:12:03 chs Exp $ */
|
/* $NetBSD: cache.h,v 1.7 2004/12/03 02:04:00 chs Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1996
|
* Copyright (c) 1996
|
||||||
|
@ -79,7 +79,6 @@ void blast_dcache __P((void)); /* Clear entire D$ */
|
||||||
void blast_icache __P((void)); /* Clear entire I$ */
|
void blast_icache __P((void)); /* Clear entire I$ */
|
||||||
|
|
||||||
/* The following flush a range from the D$ and I$ but not E$. */
|
/* The following flush a range from the D$ and I$ but not E$. */
|
||||||
void cache_flush_virt __P((vaddr_t, vsize_t));
|
|
||||||
void cache_flush_phys __P((paddr_t, psize_t, int));
|
void cache_flush_phys __P((paddr_t, psize_t, int));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $NetBSD: genassym.cf,v 1.36 2004/03/26 23:18:42 petrov Exp $
|
# $NetBSD: genassym.cf,v 1.37 2004/12/03 02:04:00 chs Exp $
|
||||||
|
|
||||||
#
|
#
|
||||||
# Copyright (c) 1997 The NetBSD Foundation, Inc.
|
# Copyright (c) 1997 The NetBSD Foundation, Inc.
|
||||||
|
@ -116,7 +116,6 @@ endif
|
||||||
# general constants
|
# general constants
|
||||||
define BSD BSD
|
define BSD BSD
|
||||||
define USRSTACK USRSTACK
|
define USRSTACK USRSTACK
|
||||||
define PADDRT sizeof(paddr_t)
|
|
||||||
define PAGE_SIZE PAGE_SIZE
|
define PAGE_SIZE PAGE_SIZE
|
||||||
|
|
||||||
# Important offsets into the lwp and proc structs & associated constants
|
# Important offsets into the lwp and proc structs & associated constants
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $NetBSD: locore.s,v 1.200 2004/11/08 08:55:43 petrov Exp $ */
|
/* $NetBSD: locore.s,v 1.201 2004/12/03 02:04:00 chs Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1996-2002 Eduardo Horvath
|
* Copyright (c) 1996-2002 Eduardo Horvath
|
||||||
|
@ -858,33 +858,33 @@ _C_LABEL(trapbase):
|
||||||
UTRAP(T_ECCERR) ! We'll implement this one later
|
UTRAP(T_ECCERR) ! We'll implement this one later
|
||||||
ufast_IMMU_miss: ! 064 = fast instr access MMU miss
|
ufast_IMMU_miss: ! 064 = fast instr access MMU miss
|
||||||
TRACEFLT ! DEBUG
|
TRACEFLT ! DEBUG
|
||||||
ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer
|
ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer
|
||||||
#ifdef NO_TSB
|
#ifdef NO_TSB
|
||||||
ba,a %icc, instr_miss;
|
ba,a %icc, instr_miss
|
||||||
#endif
|
#endif
|
||||||
ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register
|
ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register
|
||||||
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 !Load TSB tag:data into %g4:%g5
|
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag:data into %g4:%g5
|
||||||
brgez,pn %g5, instr_miss ! Entry invalid? Punt
|
brgez,pn %g5, instr_miss ! Entry invalid? Punt
|
||||||
cmp %g1, %g4 ! Compare TLB tags
|
cmp %g1, %g4 ! Compare TLB tags
|
||||||
bne,pn %xcc, instr_miss ! Got right tag?
|
bne,pn %xcc, instr_miss ! Got right tag?
|
||||||
nop
|
nop
|
||||||
CLRTT
|
CLRTT
|
||||||
stxa %g5, [%g0] ASI_IMMU_DATA_IN! Enter new mapping
|
stxa %g5, [%g0] ASI_IMMU_DATA_IN ! Enter new mapping
|
||||||
retry ! Try new mapping
|
retry ! Try new mapping
|
||||||
1:
|
1:
|
||||||
sir
|
sir
|
||||||
TA32
|
TA32
|
||||||
ufast_DMMU_miss: ! 068 = fast data access MMU miss
|
ufast_DMMU_miss: ! 068 = fast data access MMU miss
|
||||||
TRACEFLT ! DEBUG
|
TRACEFLT ! DEBUG
|
||||||
ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer
|
ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer
|
||||||
#ifdef NO_TSB
|
#ifdef NO_TSB
|
||||||
ba,a %icc, data_miss;
|
ba,a %icc, data_miss
|
||||||
#endif
|
#endif
|
||||||
ldxa [%g0] ASI_DMMU, %g1 ! Hard coded for unified 8K TSB Load DMMU tag target register
|
ldxa [%g0] ASI_DMMU, %g1 ! Load DMMU tag target register
|
||||||
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5
|
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5
|
||||||
brgez,pn %g5, data_miss ! Entry invalid? Punt
|
brgez,pn %g5, data_miss ! Entry invalid? Punt
|
||||||
cmp %g1, %g4 ! Compare TLB tags
|
cmp %g1, %g4 ! Compare TLB tags
|
||||||
bnz,pn %xcc, data_miss ! Got right tag?
|
bnz,pn %xcc, data_miss ! Got right tag?
|
||||||
nop
|
nop
|
||||||
CLRTT
|
CLRTT
|
||||||
#ifdef TRAPSTATS
|
#ifdef TRAPSTATS
|
||||||
|
@ -893,8 +893,8 @@ ufast_DMMU_miss: ! 068 = fast data access MMU miss
|
||||||
inc %g2
|
inc %g2
|
||||||
stw %g2, [%g1+%lo(_C_LABEL(udhit))]
|
stw %g2, [%g1+%lo(_C_LABEL(udhit))]
|
||||||
#endif
|
#endif
|
||||||
stxa %g5, [%g0] ASI_DMMU_DATA_IN! Enter new mapping
|
stxa %g5, [%g0] ASI_DMMU_DATA_IN ! Enter new mapping
|
||||||
retry ! Try new mapping
|
retry ! Try new mapping
|
||||||
1:
|
1:
|
||||||
sir
|
sir
|
||||||
TA32
|
TA32
|
||||||
|
@ -1101,33 +1101,33 @@ kdatafault:
|
||||||
UTRAP(T_ECCERR) ! We'll implement this one later
|
UTRAP(T_ECCERR) ! We'll implement this one later
|
||||||
kfast_IMMU_miss: ! 064 = fast instr access MMU miss
|
kfast_IMMU_miss: ! 064 = fast instr access MMU miss
|
||||||
TRACEFLT ! DEBUG
|
TRACEFLT ! DEBUG
|
||||||
ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer
|
ldxa [%g0] ASI_IMMU_8KPTR, %g2 ! Load IMMU 8K TSB pointer
|
||||||
#ifdef NO_TSB
|
#ifdef NO_TSB
|
||||||
ba,a %icc, instr_miss;
|
ba,a %icc, instr_miss
|
||||||
#endif
|
#endif
|
||||||
ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register
|
ldxa [%g0] ASI_IMMU, %g1 ! Load IMMU tag target register
|
||||||
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 !Load TSB tag:data into %g4:%g5
|
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag:data into %g4:%g5
|
||||||
brgez,pn %g5, instr_miss ! Entry invalid? Punt
|
brgez,pn %g5, instr_miss ! Entry invalid? Punt
|
||||||
cmp %g1, %g4 ! Compare TLB tags
|
cmp %g1, %g4 ! Compare TLB tags
|
||||||
bne,pn %xcc, instr_miss ! Got right tag?
|
bne,pn %xcc, instr_miss ! Got right tag?
|
||||||
nop
|
nop
|
||||||
CLRTT
|
CLRTT
|
||||||
stxa %g5, [%g0] ASI_IMMU_DATA_IN! Enter new mapping
|
stxa %g5, [%g0] ASI_IMMU_DATA_IN ! Enter new mapping
|
||||||
retry ! Try new mapping
|
retry ! Try new mapping
|
||||||
1:
|
1:
|
||||||
sir
|
sir
|
||||||
TA32
|
TA32
|
||||||
kfast_DMMU_miss: ! 068 = fast data access MMU miss
|
kfast_DMMU_miss: ! 068 = fast data access MMU miss
|
||||||
TRACEFLT ! DEBUG
|
TRACEFLT ! DEBUG
|
||||||
ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer
|
ldxa [%g0] ASI_DMMU_8KPTR, %g2! Load DMMU 8K TSB pointer
|
||||||
#ifdef NO_TSB
|
#ifdef NO_TSB
|
||||||
ba,a %icc, data_miss;
|
ba,a %icc, data_miss
|
||||||
#endif
|
#endif
|
||||||
ldxa [%g0] ASI_DMMU, %g1 ! Hard coded for unified 8K TSB Load DMMU tag target register
|
ldxa [%g0] ASI_DMMU, %g1 ! Load DMMU tag target register
|
||||||
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5
|
ldda [%g2] ASI_NUCLEUS_QUAD_LDD, %g4 ! Load TSB tag and data into %g4 and %g5
|
||||||
brgez,pn %g5, data_miss ! Entry invalid? Punt
|
brgez,pn %g5, data_miss ! Entry invalid? Punt
|
||||||
cmp %g1, %g4 ! Compare TLB tags
|
cmp %g1, %g4 ! Compare TLB tags
|
||||||
bnz,pn %xcc, data_miss ! Got right tag?
|
bnz,pn %xcc, data_miss ! Got right tag?
|
||||||
nop
|
nop
|
||||||
CLRTT
|
CLRTT
|
||||||
#ifdef TRAPSTATS
|
#ifdef TRAPSTATS
|
||||||
|
@ -1136,8 +1136,8 @@ kfast_DMMU_miss: ! 068 = fast data access MMU miss
|
||||||
inc %g2
|
inc %g2
|
||||||
stw %g2, [%g1+%lo(_C_LABEL(kdhit))]
|
stw %g2, [%g1+%lo(_C_LABEL(kdhit))]
|
||||||
#endif
|
#endif
|
||||||
stxa %g5, [%g0] ASI_DMMU_DATA_IN! Enter new mapping
|
stxa %g5, [%g0] ASI_DMMU_DATA_IN ! Enter new mapping
|
||||||
retry ! Try new mapping
|
retry ! Try new mapping
|
||||||
1:
|
1:
|
||||||
sir
|
sir
|
||||||
TA32
|
TA32
|
||||||
|
@ -2095,8 +2095,8 @@ dmmu_write_fault:
|
||||||
and %g6, PTMASK, %g6
|
and %g6, PTMASK, %g6
|
||||||
add %g5, %g4, %g5
|
add %g5, %g4, %g5
|
||||||
brz,pn %g4, winfix ! NULL entry? check somewhere else
|
brz,pn %g4, winfix ! NULL entry? check somewhere else
|
||||||
|
|
||||||
nop
|
nop
|
||||||
|
|
||||||
ldxa [%g5] ASI_PHYS_CACHED, %g4
|
ldxa [%g5] ASI_PHYS_CACHED, %g4
|
||||||
sll %g6, 3, %g6
|
sll %g6, 3, %g6
|
||||||
brz,pn %g4, winfix ! NULL entry? check somewhere else
|
brz,pn %g4, winfix ! NULL entry? check somewhere else
|
||||||
|
@ -2126,9 +2126,8 @@ dmmu_write_fault:
|
||||||
ldxa [%g0] ASI_DMMU_8KPTR, %g2 ! Load DMMU 8K TSB pointer
|
ldxa [%g0] ASI_DMMU_8KPTR, %g2 ! Load DMMU 8K TSB pointer
|
||||||
andcc %g5, 0x3, %g5 ! 8K?
|
andcc %g5, 0x3, %g5 ! 8K?
|
||||||
bnz,pn %icc, winfix ! We punt to the pmap code since we can't handle policy
|
bnz,pn %icc, winfix ! We punt to the pmap code since we can't handle policy
|
||||||
ldxa [%g0] ASI_DMMU, %g1 ! Hard coded for unified 8K TSB Load DMMU tag target register
|
ldxa [%g0] ASI_DMMU, %g1 ! Load DMMU tag target register
|
||||||
casxa [%g6] ASI_PHYS_CACHED, %g4, %g7 ! and write it out
|
casxa [%g6] ASI_PHYS_CACHED, %g4, %g7 ! and write it out
|
||||||
|
|
||||||
membar #StoreLoad
|
membar #StoreLoad
|
||||||
cmp %g4, %g7
|
cmp %g4, %g7
|
||||||
bne,pn %xcc, 1b
|
bne,pn %xcc, 1b
|
||||||
|
@ -2137,6 +2136,7 @@ dmmu_write_fault:
|
||||||
mov SFSR, %g7
|
mov SFSR, %g7
|
||||||
stx %g4, [%g2+8] ! Update TSB entry data
|
stx %g4, [%g2+8] ! Update TSB entry data
|
||||||
nop
|
nop
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
set DATA_START, %g6 ! debug
|
set DATA_START, %g6 ! debug
|
||||||
stx %g1, [%g6+0x40] ! debug
|
stx %g1, [%g6+0x40] ! debug
|
||||||
|
@ -6695,6 +6695,10 @@ ENTRY(blast_dcache)
|
||||||
/*
|
/*
|
||||||
* We turn off interrupts for the duration to prevent RED exceptions.
|
* We turn off interrupts for the duration to prevent RED exceptions.
|
||||||
*/
|
*/
|
||||||
|
#ifdef PROF
|
||||||
|
save %sp, -CC64FSZ, %sp
|
||||||
|
#endif
|
||||||
|
|
||||||
rdpr %pstate, %o3
|
rdpr %pstate, %o3
|
||||||
set (2 * NBPG) - 8, %o1
|
set (2 * NBPG) - 8, %o1
|
||||||
andn %o3, PSTATE_IE, %o4 ! Turn off PSTATE_IE bit
|
andn %o3, PSTATE_IE, %o4 ! Turn off PSTATE_IE bit
|
||||||
|
@ -6705,8 +6709,14 @@ ENTRY(blast_dcache)
|
||||||
dec 8, %o1
|
dec 8, %o1
|
||||||
sethi %hi(KERNBASE), %o2
|
sethi %hi(KERNBASE), %o2
|
||||||
flush %o2
|
flush %o2
|
||||||
|
#ifdef PROF
|
||||||
|
wrpr %o3, %pstate
|
||||||
|
ret
|
||||||
|
restore
|
||||||
|
#else
|
||||||
retl
|
retl
|
||||||
wrpr %o3, %pstate
|
wrpr %o3, %pstate
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* blast_icache()
|
* blast_icache()
|
||||||
|
@ -6733,10 +6743,8 @@ ENTRY(blast_icache)
|
||||||
retl
|
retl
|
||||||
wrpr %o3, %pstate
|
wrpr %o3, %pstate
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* dcache_flush_page(vaddr_t pa)
|
* dcache_flush_page(paddr_t pa)
|
||||||
*
|
*
|
||||||
* Clear one page from D$.
|
* Clear one page from D$.
|
||||||
*
|
*
|
||||||
|
@ -6746,11 +6754,8 @@ ENTRY(dcache_flush_page)
|
||||||
#ifndef _LP64
|
#ifndef _LP64
|
||||||
COMBINE(%o0, %o1, %o0)
|
COMBINE(%o0, %o1, %o0)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
!! Try using cache_flush_phys for a change.
|
|
||||||
|
|
||||||
mov -1, %o1 ! Generate mask for tag: bits [29..2]
|
mov -1, %o1 ! Generate mask for tag: bits [29..2]
|
||||||
srlx %o0, 13-2, %o2 ! Tag is VA bits <40:13> in bits <29:2>
|
srlx %o0, 13-2, %o2 ! Tag is PA bits <40:13> in bits <29:2>
|
||||||
clr %o4
|
clr %o4
|
||||||
srl %o1, 2, %o1 ! Now we have bits <29:0> set
|
srl %o1, 2, %o1 ! Now we have bits <29:0> set
|
||||||
set (2*NBPG), %o5
|
set (2*NBPG), %o5
|
||||||
|
@ -6761,10 +6766,10 @@ ENTRY(dcache_flush_page)
|
||||||
1:
|
1:
|
||||||
ldxa [%o4] ASI_DCACHE_TAG, %o3
|
ldxa [%o4] ASI_DCACHE_TAG, %o3
|
||||||
mov %o4, %o0
|
mov %o4, %o0
|
||||||
deccc 16, %o5
|
deccc 32, %o5
|
||||||
bl,pn %icc, 2f
|
bl,pn %icc, 2f
|
||||||
|
inc 32, %o4
|
||||||
|
|
||||||
inc 16, %o4
|
|
||||||
xor %o3, %o2, %o3
|
xor %o3, %o2, %o3
|
||||||
andcc %o3, %o1, %g0
|
andcc %o3, %o1, %g0
|
||||||
bne,pt %xcc, 1b
|
bne,pt %xcc, 1b
|
||||||
|
@ -6782,7 +6787,7 @@ ENTRY(dcache_flush_page)
|
||||||
membar #Sync
|
membar #Sync
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* icache_flush_page(vaddr_t pa)
|
* icache_flush_page(paddr_t pa)
|
||||||
*
|
*
|
||||||
* Clear one page from I$.
|
* Clear one page from I$.
|
||||||
*
|
*
|
||||||
|
@ -6825,59 +6830,6 @@ ENTRY(icache_flush_page)
|
||||||
retl
|
retl
|
||||||
nop
|
nop
|
||||||
|
|
||||||
/*
|
|
||||||
* cache_flush_virt(vaddr_t va, vsize_t len)
|
|
||||||
*
|
|
||||||
* Clear everything in that va range from D$ and I$.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
.align 8
|
|
||||||
ENTRY(cache_flush_virt)
|
|
||||||
brz,pn %o1, 2f ! What? nothing to clear?
|
|
||||||
add %o0, %o1, %o2
|
|
||||||
mov 0x1ff, %o3
|
|
||||||
sllx %o3, 5, %o3 ! Generate mask for VA bits
|
|
||||||
and %o0, %o3, %o0
|
|
||||||
and %o2, %o3, %o2
|
|
||||||
sub %o2, %o1, %o4 ! End < start? need to split flushes.
|
|
||||||
sethi %hi((1<<13)), %o5
|
|
||||||
brlz,pn %o4, 1f
|
|
||||||
movrz %o4, %o3, %o4 ! If start == end we need to wrap
|
|
||||||
|
|
||||||
!! Clear from start to end
|
|
||||||
1:
|
|
||||||
stxa %g0, [%o0] ASI_DCACHE_TAG
|
|
||||||
dec 16, %o4
|
|
||||||
xor %o5, %o0, %o3 ! Second way
|
|
||||||
#ifdef SPITFIRE
|
|
||||||
stxa %g0, [%o0] ASI_ICACHE_TAG! Don't do this on cheetah
|
|
||||||
stxa %g0, [%o3] ASI_ICACHE_TAG! Don't do this on cheetah
|
|
||||||
#endif
|
|
||||||
brgz,pt %o4, 1b
|
|
||||||
inc 16, %o0
|
|
||||||
2:
|
|
||||||
sethi %hi(KERNBASE), %o5
|
|
||||||
flush %o5
|
|
||||||
membar #Sync
|
|
||||||
retl
|
|
||||||
nop
|
|
||||||
|
|
||||||
!! We got a hole. Clear from start to hole
|
|
||||||
clr %o4
|
|
||||||
3:
|
|
||||||
stxa %g0, [%o4] ASI_DCACHE_TAG
|
|
||||||
dec 16, %o1
|
|
||||||
xor %o5, %o4, %g1 ! Second way
|
|
||||||
stxa %g0, [%o4] ASI_ICACHE_TAG
|
|
||||||
stxa %g0, [%g1] ASI_ICACHE_TAG
|
|
||||||
brgz,pt %o1, 3b
|
|
||||||
inc 16, %o4
|
|
||||||
|
|
||||||
!! Now clear to the end.
|
|
||||||
sub %o3, %o2, %o4 ! Size to clear (NBPG - end)
|
|
||||||
ba,pt %icc, 1b
|
|
||||||
mov %o2, %o0 ! Start of clear
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* cache_flush_phys __P((paddr_t, psize_t, int));
|
* cache_flush_phys __P((paddr_t, psize_t, int));
|
||||||
*
|
*
|
||||||
|
@ -8886,15 +8838,9 @@ paginuse:
|
||||||
.word 0
|
.word 0
|
||||||
.text
|
.text
|
||||||
ENTRY(pmap_zero_page)
|
ENTRY(pmap_zero_page)
|
||||||
!!
|
|
||||||
!! If we have 64-bit physical addresses (and we do now)
|
|
||||||
!! we need to move the pointer from %o0:%o1 to %o0
|
|
||||||
!!
|
|
||||||
#ifndef _LP64
|
#ifndef _LP64
|
||||||
#if PADDRT == 8
|
|
||||||
COMBINE(%o0, %o1, %o0)
|
COMBINE(%o0, %o1, %o0)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
set pmapdebug, %o4
|
set pmapdebug, %o4
|
||||||
ld [%o4], %o4
|
ld [%o4], %o4
|
||||||
|
@ -8949,16 +8895,9 @@ ENTRY(pmap_zero_page)
|
||||||
*/
|
*/
|
||||||
ENTRY(pmap_copy_page)
|
ENTRY(pmap_copy_page)
|
||||||
#ifndef _LP64
|
#ifndef _LP64
|
||||||
!!
|
|
||||||
!! If we have 64-bit physical addresses (and we do now)
|
|
||||||
!! we need to move the pointer from %o0:%o1 to %o0 and
|
|
||||||
!! %o2:%o3 to %o1
|
|
||||||
!!
|
|
||||||
#if PADDRT == 8
|
|
||||||
COMBINE(%o0, %o1, %o0)
|
COMBINE(%o0, %o1, %o0)
|
||||||
COMBINE(%o2, %o3, %o1)
|
COMBINE(%o2, %o3, %o1)
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
set pmapdebug, %o4
|
set pmapdebug, %o4
|
||||||
ld [%o4], %o4
|
ld [%o4], %o4
|
||||||
|
|
Loading…
Reference in New Issue