|
Upgrading Privileged-Code Applications on OpenVMS Alpha and
OpenVMS I64 Systems
7.9 50-Bit Physical Address Search Command
Use 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 A
Data 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 . |
|