315 #define NOT_WINDOWS(code) code
316 #endif
317
318 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
319 #define BSD
320 #define BSD_ONLY(code) code
321 #define NOT_BSD(code)
322 #else
323 #define BSD_ONLY(code)
324 #define NOT_BSD(code) code
325 #endif
326
327 #ifdef _WIN64
328 #define WIN64_ONLY(code) code
329 #define NOT_WIN64(code)
330 #else
331 #define WIN64_ONLY(code)
332 #define NOT_WIN64(code) code
333 #endif
334
335 #if defined(ZERO)
336 #define ZERO_ONLY(code) code
337 #define NOT_ZERO(code)
338 #else
339 #define ZERO_ONLY(code)
340 #define NOT_ZERO(code) code
341 #endif
342
343 #if defined(SHARK)
344 #define SHARK_ONLY(code) code
345 #define NOT_SHARK(code)
346 #else
347 #define SHARK_ONLY(code)
348 #define NOT_SHARK(code) code
349 #endif
350
351 #if defined(IA32) || defined(AMD64)
352 #define X86
353 #define X86_ONLY(code) code
354 #define NOT_X86(code)
355 #else
356 #undef X86
357 #define X86_ONLY(code)
358 #define NOT_X86(code) code
359 #endif
360
361 #ifdef IA32
362 #define IA32_ONLY(code) code
363 #define NOT_IA32(code)
364 #else
365 #define IA32_ONLY(code)
366 #define NOT_IA32(code) code
367 #endif
368
369 // This is a REALLY BIG HACK, but on AIX <sys/systemcfg.h> unconditionally defines IA64.
370 // At least on AIX 7.1 this is a real problem because 'systemcfg.h' is indirectly included
371 // by 'pthread.h' and other common system headers.
372
373 #if defined(IA64) && !defined(AIX)
374 #define IA64_ONLY(code) code
375 #define NOT_IA64(code)
376 #else
377 #define IA64_ONLY(code)
378 #define NOT_IA64(code) code
379 #endif
380
381 #ifdef AMD64
382 #define AMD64_ONLY(code) code
383 #define NOT_AMD64(code)
384 #else
385 #define AMD64_ONLY(code)
386 #define NOT_AMD64(code) code
387 #endif
388
389 #ifdef SPARC
390 #define SPARC_ONLY(code) code
391 #define NOT_SPARC(code)
392 #else
393 #define SPARC_ONLY(code)
394 #define NOT_SPARC(code) code
395 #endif
396
397 #if defined(PPC32) || defined(PPC64)
398 #ifndef PPC
399 #define PPC
400 #endif
401 #define PPC_ONLY(code) code
402 #define NOT_PPC(code)
403 #else
404 #undef PPC
405 #define PPC_ONLY(code)
406 #define NOT_PPC(code) code
407 #endif
408
409 #ifdef PPC32
410 #define PPC32_ONLY(code) code
411 #define NOT_PPC32(code)
412 #else
413 #define PPC32_ONLY(code)
414 #define NOT_PPC32(code) code
415 #endif
416
417 #ifdef PPC64
418 #define PPC64_ONLY(code) code
419 #define NOT_PPC64(code)
420 #else
421 #define PPC64_ONLY(code)
422 #define NOT_PPC64(code) code
423 #endif
424
425 #ifdef E500V2
426 #define E500V2_ONLY(code) code
427 #define NOT_E500V2(code)
428 #else
429 #define E500V2_ONLY(code)
430 #define NOT_E500V2(code) code
431 #endif
432
433 // Note: There are three ARM ports. They set the following in the makefiles:
434 // 1. Closed 32-bit port: -DARM -DARM32 -DTARGET_ARCH_arm
435 // 2. Closed 64-bit port: -DARM -DAARCH64 -D_LP64 -DTARGET_ARCH_arm
436 // 3. Open 64-bit port: -DAARCH64 -D_LP64 -DTARGET_ARCH_aaarch64
437 #ifdef ARM
438 #define ARM_ONLY(code) code
439 #define NOT_ARM(code)
440 #else
441 #define ARM_ONLY(code)
442 #define NOT_ARM(code) code
443 #endif
444
445 #ifdef ARM32
446 #define ARM32_ONLY(code) code
447 #define NOT_ARM32(code)
448 #else
449 #define ARM32_ONLY(code)
450 #define NOT_ARM32(code) code
451 #endif
452
453 #ifdef AARCH64
454 #define AARCH64_ONLY(code) code
455 #define NOT_AARCH64(code)
456 #else
457 #define AARCH64_ONLY(code)
458 #define NOT_AARCH64(code) code
459 #endif
460
461 #define define_pd_global(type, name, value) const type pd_##name = value;
462
463 // Helper macros for constructing file names for includes.
464 #define CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_CPU)
465 #define OS_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_OS)
466 #define OS_CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, PASTE_TOKENS(INCLUDE_SUFFIX_OS, INCLUDE_SUFFIX_CPU))
467
468 // Include platform dependent files.
469 //
470 // This macro constructs from basename and INCLUDE_SUFFIX_OS /
471 // INCLUDE_SUFFIX_CPU, which are set on the command line, the name of
472 // platform dependent files to be included.
473 // Example: INCLUDE_SUFFIX_OS=_linux / INCLUDE_SUFFIX_CPU=_sparc
474 // CPU_HEADER_INLINE(macroAssembler) --> macroAssembler_sparc.inline.hpp
475 // OS_CPU_HEADER(vmStructs) --> vmStructs_linux_sparc.hpp
476 //
477 // basename<cpu>.hpp / basename<cpu>.inline.hpp
478 #define CPU_HEADER_H(basename) XSTR(CPU_HEADER_STEM(basename).h)
479 #define CPU_HEADER(basename) XSTR(CPU_HEADER_STEM(basename).hpp)
|
315 #define NOT_WINDOWS(code) code
316 #endif
317
318 #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
319 #define BSD
320 #define BSD_ONLY(code) code
321 #define NOT_BSD(code)
322 #else
323 #define BSD_ONLY(code)
324 #define NOT_BSD(code) code
325 #endif
326
327 #ifdef _WIN64
328 #define WIN64_ONLY(code) code
329 #define NOT_WIN64(code)
330 #else
331 #define WIN64_ONLY(code)
332 #define NOT_WIN64(code) code
333 #endif
334
335 // Note: There are three ARM ports. They set the following in the makefiles:
336 // 1. Closed 32-bit port: -DARM -DARM32 -DTARGET_ARCH_arm
337 // 2. Closed 64-bit port: -DARM -DAARCH64 -D_LP64 -DTARGET_ARCH_arm
338 // 3. Open 64-bit port: -DAARCH64 -D_LP64 -DTARGET_ARCH_aaarch64
339 #ifdef AARCH64
340 #define AARCH64_ONLY(code) code
341 #define NOT_AARCH64(code)
342 #else
343 #define AARCH64_ONLY(code)
344 #define NOT_AARCH64(code) code
345 #endif
346
347 #ifdef ARM
348 #define ARM_ONLY(code) code
349 #define NOT_ARM(code)
350 #else
351 #define ARM_ONLY(code)
352 #define NOT_ARM(code) code
353 #endif
354
355 #ifdef ARM32
356 #define ARM32_ONLY(code) code
357 #define NOT_ARM32(code)
358 #else
359 #define ARM32_ONLY(code)
360 #define NOT_ARM32(code) code
361 #endif
362
363 #ifdef E500V2
364 #define E500V2_ONLY(code) code
365 #define NOT_E500V2(code)
366 #else
367 #define E500V2_ONLY(code)
368 #define NOT_E500V2(code) code
369 #endif
370
371 // This is a REALLY BIG HACK, but on AIX <sys/systemcfg.h>
372 // unconditionally defines IA64. At least on AIX 7.1 this is a real
373 // problem because 'systemcfg.h' is indirectly included by 'pthread.h'
374 // and other common system headers.
375 #if defined(IA64) && !defined(AIX)
376 #define IA64_ONLY(code) code
377 #define NOT_IA64(code)
378 #else
379 #define IA64_ONLY(code)
380 #define NOT_IA64(code) code
381 #endif
382
383 #if defined(PPC32) || defined(PPC64)
384 #ifndef PPC
385 #define PPC
386 #endif
387 #define PPC_ONLY(code) code
388 #define NOT_PPC(code)
389 #else
390 #undef PPC
391 #define PPC_ONLY(code)
392 #define NOT_PPC(code) code
393 #endif
394
395 #ifdef PPC32
396 #define PPC32_ONLY(code) code
397 #define NOT_PPC32(code)
398 #else
399 #define PPC32_ONLY(code)
400 #define NOT_PPC32(code) code
401 #endif
402
403 #ifdef PPC64
404 #define PPC64_ONLY(code) code
405 #define NOT_PPC64(code)
406 #else
407 #define PPC64_ONLY(code)
408 #define NOT_PPC64(code) code
409 #endif
410
411 #ifdef S390
412 #define S390_ONLY(code) code
413 #define NOT_S390(code)
414 #else
415 #define S390_ONLY(code)
416 #define NOT_S390(code) code
417 #endif
418
419 #ifdef SHARK
420 #define SHARK_ONLY(code) code
421 #define NOT_SHARK(code)
422 #else
423 #define SHARK_ONLY(code)
424 #define NOT_SHARK(code) code
425 #endif
426
427 #ifdef SPARC
428 #define SPARC_ONLY(code) code
429 #define NOT_SPARC(code)
430 #else
431 #define SPARC_ONLY(code)
432 #define NOT_SPARC(code) code
433 #endif
434
435 #if defined(IA32) || defined(AMD64)
436 #define X86
437 #define X86_ONLY(code) code
438 #define NOT_X86(code)
439 #else
440 #undef X86
441 #define X86_ONLY(code)
442 #define NOT_X86(code) code
443 #endif
444
445 // Synonym for X86_32.
446 #ifdef IA32
447 #define IA32_ONLY(code) code
448 #define NOT_IA32(code)
449 #else
450 #define IA32_ONLY(code)
451 #define NOT_IA32(code) code
452 #endif
453
454 // Synonym for X86_64.
455 #ifdef AMD64
456 #define AMD64_ONLY(code) code
457 #define NOT_AMD64(code)
458 #else
459 #define AMD64_ONLY(code)
460 #define NOT_AMD64(code) code
461 #endif
462
463 #if defined(ZERO)
464 #define ZERO_ONLY(code) code
465 #define NOT_ZERO(code)
466 #else
467 #define ZERO_ONLY(code)
468 #define NOT_ZERO(code) code
469 #endif
470
471
472 #define define_pd_global(type, name, value) const type pd_##name = value;
473
474 // Helper macros for constructing file names for includes.
475 #define CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_CPU)
476 #define OS_HEADER_STEM(basename) PASTE_TOKENS(basename, INCLUDE_SUFFIX_OS)
477 #define OS_CPU_HEADER_STEM(basename) PASTE_TOKENS(basename, PASTE_TOKENS(INCLUDE_SUFFIX_OS, INCLUDE_SUFFIX_CPU))
478
479 // Include platform dependent files.
480 //
481 // This macro constructs from basename and INCLUDE_SUFFIX_OS /
482 // INCLUDE_SUFFIX_CPU, which are set on the command line, the name of
483 // platform dependent files to be included.
484 // Example: INCLUDE_SUFFIX_OS=_linux / INCLUDE_SUFFIX_CPU=_sparc
485 // CPU_HEADER_INLINE(macroAssembler) --> macroAssembler_sparc.inline.hpp
486 // OS_CPU_HEADER(vmStructs) --> vmStructs_linux_sparc.hpp
487 //
488 // basename<cpu>.hpp / basename<cpu>.inline.hpp
489 #define CPU_HEADER_H(basename) XSTR(CPU_HEADER_STEM(basename).h)
490 #define CPU_HEADER(basename) XSTR(CPU_HEADER_STEM(basename).hpp)
|