|  | Upgrading Privileged-Code Applications on OpenVMS Alpha and
  OpenVMS I64 Systems
 
 7.9 50-Bit Physical Address Search CommandUse the following command procedure to help identify which modules require
  changing for the 50-Bit PA project.
 
 
    
      | Note This search command is so long that it only works on
        OpenVMS Alpha V7.3-2 or later versions that support longer DCL commands.
 
 If you see the following DCL error:
 
         
          
            | 
 %DCL-W-BUFOVF, command buffer overflow - shorten expression or command line  |  
 move to a Version 7.3-2 or later system.
 |  
 
  
    | 
 $! In the SEARCH command replace xxx with the list of files in your build $! environment where the relevant symbols might exist. For example, here is $! the one used for the VMS build. $! $! search resd$:[*.lis]*.lis,- $!        resd$:[lib*.src]*.mar,- $!        resd$:[lib*.src]*.req,- $!        resd$:[starlet*.src]*.mar,- $!        resd$:[starlet*.src]*.req,- $!        resd$:[lib_h.src]*.h - $! $! Note that it may not be sufficient to just search .LIS files. Macros and $! header files may also contain symbols that need to be examined. $! $! $ search xxx - ! data cells         exe$gl_blakhole,-         mmg$gl_maxmem,-         mmg$gl_max_node_pfn,-         mmg$gl_max_shared_pfn,-         mmg$gl_maxpfn,-         mmg$gl_memsize,-         mmg$gl_minpfn,-         mmg$gl_min_node_pfn,-         mmg$gl_min_shared_pfn,-         mmg$gl_phypgcnt,-  mmg$gl_shared_l2pt_pfn,-         mmg$gl_syi_pfn_memory_map,-         mmg$gq_window_pte_pfn,-         mmg$gq_window2_pte_pfn,-         pfn$al_head,-         pfn$al_color_head,-         pfn$al_color_tail,-         pfn$al_count,-         pfn$al_hilimit,-         pfn$al_lolimit,-  pfn$al_mfylsthd,-         pfn$al_tail,-         pfn$gl_phypgcnt,-         sch$gl_freecnt,-         sch$gl_freelim,-         sch$gl_freereq,-         sch$gl_mfycnt,-         sch$gl_mfyl,- ! routines         ioc$ptetopfn,-         ioc_std$ptetopfn,-         mmg$allo_contig,-         mmg$allo_contig_pfn,-         mmg$alloc_contig_color_a,-         mmg$alloc_contig_range,-         mmg$alloc_pfn,-         mmg$alloc_pfn_algnd_64,-         mmg$alloc_pfn_color_64,-         mmg$alloc_pfn_map_sva,-         mmg$alloc_sva_map,-         mmg$alloc_zero_algnd_64,-         mmg$alloc_zero_color_64,-         mmg$alloc_zero_pfn,-         mmg_std$allo_contig,-         mmg_std$allo_contig_a,-         mmg_std$allo_contig_pfn,-         mmg_std$allo_contig_pfn_a,-         mmg_std$alloc_ctg_pfn_map_sva,-         mmg_std$alloc_pfn_map_system_va,-         mmg_std$alloc_pfn_64,-         mmg_std$alloc_system_va_map,-         mmg_std$alloc_zero_pfn_64,- ! macros         allocpfn,-         alloc_zero_pfn,-         call_ptetopfn,- ! system services         sec$m_pfnmap,-         sys$create_gpfn,-         sys$crmpsc_gpfn_64,-         sys$crmpsc_pfn_64,-         syi$_max_pfn,-         syi$_pfn_memory_map,- ! data structures         gsd$l_basepfn,-         gsd$l_pages,-         gsd$l_refcnt,-         pmap$,-         pmm$, -         pfn$l_blink,-         pfn$l_flink,-         pfn$l_pt_pfn,-         prcstr$l_pio_pfn,-         prcstr$l_p1pointer_pfn,-         pte$m_pfn,-         pte$s_pfn,-         pte$v_pfn $ exit  |  
 
 Appendix AData Structure Changes
