Mercurial > hg > graal-jvmci-8
comparison src/os/solaris/vm/os_solaris.hpp @ 641:6af0a709d52b
6812587: Use auxv to determine SPARC hardware features on Solaris
Summary: A similar function to getisax(2) should be used to determine all possible instruction set extensions.
Reviewed-by: never, kvn
author | twisti |
---|---|
date | Wed, 11 Mar 2009 14:16:13 -0700 |
parents | 85f1b9537f70 |
children | c18cbe5936b8 |
comparison
equal
deleted
inserted
replaced
625:2f2f54ed12ce | 641:6af0a709d52b |
---|---|
1 /* | 1 /* |
2 * Copyright 1997-2008 Sun Microsystems, Inc. All Rights Reserved. | 2 * Copyright 1997-2009 Sun Microsystems, Inc. All Rights Reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
69 typedef int lgrp_rsrc_t; | 69 typedef int lgrp_rsrc_t; |
70 typedef enum lgrp_view { | 70 typedef enum lgrp_view { |
71 LGRP_VIEW_CALLER, /* what's available to the caller */ | 71 LGRP_VIEW_CALLER, /* what's available to the caller */ |
72 LGRP_VIEW_OS /* what's available to operating system */ | 72 LGRP_VIEW_OS /* what's available to operating system */ |
73 } lgrp_view_t; | 73 } lgrp_view_t; |
74 | |
75 typedef uint_t (*getisax_func_t)(uint32_t* array, uint_t n); | |
74 | 76 |
75 typedef lgrp_id_t (*lgrp_home_func_t)(idtype_t idtype, id_t id); | 77 typedef lgrp_id_t (*lgrp_home_func_t)(idtype_t idtype, id_t id); |
76 typedef lgrp_cookie_t (*lgrp_init_func_t)(lgrp_view_t view); | 78 typedef lgrp_cookie_t (*lgrp_init_func_t)(lgrp_view_t view); |
77 typedef int (*lgrp_fini_func_t)(lgrp_cookie_t cookie); | 79 typedef int (*lgrp_fini_func_t)(lgrp_cookie_t cookie); |
78 typedef lgrp_id_t (*lgrp_root_func_t)(lgrp_cookie_t cookie); | 80 typedef lgrp_id_t (*lgrp_root_func_t)(lgrp_cookie_t cookie); |
85 typedef int (*lgrp_cookie_stale_func_t)(lgrp_cookie_t cookie); | 87 typedef int (*lgrp_cookie_stale_func_t)(lgrp_cookie_t cookie); |
86 typedef int (*meminfo_func_t)(const uint64_t inaddr[], int addr_count, | 88 typedef int (*meminfo_func_t)(const uint64_t inaddr[], int addr_count, |
87 const uint_t info_req[], int info_count, | 89 const uint_t info_req[], int info_count, |
88 uint64_t outdata[], uint_t validity[]); | 90 uint64_t outdata[], uint_t validity[]); |
89 | 91 |
92 static getisax_func_t _getisax; | |
93 | |
90 static lgrp_home_func_t _lgrp_home; | 94 static lgrp_home_func_t _lgrp_home; |
91 static lgrp_init_func_t _lgrp_init; | 95 static lgrp_init_func_t _lgrp_init; |
92 static lgrp_fini_func_t _lgrp_fini; | 96 static lgrp_fini_func_t _lgrp_fini; |
93 static lgrp_root_func_t _lgrp_root; | 97 static lgrp_root_func_t _lgrp_root; |
94 static lgrp_children_func_t _lgrp_children; | 98 static lgrp_children_func_t _lgrp_children; |
280 static int lgrp_nlgrps(lgrp_cookie_t cookie) { return _lgrp_nlgrps != NULL ? _lgrp_nlgrps(cookie) : -1; } | 284 static int lgrp_nlgrps(lgrp_cookie_t cookie) { return _lgrp_nlgrps != NULL ? _lgrp_nlgrps(cookie) : -1; } |
281 static int lgrp_cookie_stale(lgrp_cookie_t cookie) { | 285 static int lgrp_cookie_stale(lgrp_cookie_t cookie) { |
282 return _lgrp_cookie_stale != NULL ? _lgrp_cookie_stale(cookie) : -1; | 286 return _lgrp_cookie_stale != NULL ? _lgrp_cookie_stale(cookie) : -1; |
283 } | 287 } |
284 static lgrp_cookie_t lgrp_cookie() { return _lgrp_cookie; } | 288 static lgrp_cookie_t lgrp_cookie() { return _lgrp_cookie; } |
289 | |
290 static bool supports_getisax() { return _getisax != NULL; } | |
291 static uint_t getisax(uint32_t* array, uint_t n); | |
285 | 292 |
286 static void set_meminfo(meminfo_func_t func) { _meminfo = func; } | 293 static void set_meminfo(meminfo_func_t func) { _meminfo = func; } |
287 static int meminfo (const uint64_t inaddr[], int addr_count, | 294 static int meminfo (const uint64_t inaddr[], int addr_count, |
288 const uint_t info_req[], int info_count, | 295 const uint_t info_req[], int info_count, |
289 uint64_t outdata[], uint_t validity[]) { | 296 uint64_t outdata[], uint_t validity[]) { |