- Timestamp:
- 2010-06-22T14:13:55Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 851f33a
- Parents:
- 402eda5
- Location:
- boot
- Files:
-
- 2 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
boot/genarch/src/multiplication.c
r402eda5 r9539be6 33 33 34 34 #include <genarch/multiplication.h> 35 #include <typedefs.h> 35 36 36 /** Set 1 to return MAX_INT64 or MIN_INT64on overflow */37 /** Set 1 to return INT64_MAX or INT64_MIN on overflow */ 37 38 #ifndef SOFTINT_CHECK_OF 38 #define SOFTINT_CHECK_OF 039 #define SOFTINT_CHECK_OF 0 39 40 #endif 40 41 #define MAX_UINT16 (0xFFFFu)42 #define MAX_UINT32 (0xFFFFFFFFu)43 #define MAX_INT64 (0x7FFFFFFFFFFFFFFFll)44 #define MIN_INT64 (0x8000000000000000ll)45 41 46 42 /** Multiply two integers and return long long as result. … … 51 47 static unsigned long long mul(unsigned int a, unsigned int b) { 52 48 unsigned int a1 = a >> 16; 53 unsigned int a2 = a & MAX_UINT16;49 unsigned int a2 = a & UINT16_MAX; 54 50 unsigned int b1 = b >> 16; 55 unsigned int b2 = b & MAX_UINT16;51 unsigned int b2 = b & UINT16_MAX; 56 52 57 53 unsigned long long t1 = a1 * b1; … … 85 81 unsigned long long b1 = b >> 32; 86 82 87 unsigned long long a2 = a & ( MAX_UINT32);88 unsigned long long b2 = b & ( MAX_UINT32);83 unsigned long long a2 = a & (UINT32_MAX); 84 unsigned long long b2 = b & (UINT32_MAX); 89 85 90 86 if (SOFTINT_CHECK_OF && (a1 != 0) && (b1 != 0)) { 91 87 /* Error (overflow) */ 92 return (neg ? MIN_INT64 : MAX_INT64);88 return (neg ? INT64_MIN : INT64_MAX); 93 89 } 94 90 … … 98 94 unsigned long long t1 = mul(a1, b2) + mul(b1, a2); 99 95 100 if ((SOFTINT_CHECK_OF) && (t1 > MAX_UINT32)) {96 if ((SOFTINT_CHECK_OF) && (t1 > UINT32_MAX)) { 101 97 /* Error (overflow) */ 102 return (neg ? MIN_INT64 : MAX_INT64);98 return (neg ? INT64_MIN : INT64_MAX); 103 99 } 104 100 … … 112 108 if ((SOFTINT_CHECK_OF) && ((t2 < t1) || (t2 & (1ull << 63)))) { 113 109 /* Error (overflow) */ 114 return (neg ? MIN_INT64 : MAX_INT64);110 return (neg ? INT64_MIN : INT64_MAX); 115 111 } 116 112 -
boot/generic/include/stdint.h
r402eda5 r9539be6 27 27 */ 28 28 29 /** @addtogroup libcia6430 * @{31 */32 29 /** @file 33 30 */ 34 31 35 #ifndef LIBC_ia64_LIMITS_H_36 #define LIBC_ia64_LIMITS_H_32 #ifndef BOOT_STDINT_H_ 33 #define BOOT_STDINT_H_ 37 34 38 #define LONG_MIN MIN_INT64 39 #define LONG_MAX MAX_INT64 40 #define ULONG_MIN MIN_UINT64 41 #define ULONG_MAX MAX_UINT64 35 #define INT8_MIN (0x80) 36 #define INT8_MAX (0x7F) 42 37 43 #define SIZE_MIN MIN_UINT64 44 #define SIZE_MAX MAX_UINT64 45 #define SSIZE_MIN MIN_INT64 46 #define SSIZE_MAX MAX_INT64 38 #define UINT8_MIN (0u) 39 #define UINT8_MAX (0xFFu) 40 41 #define INT16_MIN (0x8000) 42 #define INT16_MAX (0x7FFF) 43 44 #define UINT16_MIN (0u) 45 #define UINT16_MAX (0xFFFFu) 46 47 #define INT32_MIN (0x80000000l) 48 #define INT32_MAX (0x7FFFFFFFl) 49 50 #define UINT32_MIN (0ul) 51 #define UINT32_MAX (0xFFFFFFFFul) 52 53 #define INT64_MIN (0x8000000000000000ll) 54 #define INT64_MAX (0x7FFFFFFFFFFFFFFFll) 55 56 #define UINT64_MIN (0ull) 57 #define UINT64_MAX (0xFFFFFFFFFFFFFFFFull) 47 58 48 59 #endif -
boot/generic/include/typedefs.h
r402eda5 r9539be6 33 33 #define BOOT_TYPEDEFS_H_ 34 34 35 #include <stdint.h> 35 36 #include <arch/common.h> 36 37 #include <arch/types.h>
Note:
See TracChangeset
for help on using the changeset viewer.