This appendix contains descriptions of the OpenVMS Alpha Version 7.0 I/O data
  structure changes made to support 64-bit addressing.
 The data structures are listed in alphabetical order. However, the individual
  structure members are listed in the order in which they are defined within
  each data structure. Note, however, that the following sections only describe
  new or changed structure members. Existing unchanged members are not described.
  In addition, unused or "fill" structure members that might be added
  to obtain natural alignment are not listed. Thus, you can not use the following
  descriptions to calculate the precise memory layout of the structures. However,
  you can assume that any new or changed structure members will be naturally
  aligned within the structure.
A.1 Pointer Size Conventions Any unqualified use of the term "pointer" implies a 32-bit pointer.
  All 64-bit pointers will be explicitly identified as either a 64-bit or quadword
  pointer.
 As of OpenVMS Alpha Version 7.0, a new C compiler pragma controls the pointer
  size. To facilitate the use of 64-bit pointers, a new header file,far_pointers.h in
  SYS$STARLET_C.TLB, defines types for 64-bit pointers to the intrinsic C data
  types.
 Table A-1 summarizes the 64-bit pointer
  data types.
 
 
  
  Table A-1 64-Bit Pointer Data Types
  
  
    | Type Name | 32-Bit Analog | Description | Defined by |  
    | CHAR_PQ | char * | 64-bit pointer to a char | far_pointers.h |  
    | CHAR_PPQ | char ** | 64-bit pointer to a CHAR_PQ | far_pointers.h |  
    | INT_PQ | int * | 64-bit pointer to a 32-bit int | far_pointers.h |  
    | INT64_PQ | int64 * | 64-bit pointer to a 64-bit int | far_pointers.h |  
    | UINT64_PQ | uint64 * | 64-bit pointer to a 64-bit int | far_pointers.h |  
    | VOID_PQ | void * | 64-bit pointer to arbitrary data | far_pointers.h |  
    | VOID_PPQ | void ** | 64-bit pointer to a VOID_PQ | far_pointers.h |  
    | IOSB_PQ | IOSB * | 64-bit pointer to an IOSB structure | iosbdef.h |  
    | IOSB_PPQ | IOSB ** | 64-bit pointer to an IOSB_PQ | iosbdef.h |  
    | PTE_PQ | PTE * | 64-bit pointer to a PTE | ptedef.h |  
    | PTE_PPQ | PTE ** | 64-bit pointer to a PTE_PQ | ptedef.h |  A.2 Buffer Object Descriptor (BOD)This section describes the additions and changes to cells in the buffer object
  descriptor (BOD) structure (see Table A-2).
 
 
  
  Table A-2 BOD Structure Changes
  
  
    | Field | Type | Comments |  
    | bod$v_s2_window | Bit | A bit equal to BOD$M_S2_WINDOW in the  bod$l_flags  cell.  When this bit is clear, the buffer object is mapped into the S0/S1
        portion of system space and the  bod$ps_svapte  and  bod$l_basesva  cells
        are valid.
        When this bit is set, the buffer object is mapped into the S2 portion
        of system space and the  bod$pq_va_pte  and  bod$pq_basesva  cells
        are valid.  |  
    | bod$pq_basepva | VOID_PQ | Process virtual address for the start of the buffer object. This cell
      replaces the  bod$l_basepva  cell. |  
    | bod$l_basepva | - | This cell will be removed. It will be replaced by the  bod$pq_basepva  cell. |  
    | bod$pq_basesva | VOID_PQ | System virtual address for the start of the buffer object. This cell
      is overlaid on the  bod$l_basesva  cell and
      this use is valid only if BOD$M_S2_WINDOW is set in  bod$l_flags  . |  
    | bod$pq_va_pte | PTE_PQ | Virtual address for the first system PTE that maps the buffer object.
      This cell is overlaid on the  bod$ps_svapte  cell
      and this use is valid only if BOD$M_S2_WINDOW is set in  bod$l_flags  . |  
 
   |