Author: nwhitehorn
Date: Wed Nov 27 22:01:09 2013
New Revision: 258696
URL: http://svnweb.freebsd.org/changeset/base/258696

Log:
  badaddr() is used only in the grackle PCI driver, so move its definition
  there. Clean up a spurious setfault() declaration as well.

Modified:
  head/sys/powerpc/aim/machdep.c
  head/sys/powerpc/aim/trap.c
  head/sys/powerpc/booke/trap.c
  head/sys/powerpc/powermac/grackle.c

Modified: head/sys/powerpc/aim/machdep.c
==============================================================================
--- head/sys/powerpc/aim/machdep.c      Wed Nov 27 21:55:43 2013        
(r258695)
+++ head/sys/powerpc/aim/machdep.c      Wed Nov 27 22:01:09 2013        
(r258696)
@@ -157,8 +157,6 @@ SYSCTL_INT(_machdep, CPU_CACHELINE, cach
 
 uintptr_t      powerpc_init(vm_offset_t, vm_offset_t, vm_offset_t, void *);
 
-int             setfault(faultbuf);             /* defined in locore.S */
-
 long           Maxmem = 0;
 long           realmem = 0;
 

Modified: head/sys/powerpc/aim/trap.c
==============================================================================
--- head/sys/powerpc/aim/trap.c Wed Nov 27 21:55:43 2013        (r258695)
+++ head/sys/powerpc/aim/trap.c Wed Nov 27 22:01:09 2013        (r258696)
@@ -87,12 +87,6 @@ static int   handle_user_slb_spill(pmap_t 
 extern int     n_slbs;
 #endif
 
-int    setfault(faultbuf);             /* defined in locore.S */
-
-/* Why are these not defined in a header? */
-int    badaddr(void *, size_t);
-int    badaddr_read(void *, size_t, int *);
-
 struct powerpc_exception {
        u_int   vector;
        char    *name;
@@ -690,59 +684,6 @@ trap_pfault(struct trapframe *frame, int
        return (SIGSEGV);
 }
 
-int
-badaddr(void *addr, size_t size)
-{
-       return (badaddr_read(addr, size, NULL));
-}
-
-int
-badaddr_read(void *addr, size_t size, int *rptr)
-{
-       struct thread   *td;
-       faultbuf        env;
-       int             x;
-
-       /* Get rid of any stale machine checks that have been waiting.  */
-       __asm __volatile ("sync; isync");
-
-       td = curthread;
-
-       if (setfault(env)) {
-               td->td_pcb->pcb_onfault = 0;
-               __asm __volatile ("sync");
-               return 1;
-       }
-
-       __asm __volatile ("sync");
-
-       switch (size) {
-       case 1:
-               x = *(volatile int8_t *)addr;
-               break;
-       case 2:
-               x = *(volatile int16_t *)addr;
-               break;
-       case 4:
-               x = *(volatile int32_t *)addr;
-               break;
-       default:
-               panic("badaddr: invalid size (%zd)", size);
-       }
-
-       /* Make sure we took the machine check, if we caused one. */
-       __asm __volatile ("sync; isync");
-
-       td->td_pcb->pcb_onfault = 0;
-       __asm __volatile ("sync");      /* To be sure. */
-
-       /* Use the value to avoid reorder. */
-       if (rptr)
-               *rptr = x;
-
-       return (0);
-}
-
 /*
  * For now, this only deals with the particular unaligned access case
  * that gcc tends to generate.  Eventually it should handle all of the

Modified: head/sys/powerpc/booke/trap.c
==============================================================================
--- head/sys/powerpc/booke/trap.c       Wed Nov 27 21:55:43 2013        
(r258695)
+++ head/sys/powerpc/booke/trap.c       Wed Nov 27 22:01:09 2013        
(r258696)
@@ -87,12 +87,6 @@ static int   fix_unaligned(struct thread *
 static int     handle_onfault(struct trapframe *frame);
 static void    syscall(struct trapframe *frame);
 
-int    setfault(faultbuf);             /* defined in locore.S */
-
-/* Why are these not defined in a header? */
-int    badaddr(void *, size_t);
-int    badaddr_read(void *, size_t, int *);
-
 struct powerpc_exception {
        u_int   vector;
        char    *name;
@@ -461,60 +455,6 @@ trap_pfault(struct trapframe *frame, int
        return ((rv == KERN_PROTECTION_FAILURE) ? SIGBUS : SIGSEGV);
 }
 
-int
-badaddr(void *addr, size_t size)
-{
-
-       return (badaddr_read(addr, size, NULL));
-}
-
-int
-badaddr_read(void *addr, size_t size, int *rptr)
-{
-       struct thread   *td;
-       faultbuf        env;
-       int             x;
-
-       /* Get rid of any stale machine checks that have been waiting.  */
-       __asm __volatile ("sync; isync");
-
-       td = curthread;
-
-       if (setfault(env)) {
-               td->td_pcb->pcb_onfault = 0;
-               __asm __volatile ("sync");
-               return (1);
-       }
-
-       __asm __volatile ("sync");
-
-       switch (size) {
-       case 1:
-               x = *(volatile int8_t *)addr;
-               break;
-       case 2:
-               x = *(volatile int16_t *)addr;
-               break;
-       case 4:
-               x = *(volatile int32_t *)addr;
-               break;
-       default:
-               panic("badaddr: invalid size (%d)", size);
-       }
-
-       /* Make sure we took the machine check, if we caused one. */
-       __asm __volatile ("sync; isync");
-
-       td->td_pcb->pcb_onfault = 0;
-       __asm __volatile ("sync");      /* To be sure. */
-
-       /* Use the value to avoid reorder. */
-       if (rptr)
-               *rptr = x;
-
-       return (0);
-}
-
 /*
  * For now, this only deals with the particular unaligned access case
  * that gcc tends to generate.  Eventually it should handle all of the

Modified: head/sys/powerpc/powermac/grackle.c
==============================================================================
--- head/sys/powerpc/powermac/grackle.c Wed Nov 27 21:55:43 2013        
(r258695)
+++ head/sys/powerpc/powermac/grackle.c Wed Nov 27 22:01:09 2013        
(r258696)
@@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/bus.h>
 #include <sys/conf.h>
 #include <sys/kernel.h>
+#include <sys/proc.h>
 
 #include <dev/ofw/openfirm.h>
 #include <dev/ofw/ofw_pci.h>
@@ -59,8 +60,6 @@ __FBSDID("$FreeBSD$");
 
 #include "pcib_if.h"
 
-int      badaddr(void *, size_t);  /* XXX */
-
 /*
  * Device interface.
  */
@@ -81,6 +80,9 @@ static void           grackle_write_config(device
 static int             grackle_enable_config(struct grackle_softc *, u_int,
                            u_int, u_int, u_int);
 static void            grackle_disable_config(struct grackle_softc *);
+static int             badaddr(void *, size_t);
+
+int                    setfault(faultbuf);     /* defined in locore.S */
 
 /*
  * Driver methods.
@@ -238,6 +240,50 @@ grackle_disable_config(struct grackle_so
        out32rb(sc->sc_addr, 0);
 }
 
+static int
+badaddr(void *addr, size_t size)
+{
+       struct thread   *td;
+       faultbuf        env, *oldfaultbuf;
+       int             x;
+
+       /* Get rid of any stale machine checks that have been waiting.  */
+       __asm __volatile ("sync; isync");
+
+       td = curthread;
+
+       oldfaultbuf = td->td_pcb->pcb_onfault;
+       if (setfault(env)) {
+               td->td_pcb->pcb_onfault = oldfaultbuf;
+               __asm __volatile ("sync");
+               return 1;
+       }
+
+       __asm __volatile ("sync");
+
+       switch (size) {
+       case 1:
+               x = *(volatile int8_t *)addr;
+               break;
+       case 2:
+               x = *(volatile int16_t *)addr;
+               break;
+       case 4:
+               x = *(volatile int32_t *)addr;
+               break;
+       default:
+               panic("badaddr: invalid size (%zd)", size);
+       }
+
+       /* Make sure we took the machine check, if we caused one. */
+       __asm __volatile ("sync; isync");
+
+       td->td_pcb->pcb_onfault = oldfaultbuf;
+       __asm __volatile ("sync");      /* To be sure. */
+
+       return (0);
+}
+
 /*
  * Driver to swallow Grackle host bridges from the PCI bus side.
  */
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to