/[qemu]/qemu/exec.c
ViewVC logotype

Diff of /qemu/exec.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by bellard, Sun May 25 16:46:15 2003 UTC revision 1.6 by bellard, Tue May 27 23:29:24 2003 UTC
# Line 531  void page_unprotect_range(uint8_t *data, Line 531  void page_unprotect_range(uint8_t *data,
531          page_unprotect(addr);          page_unprotect(addr);
532      }      }
533  }  }
534    
535    /* find the TB 'tb' such that tb[0].tc_ptr <= tc_ptr <
536       tb[1].tc_ptr. Return NULL if not found */
537    TranslationBlock *tb_find_pc(unsigned long tc_ptr)
538    {
539        int m_min, m_max, m;
540        unsigned long v;
541        TranslationBlock *tb;
542    
543        if (nb_tbs <= 0)
544            return NULL;
545        if (tc_ptr < (unsigned long)code_gen_buffer ||
546            tc_ptr >= (unsigned long)code_gen_ptr)
547            return NULL;
548        /* binary search (cf Knuth) */
549        m_min = 0;
550        m_max = nb_tbs - 1;
551        while (m_min <= m_max) {
552            m = (m_min + m_max) >> 1;
553            tb = &tbs[m];
554            v = (unsigned long)tb->tc_ptr;
555            if (v == tc_ptr)
556                return tb;
557            else if (tc_ptr < v) {
558                m_max = m - 1;
559            } else {
560                m_min = m + 1;
561            }
562        }
563        return &tbs[m_max];
564    }

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26