diff options
Diffstat (limited to 'REORG.TODO/manual/platform.texi')
-rw-r--r-- | REORG.TODO/manual/platform.texi | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/REORG.TODO/manual/platform.texi b/REORG.TODO/manual/platform.texi new file mode 100644 index 0000000000..cb166641fb --- /dev/null +++ b/REORG.TODO/manual/platform.texi @@ -0,0 +1,117 @@ +@node Platform, Contributors, Maintenance, Top +@c %MENU% Describe all platform-specific facilities provided +@appendix Platform-specific facilities + +@Theglibc{} can provide machine-specific functionality. + +@menu +* PowerPC:: Facilities Specific to the PowerPC Architecture +@end menu + +@node PowerPC +@appendixsec PowerPC-specific Facilities + +Facilities specific to PowerPC that are not specific to a particular +operating system are declared in @file{sys/platform/ppc.h}. + +@deftypefun {uint64_t} __ppc_get_timebase (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Read the current value of the Time Base Register. + +The @dfn{Time Base Register} is a 64-bit register that stores a monotonically +incremented value updated at a system-dependent frequency that may be +different from the processor frequency. More information is available in +@cite{Power ISA 2.06b - Book II - Section 5.2}. + +@code{__ppc_get_timebase} uses the processor's time base facility directly +without requiring assistance from the operating system, so it is very +efficient. +@end deftypefun + +@deftypefun {uint64_t} __ppc_get_timebase_freq (void) +@safety{@prelim{}@mtunsafe{@mtuinit{}}@asunsafe{@asucorrupt{:init}}@acunsafe{@acucorrupt{:init}}} +@c __ppc_get_timebase_freq=__get_timebase_freq @mtuinit @acsfd +@c __get_clockfreq @mtuinit @asucorrupt:init @acucorrupt:init @acsfd +@c the initialization of the static timebase_freq is not exactly +@c safe, because hp_timing_t cannot be atomically set up. +@c syscall:get_tbfreq ok +@c open dup @acsfd +@c read dup ok +@c memcpy dup ok +@c memmem dup ok +@c close dup @acsfd +Read the current frequency at which the Time Base Register is updated. + +This frequency is not related to the processor clock or the bus clock. +It is also possible that this frequency is not constant. More information is +available in @cite{Power ISA 2.06b - Book II - Section 5.2}. +@end deftypefun + +The following functions provide hints about the usage of resources that are +shared with other processors. They can be used, for example, if a program +waiting on a lock intends to divert the shared resources to be used by other +processors. More information is available in @cite{Power ISA 2.06b - Book II - +Section 3.2}. + +@deftypefun {void} __ppc_yield (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Provide a hint that performance will probably be improved if shared resources +dedicated to the executing processor are released for use by other processors. +@end deftypefun + +@deftypefun {void} __ppc_mdoio (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Provide a hint that performance will probably be improved if shared resources +dedicated to the executing processor are released until all outstanding storage +accesses to caching-inhibited storage have been completed. +@end deftypefun + +@deftypefun {void} __ppc_mdoom (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Provide a hint that performance will probably be improved if shared resources +dedicated to the executing processor are released until all outstanding storage +accesses to cacheable storage for which the data is not in the cache have been +completed. +@end deftypefun + +@deftypefun {void} __ppc_set_ppr_med (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the Program Priority Register to medium value (default). + +The @dfn{Program Priority Register} (PPR) is a 64-bit register that controls +the program's priority. By adjusting the PPR value the programmer may +improve system throughput by causing the system resources to be used +more efficiently, especially in contention situations. +The three unprivileged states available are covered by the functions +@code{__ppc_set_ppr_med} (medium -- default), @code{__ppc_set_ppc_low} (low) +and @code{__ppc_set_ppc_med_low} (medium low). More information +available in @cite{Power ISA 2.06b - Book II - Section 3.1}. +@end deftypefun + +@deftypefun {void} __ppc_set_ppr_low (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the Program Priority Register to low value. +@end deftypefun + +@deftypefun {void} __ppc_set_ppr_med_low (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the Program Priority Register to medium low value. +@end deftypefun + +Power ISA 2.07 extends the priorities that can be set to the Program Priority +Register (PPR). The following functions implement the new priority levels: +very low and medium high. + +@deftypefun {void} __ppc_set_ppr_very_low (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the Program Priority Register to very low value. +@end deftypefun + +@deftypefun {void} __ppc_set_ppr_med_high (void) +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +Set the Program Priority Register to medium high value. The medium high +priority is privileged and may only be set during certain time intervals by +problem-state programs. If the program priority is medium high when the time +interval expires or if an attempt is made to set the priority to medium high +when it is not allowed, the priority is set to medium. +@end deftypefun |