comparison src/w32heap.c @ 18506:bcc706aedcea

Add pragma to force zero initialized data into .data segment.
author Geoff Voelker <voelker@cs.washington.edu>
date Tue, 01 Jul 1997 05:05:45 +0000
parents 36babc489b0c
children 16e69fbdbf0f
comparison
equal deleted inserted replaced
18505:ca4d948da78d 18506:bcc706aedcea
64 /* Cache page size, allocation unit, processor type, etc. */ 64 /* Cache page size, allocation unit, processor type, etc. */
65 GetSystemInfo (&sysinfo_cache); 65 GetSystemInfo (&sysinfo_cache);
66 syspage_mask = sysinfo_cache.dwPageSize - 1; 66 syspage_mask = sysinfo_cache.dwPageSize - 1;
67 } 67 }
68 68
69 /* Emulate getpagesize. */
70 int
71 getpagesize (void)
72 {
73 return sysinfo_cache.dwPageSize;
74 }
75
69 /* Round ADDRESS up to be aligned with ALIGN. */ 76 /* Round ADDRESS up to be aligned with ALIGN. */
70 unsigned char * 77 unsigned char *
71 round_to_next (unsigned char *address, unsigned long align) 78 round_to_next (unsigned char *address, unsigned long align)
72 { 79 {
73 unsigned long tmp; 80 unsigned long tmp;
75 tmp = (unsigned long) address; 82 tmp = (unsigned long) address;
76 tmp = (tmp + align - 1) / align; 83 tmp = (tmp + align - 1) / align;
77 84
78 return (unsigned char *) (tmp * align); 85 return (unsigned char *) (tmp * align);
79 } 86 }
87
88 /* Force zero initialized variables to be placed in the .data segment;
89 MSVC 5.0 otherwise places them in .bss, which breaks the dumping code. */
90 #pragma data_seg(".data")
80 91
81 /* Info for keeping track of our heap. */ 92 /* Info for keeping track of our heap. */
82 unsigned char *data_region_base = NULL; 93 unsigned char *data_region_base = NULL;
83 unsigned char *data_region_end = NULL; 94 unsigned char *data_region_end = NULL;
84 unsigned char *real_data_region_end = NULL; 95 unsigned char *real_data_region_end = NULL;