Ejemplo n.º 1
0
static inline int
cache_flush_040 (unsigned long addr, int scope, int cache, unsigned long len)
{
    unsigned long paddr, i;

    switch (scope)
    {
    case FLUSH_SCOPE_ALL:
        switch (cache)
        {
        case FLUSH_CACHE_DATA:
            /* This nop is needed for some broken versions of the 68040.  */
            __asm__ __volatile__ ("nop\n\t"
                                  ".word 0xf478 /* cpusha %%dc */");
            break;
        case FLUSH_CACHE_INSN:
            __asm__ __volatile__ ("nop\n\t"
                                  ".word 0xf4b8 /* cpusha %%ic */");
            break;
        default:
        case FLUSH_CACHE_BOTH:
            __asm__ __volatile__ ("nop\n\t"
                                  ".word 0xf4f8 /* cpusha %%bc */");
            break;
        }
        break;

    case FLUSH_SCOPE_LINE:
        /* Find the physical address of the first mapped page in the
        address range.  */
        if ((paddr = virt_to_phys_040(addr))) {
            paddr += addr & ~(PAGE_MASK | 15);
            len = (len + (addr & 15) + 15) >> 4;
        } else {
Ejemplo n.º 2
0
static inline int
cache_flush_040 (unsigned long addr, int scope, int cache, unsigned long len)
{
  unsigned long paddr, i;

  switch (scope)
    {
    case FLUSH_SCOPE_ALL:
      switch (cache)
	{
	case FLUSH_CACHE_DATA:
	  /*                                                            */
	  __asm__ __volatile__ ("nop\n\t"
				".chip 68040\n\t"
				"cpusha %dc\n\t"
				".chip 68k");
	  break;
	case FLUSH_CACHE_INSN:
	  __asm__ __volatile__ ("nop\n\t"
				".chip 68040\n\t"
				"cpusha %ic\n\t"
				".chip 68k");
	  break;
	default:
	case FLUSH_CACHE_BOTH:
	  __asm__ __volatile__ ("nop\n\t"
				".chip 68040\n\t"
				"cpusha %bc\n\t"
				".chip 68k");
	  break;
	}
      break;

    case FLUSH_SCOPE_LINE:
      /*                                                          
                  */
      if ((paddr = virt_to_phys_040(addr))) {
        paddr += addr & ~(PAGE_MASK | 15);
        len = (len + (addr & 15) + 15) >> 4;
      } else {