Compare commits
24 Commits
master
...
RaspberryP
Author | SHA1 | Date |
---|---|---|
Luis Ibanez | 75b15be585 | |
Luis Ibanez | d8fcd6cdb8 | |
Luis Ibanez | 96df9b4710 | |
Luis Ibanez | 464e969389 | |
Luis Ibanez | 8ae5a3bf1a | |
Luis Ibanez | ef6a3005da | |
Luis Ibanez | 394dc3222c | |
Luis Ibanez | 9f9c04d609 | |
Luis Ibanez | 852e9c22b1 | |
Luis Ibanez | e6b3ddf829 | |
Luis Ibanez | 4166b832c5 | |
Luis Ibanez | 5f2ef86c7a | |
Luis Ibanez | 78903f8fec | |
Luis Ibanez | cccb2c7535 | |
Luis Ibanez | ffbcca706c | |
Luis Ibanez | c542303eda | |
Luis Ibanez | 899ab884ca | |
Luis Ibanez | b4d54aa67d | |
Luis Ibanez | 9c1ea6e8c8 | |
Luis Ibanez | 94d996f81e | |
Luis Ibanez | de89d5ae3f | |
Luis Ibanez | 6c3ea0fea2 | |
Luis Ibanez | 831df3bc61 | |
Amul Shah | 0eede9a40b |
|
@ -1,398 +0,0 @@
|
||||||
### Gradle ###
|
|
||||||
.gradle
|
|
||||||
build/
|
|
||||||
|
|
||||||
# Ignore Gradle GUI config
|
|
||||||
gradle-app.setting
|
|
||||||
|
|
||||||
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
|
|
||||||
!gradle-wrapper.jar
|
|
||||||
|
|
||||||
# Cache of project
|
|
||||||
.gradletasknamecache
|
|
||||||
|
|
||||||
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
|
|
||||||
# gradle/wrapper/gradle-wrapper.properties
|
|
||||||
|
|
||||||
### Gradle Patch ###
|
|
||||||
**/build/
|
|
||||||
|
|
||||||
### Intellij ###
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
.idea/**/workspace.xml
|
|
||||||
.idea/**/tasks.xml
|
|
||||||
.idea/**/usage.statistics.xml
|
|
||||||
.idea/**/dictionaries
|
|
||||||
.idea/**/shelf
|
|
||||||
|
|
||||||
# Generated files
|
|
||||||
.idea/**/contentModel.xml
|
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
|
||||||
.idea/**/dataSources/
|
|
||||||
.idea/**/dataSources.ids
|
|
||||||
.idea/**/dataSources.local.xml
|
|
||||||
.idea/**/sqlDataSources.xml
|
|
||||||
.idea/**/dynamic.xml
|
|
||||||
.idea/**/uiDesigner.xml
|
|
||||||
.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
|
||||||
.idea/**/gradle.xml
|
|
||||||
.idea/**/libraries
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### Intellij Patch ###
|
|
||||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
|
||||||
|
|
||||||
# *.iml
|
|
||||||
# modules.xml
|
|
||||||
# .idea/misc.xml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# Sonarlint plugin
|
|
||||||
.idea/sonarlint
|
|
||||||
|
|
||||||
|
|
||||||
### Intellij+iml ###
|
|
||||||
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
|
|
||||||
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
|
|
||||||
|
|
||||||
# User-specific stuff
|
|
||||||
.idea/**/workspace.xml
|
|
||||||
.idea/**/tasks.xml
|
|
||||||
.idea/**/usage.statistics.xml
|
|
||||||
.idea/**/dictionaries
|
|
||||||
.idea/**/shelf
|
|
||||||
|
|
||||||
# Generated files
|
|
||||||
.idea/**/contentModel.xml
|
|
||||||
|
|
||||||
# Sensitive or high-churn files
|
|
||||||
.idea/**/dataSources/
|
|
||||||
.idea/**/dataSources.ids
|
|
||||||
.idea/**/dataSources.local.xml
|
|
||||||
.idea/**/sqlDataSources.xml
|
|
||||||
.idea/**/dynamic.xml
|
|
||||||
.idea/**/uiDesigner.xml
|
|
||||||
.idea/**/dbnavigator.xml
|
|
||||||
|
|
||||||
# Gradle
|
|
||||||
.idea/**/gradle.xml
|
|
||||||
.idea/**/libraries
|
|
||||||
|
|
||||||
# Gradle and Maven with auto-import
|
|
||||||
# When using Gradle or Maven with auto-import, you should exclude module files,
|
|
||||||
# since they will be recreated, and may cause churn. Uncomment if using
|
|
||||||
# auto-import.
|
|
||||||
# .idea/modules.xml
|
|
||||||
# .idea/*.iml
|
|
||||||
# .idea/modules
|
|
||||||
# *.iml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### Intellij+iml Patch ###
|
|
||||||
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
|
|
||||||
|
|
||||||
*.iml
|
|
||||||
modules.xml
|
|
||||||
.idea/misc.xml
|
|
||||||
*.ipr
|
|
||||||
|
|
||||||
### Maven ###
|
|
||||||
target/
|
|
||||||
pom.xml.tag
|
|
||||||
pom.xml.releaseBackup
|
|
||||||
pom.xml.versionsBackup
|
|
||||||
pom.xml.next
|
|
||||||
release.properties
|
|
||||||
dependency-reduced-pom.xml
|
|
||||||
buildNumber.properties
|
|
||||||
.mvn/timing.properties
|
|
||||||
.mvn/wrapper/maven-wrapper.jar
|
|
||||||
.flattened-pom.xml
|
|
||||||
|
|
||||||
# CMake
|
|
||||||
cmake-build-*/
|
|
||||||
|
|
||||||
# Mongo Explorer plugin
|
|
||||||
.idea/**/mongoSettings.xml
|
|
||||||
|
|
||||||
# File-based project format
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
# IntelliJ
|
|
||||||
out/
|
|
||||||
|
|
||||||
# mpeltonen/sbt-idea plugin
|
|
||||||
.idea_modules/
|
|
||||||
|
|
||||||
# JIRA plugin
|
|
||||||
atlassian-ide-plugin.xml
|
|
||||||
|
|
||||||
# Cursive Clojure plugin
|
|
||||||
.idea/replstate.xml
|
|
||||||
|
|
||||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
|
||||||
com_crashlytics_export_strings.xml
|
|
||||||
crashlytics.properties
|
|
||||||
crashlytics-build.properties
|
|
||||||
fabric.properties
|
|
||||||
|
|
||||||
# Editor-based Rest Client
|
|
||||||
.idea/httpRequests
|
|
||||||
|
|
||||||
# Android studio 3.1+ serialized cache file
|
|
||||||
.idea/caches/build_file_checksums.ser
|
|
||||||
|
|
||||||
### Intellij Patch ###
|
|
||||||
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
|
|
||||||
|
|
||||||
# *.iml
|
|
||||||
# modules.xml
|
|
||||||
# .idea/misc.xml
|
|
||||||
# *.ipr
|
|
||||||
|
|
||||||
# Sonarlint plugin
|
|
||||||
.idea/sonarlint
|
|
||||||
|
|
||||||
### Node ###
|
|
||||||
# Logs
|
|
||||||
logs
|
|
||||||
*.log
|
|
||||||
npm-debug.log*
|
|
||||||
yarn-debug.log*
|
|
||||||
yarn-error.log*
|
|
||||||
lerna-debug.log*
|
|
||||||
.pnpm-debug.log*
|
|
||||||
|
|
||||||
# Diagnostic reports (https://nodejs.org/api/report.html)
|
|
||||||
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
|
|
||||||
|
|
||||||
# Runtime data
|
|
||||||
pids
|
|
||||||
*.pid
|
|
||||||
*.seed
|
|
||||||
*.pid.lock
|
|
||||||
|
|
||||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
|
||||||
lib-cov
|
|
||||||
|
|
||||||
# Coverage directory used by tools like istanbul
|
|
||||||
coverage
|
|
||||||
*.lcov
|
|
||||||
|
|
||||||
# nyc test coverage
|
|
||||||
.nyc_output
|
|
||||||
|
|
||||||
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
|
|
||||||
.grunt
|
|
||||||
|
|
||||||
# Bower dependency directory (https://bower.io/)
|
|
||||||
bower_components
|
|
||||||
|
|
||||||
# node-waf configuration
|
|
||||||
.lock-wscript
|
|
||||||
|
|
||||||
# Compiled binary addons (https://nodejs.org/api/addons.html)
|
|
||||||
build/Release
|
|
||||||
|
|
||||||
# Dependency directories
|
|
||||||
node_modules/
|
|
||||||
jspm_packages/
|
|
||||||
|
|
||||||
# Snowpack dependency directory (https://snowpack.dev/)
|
|
||||||
web_modules/
|
|
||||||
|
|
||||||
# TypeScript cache
|
|
||||||
*.tsbuildinfo
|
|
||||||
|
|
||||||
# Optional npm cache directory
|
|
||||||
.npm
|
|
||||||
|
|
||||||
# Optional eslint cache
|
|
||||||
.eslintcache
|
|
||||||
|
|
||||||
# Optional stylelint cache
|
|
||||||
.stylelintcache
|
|
||||||
|
|
||||||
# Microbundle cache
|
|
||||||
.rpt2_cache/
|
|
||||||
.rts2_cache_cjs/
|
|
||||||
.rts2_cache_es/
|
|
||||||
.rts2_cache_umd/
|
|
||||||
|
|
||||||
# Optional REPL history
|
|
||||||
.node_repl_history
|
|
||||||
|
|
||||||
# Output of 'npm pack'
|
|
||||||
*.tgz
|
|
||||||
|
|
||||||
# Yarn Integrity file
|
|
||||||
.yarn-integrity
|
|
||||||
|
|
||||||
# dotenv environment variable files
|
|
||||||
.env
|
|
||||||
.env.development.local
|
|
||||||
.env.test.local
|
|
||||||
.env.production.local
|
|
||||||
.env.local
|
|
||||||
|
|
||||||
# parcel-bundler cache (https://parceljs.org/)
|
|
||||||
.cache
|
|
||||||
.parcel-cache
|
|
||||||
|
|
||||||
# Next.js build output
|
|
||||||
.next
|
|
||||||
out
|
|
||||||
|
|
||||||
# Nuxt.js build / generate output
|
|
||||||
.nuxt
|
|
||||||
dist
|
|
||||||
|
|
||||||
# Gatsby files
|
|
||||||
.cache/
|
|
||||||
# Comment in the public line in if your project uses Gatsby and not Next.js
|
|
||||||
# https://nextjs.org/blog/next-9-1#public-directory-support
|
|
||||||
# public
|
|
||||||
|
|
||||||
# vuepress build output
|
|
||||||
.vuepress/dist
|
|
||||||
|
|
||||||
# vuepress v2.x temp and cache directory
|
|
||||||
.temp
|
|
||||||
|
|
||||||
# Docusaurus cache and generated files
|
|
||||||
.docusaurus
|
|
||||||
|
|
||||||
# Serverless directories
|
|
||||||
.serverless/
|
|
||||||
|
|
||||||
# FuseBox cache
|
|
||||||
.fusebox/
|
|
||||||
|
|
||||||
# DynamoDB Local files
|
|
||||||
.dynamodb/
|
|
||||||
|
|
||||||
# TernJS port file
|
|
||||||
.tern-port
|
|
||||||
|
|
||||||
# Stores VSCode versions used for testing VSCode extensions
|
|
||||||
.vscode-test
|
|
||||||
|
|
||||||
# yarn v2
|
|
||||||
.yarn/cache
|
|
||||||
.yarn/unplugged
|
|
||||||
.yarn/build-state.yml
|
|
||||||
.yarn/install-state.gz
|
|
||||||
.pnp.*
|
|
||||||
|
|
||||||
### Node Patch ###
|
|
||||||
# Serverless Webpack directories
|
|
||||||
.webpack/
|
|
||||||
|
|
||||||
# Optional stylelint cache
|
|
||||||
|
|
||||||
# SvelteKit build / generate output
|
|
||||||
.svelte-kit
|
|
||||||
|
|
||||||
|
|
||||||
### yarn ###
|
|
||||||
|
|
||||||
.yarn/*
|
|
||||||
!.yarn/releases
|
|
||||||
!.yarn/patches
|
|
||||||
!.yarn/plugins
|
|
||||||
!.yarn/sdks
|
|
||||||
!.yarn/versions
|
|
||||||
|
|
||||||
# if you are NOT using Zero-installs, then:
|
|
||||||
# comment the following lines
|
|
||||||
!.yarn/cache
|
|
||||||
|
|
||||||
# and uncomment the following lines
|
|
||||||
# .pnp.*
|
|
||||||
|
|
||||||
### CVS ###
|
|
||||||
/CVS/*
|
|
||||||
**/CVS/*
|
|
||||||
.cvsignore
|
|
||||||
*/.cvsignore
|
|
343
CMakeLists.txt
343
CMakeLists.txt
|
@ -1,6 +1,6 @@
|
||||||
#################################################################
|
#################################################################
|
||||||
# #
|
# #
|
||||||
# Copyright 2012, 2013 Fidelity Information Services, Inc #
|
# Copyright 2012 Fidelity Information Services, Inc #
|
||||||
# #
|
# #
|
||||||
# This source code contains the intellectual property #
|
# This source code contains the intellectual property #
|
||||||
# of its copyright holder(s), and is made available #
|
# of its copyright holder(s), and is made available #
|
||||||
|
@ -15,63 +15,19 @@
|
||||||
cmake_minimum_required(VERSION 2.8.5)
|
cmake_minimum_required(VERSION 2.8.5)
|
||||||
project(GTM C ASM)
|
project(GTM C ASM)
|
||||||
|
|
||||||
# Max optimization level is -O2
|
set(version V6.0-000)
|
||||||
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
if("${version}" EQUAL "")
|
||||||
foreach(lang ${languages})
|
set(version V9.9-0)
|
||||||
get_property(flags CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE)
|
|
||||||
if("${flags}" MATCHES "-O[3-9]")
|
|
||||||
string(REGEX REPLACE "-O[3-9]" "-O2" flags "${flags}")
|
|
||||||
set_property(CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE "${flags}")
|
|
||||||
endif()
|
|
||||||
endforeach()
|
|
||||||
|
|
||||||
# Defaults
|
|
||||||
set(version V6.0-003)
|
|
||||||
if("${version}" STREQUAL "")
|
|
||||||
set(version V9.9-0)
|
|
||||||
endif()
|
endif()
|
||||||
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
|
||||||
# If CMAKE_BUILD_TYPE is not defined make it a Release build
|
set(arch "x86")
|
||||||
if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
|
|
||||||
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# If it's a debug build make sure GT.M uses all of its debug options
|
|
||||||
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
|
|
||||||
|
|
||||||
set(install_permissions_script
|
|
||||||
OWNER_READ OWNER_EXECUTE OWNER_WRITE
|
|
||||||
GROUP_READ GROUP_EXECUTE
|
|
||||||
WORLD_READ WORLD_EXECUTE
|
|
||||||
)
|
|
||||||
|
|
||||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG)
|
|
||||||
|
|
||||||
# Only IA64 and x86_64 architectures use this option
|
|
||||||
set(gen_xfer_desc 0)
|
|
||||||
|
|
||||||
# Platform specific libs
|
|
||||||
set(gtm_osarch_libs "")
|
|
||||||
|
|
||||||
# Define these ahead of establishing platforms
|
|
||||||
set(gt_src_list)
|
|
||||||
set(sources_used "")
|
|
||||||
set(extralibs "")
|
|
||||||
set(is_encryption_supported 1)
|
|
||||||
set(libmumpsrestoreregex "")
|
|
||||||
message("--> OS = ${CMAKE_SYSTEM_NAME} / ARCH = ${CMAKE_SYSTEM_PROCESSOR}")
|
|
||||||
# Establish platform
|
|
||||||
# Except for Solaris, CMAKE_COMPILER_IS_GNUCC is true
|
|
||||||
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
|
|
||||||
include(sr_linux/platform.cmake)
|
|
||||||
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "HP-UX")
|
|
||||||
include(sr_hpux/platform.cmake)
|
|
||||||
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
|
|
||||||
include(sr_aix/platform.cmake)
|
|
||||||
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "SunOS")
|
|
||||||
include(sr_sun/platform.cmake)
|
|
||||||
else()
|
else()
|
||||||
message(FATAL_ERROR "--> OS = ${CMAKE_SYSTEM_NAME} / ARCH = ${CMAKE_SYSTEM_PROCESSOR}")
|
set(arch "x86_64")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(BUILD_FOR_ARM "Build for the ARM Architecture" OFF)
|
||||||
|
if(BUILD_FOR_ARM)
|
||||||
|
set(arch "arm")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Choose where to get bootstrap sources.
|
# Choose where to get bootstrap sources.
|
||||||
|
@ -97,6 +53,41 @@ if(NOT GTM_INSTALL_DIR)
|
||||||
set(GTM_INSTALL_DIR .)
|
set(GTM_INSTALL_DIR .)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Max optimization level is -O2
|
||||||
|
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
|
||||||
|
foreach(lang ${languages})
|
||||||
|
get_property(flags CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE)
|
||||||
|
if("${flags}" MATCHES "-O[3-9]")
|
||||||
|
string(REGEX REPLACE "-O[3-9]" "-O2" flags "${flags}")
|
||||||
|
set_property(CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE "${flags}")
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
|
||||||
|
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(install_permissions_script
|
||||||
|
OWNER_READ OWNER_EXECUTE OWNER_WRITE
|
||||||
|
GROUP_READ GROUP_EXECUTE
|
||||||
|
WORLD_READ WORLD_EXECUTE
|
||||||
|
)
|
||||||
|
|
||||||
|
set(CMAKE_INCLUDE_FLAG_ASM "-Wa,-I") # gcc -I does not make it to "as"
|
||||||
|
set(CMAKE_C_FLAGS
|
||||||
|
# TODO: Use CMake 2.8.9 POSITION_INDEPENDENT_CODE abstraction for -fPIC in static libs
|
||||||
|
"${CMAKE_C_FLAGS} -ansi -fsigned-char -fPIC -Wmissing-prototypes")
|
||||||
|
set(CMAKE_C_FLAGS_RELEASE
|
||||||
|
"${CMAKE_C_FLAGS_RELEASE} -fno-defer-pop -fno-strict-aliasing -ffloat-store")
|
||||||
|
add_definitions(
|
||||||
|
#-DNOLIBGTMSHR #gt_cc_option_DBTABLD=-DNOLIBGTMSHR
|
||||||
|
-D_GNU_SOURCE
|
||||||
|
-D_FILE_OFFSET_BITS=64
|
||||||
|
-D_XOPEN_SOURCE=600
|
||||||
|
-D_LARGEFILE64_SOURCE
|
||||||
|
)
|
||||||
|
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG)
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
|
|
||||||
# Source files are organized into subdirectories named by platform.
|
# Source files are organized into subdirectories named by platform.
|
||||||
|
@ -105,6 +96,21 @@ endif()
|
||||||
# appear in multiple directories but only the instance found earliest
|
# appear in multiple directories but only the instance found earliest
|
||||||
# in the search path will be used. Later instances of the same source
|
# in the search path will be used. Later instances of the same source
|
||||||
# file name will be ignored.
|
# file name will be ignored.
|
||||||
|
set(gt_src_list)
|
||||||
|
set(gen_xfer_desc 0)
|
||||||
|
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
|
||||||
|
list(APPEND gt_src_list sr_linux)
|
||||||
|
if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
|
||||||
|
if(BUILD_FOR_ARM)
|
||||||
|
list(APPEND gt_src_list sr_arm sr_x86_regs sr_unix_nsb)
|
||||||
|
else()
|
||||||
|
list(APPEND gt_src_list sr_i386 sr_x86_regs sr_unix_nsb)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
list(APPEND gt_src_list sr_x86_64 sr_x86_regs)
|
||||||
|
set(gen_xfer_desc 1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
list(APPEND gt_src_list
|
list(APPEND gt_src_list
|
||||||
sr_unix_gnp
|
sr_unix_gnp
|
||||||
sr_unix_cm
|
sr_unix_cm
|
||||||
|
@ -119,7 +125,7 @@ list(APPEND gt_src_list
|
||||||
foreach(d ${gt_src_list})
|
foreach(d ${gt_src_list})
|
||||||
set(source_dir_${d} ${GTM_SOURCE_DIR}/${d})
|
set(source_dir_${d} ${GTM_SOURCE_DIR}/${d})
|
||||||
file(GLOB sources_${d} RELATIVE ${source_dir_${d}}
|
file(GLOB sources_${d} RELATIVE ${source_dir_${d}}
|
||||||
${d}/*.c ${d}/*.s ${d}/*.si)
|
${d}/*.c ${d}/*.s ${d}/*.si)
|
||||||
endforeach()
|
endforeach()
|
||||||
if(gen_bootstrap)
|
if(gen_bootstrap)
|
||||||
# Prefer generated sources over all other locations.
|
# Prefer generated sources over all other locations.
|
||||||
|
@ -159,20 +165,15 @@ endfunction()
|
||||||
# Macro to search directories ordered by 'gt_src_list' for a given
|
# Macro to search directories ordered by 'gt_src_list' for a given
|
||||||
# list of source file names, assign them to a target, and exclude the
|
# list of source file names, assign them to a target, and exclude the
|
||||||
# source file names from inclusion in libmumps.
|
# source file names from inclusion in libmumps.
|
||||||
|
set(sources_used "")
|
||||||
macro(set_source_list target)
|
macro(set_source_list target)
|
||||||
foreach(name ${ARGN})
|
foreach(name ${ARGN})
|
||||||
set(src "")
|
set(src "")
|
||||||
foreach(d ${gt_src_list})
|
foreach(d ${gt_src_list})
|
||||||
if(";${sources_${d}};" MATCHES ";(${name}\\.(c|s|si));")
|
if(";${sources_${d}};" MATCHES ";(${name}\\.(c|s|si));")
|
||||||
set(fname ${CMAKE_MATCH_1})
|
set(src ${d}/${CMAKE_MATCH_1})
|
||||||
set(src ${d}/${fname})
|
set("source_used_${CMAKE_MATCH_1}" 1)
|
||||||
set("source_used_${fname}" 1)
|
list(APPEND sources_used ${source_dir_${d}}/${CMAKE_MATCH_1})
|
||||||
list(APPEND sources_used ${source_dir_${d}}/${fname})
|
|
||||||
if(NOT "${libmumpsrestoreregex}" STREQUAL "")
|
|
||||||
if(";${name};" MATCHES ";(${libmumpsrestoreregex});")
|
|
||||||
set("source_used_${fname}" 0)
|
|
||||||
endif()
|
|
||||||
endif()
|
|
||||||
break()
|
break()
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -203,9 +204,6 @@ load_source_list(libgtcm sr_unix_cm/libgtcm.list)
|
||||||
load_source_list(liblke sr_unix/liblke.list)
|
load_source_list(liblke sr_unix/liblke.list)
|
||||||
load_source_list(libmupip sr_unix/libmupip.list)
|
load_source_list(libmupip sr_unix/libmupip.list)
|
||||||
load_source_list(libstub sr_unix/libstub.list)
|
load_source_list(libstub sr_unix/libstub.list)
|
||||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
|
|
||||||
load_source_list(libgtmrpc sr_sun/libgtmrpc.list)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
# Assign sources to executables.
|
# Assign sources to executables.
|
||||||
set_source_list(gtm_threadgbl_deftypes gtm_threadgbl_deftypes)
|
set_source_list(gtm_threadgbl_deftypes gtm_threadgbl_deftypes)
|
||||||
|
@ -227,9 +225,6 @@ set_source_list(maskpass maskpass)
|
||||||
set_source_list(mumps gtm)
|
set_source_list(mumps gtm)
|
||||||
set_source_list(mupip mupip mupip_cmd)
|
set_source_list(mupip mupip mupip_cmd)
|
||||||
set_source_list(semstat2 semstat2)
|
set_source_list(semstat2 semstat2)
|
||||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
|
|
||||||
set_source_list(gtm_svc gtm_svc gtm_rpc_init gtm_dal_svc)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# libmumps gets leftover sources, so compute the remaining list.
|
# libmumps gets leftover sources, so compute the remaining list.
|
||||||
|
@ -324,7 +319,6 @@ if(gen_xfer_desc)
|
||||||
${GTM_BINARY_DIR}/sources.list
|
${GTM_BINARY_DIR}/sources.list
|
||||||
COMMAND ${CMAKE_COMMAND}
|
COMMAND ${CMAKE_COMMAND}
|
||||||
-D CMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
-D CMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||||
-D "arch=${arch}"
|
|
||||||
-D "includes=${includes}"
|
-D "includes=${includes}"
|
||||||
-P ${GTM_SOURCE_DIR}/sr_unix/gen_xfer_desc.cmake
|
-P ${GTM_SOURCE_DIR}/sr_unix/gen_xfer_desc.cmake
|
||||||
VERBATIM
|
VERBATIM
|
||||||
|
@ -375,7 +369,6 @@ foreach(lib
|
||||||
mupip
|
mupip
|
||||||
stub
|
stub
|
||||||
mumps
|
mumps
|
||||||
${extralibs}
|
|
||||||
)
|
)
|
||||||
add_library(lib${lib} STATIC ${lib${lib}_SOURCES})
|
add_library(lib${lib} STATIC ${lib${lib}_SOURCES})
|
||||||
set_property(TARGET lib${lib} PROPERTY OUTPUT_NAME ${lib})
|
set_property(TARGET lib${lib} PROPERTY OUTPUT_NAME ${lib})
|
||||||
|
@ -383,72 +376,61 @@ foreach(lib
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
# TODO: find_package or find_library for system libs?
|
# TODO: find_package or find_library for system libs?
|
||||||
include_directories ("/usr/local/include")
|
target_link_libraries(libmumps -lelf -lncurses -lm -ldl -lpthread -lrt)
|
||||||
target_link_libraries(libmumps ${libmumpslibs})
|
|
||||||
|
|
||||||
add_executable(mumps ${mumps_SOURCES})
|
add_executable(mumps ${mumps_SOURCES})
|
||||||
target_link_libraries(mumps libmumps)
|
target_link_libraries(mumps libmumps)
|
||||||
|
|
||||||
add_executable(dse ${dse_SOURCES})
|
add_executable(dse ${dse_SOURCES})
|
||||||
target_link_libraries(dse libdse libmumps libstub)
|
target_link_libraries(dse libdse libmumps libstub)
|
||||||
list(APPEND with_export dse)
|
list(APPEND with_export dse)
|
||||||
|
|
||||||
add_executable(dbcertify ${dbcertify_SOURCES})
|
add_executable(dbcertify ${dbcertify_SOURCES})
|
||||||
target_link_libraries(dbcertify libdbcertify libmupip libmumps libstub)
|
target_link_libraries(dbcertify libdbcertify libmupip libmumps libstub)
|
||||||
|
|
||||||
add_executable(geteuid ${geteuid_SOURCES})
|
add_executable(geteuid ${geteuid_SOURCES})
|
||||||
|
|
||||||
add_executable(gtmsecshr ${gtmsecshr_SOURCES})
|
add_executable(gtmsecshr ${gtmsecshr_SOURCES})
|
||||||
add_dependencies(gtmsecshr gen_gtm_threadgbl_deftypes)
|
add_dependencies(gtmsecshr gen_gtm_threadgbl_deftypes)
|
||||||
|
|
||||||
add_executable(gtmsecshr_real ${gtmsecshr_real_SOURCES})
|
add_executable(gtmsecshr_real ${gtmsecshr_real_SOURCES})
|
||||||
target_link_libraries(gtmsecshr_real libmumps)
|
target_link_libraries(gtmsecshr_real libmumps)
|
||||||
set_target_properties(gtmsecshr_real PROPERTIES
|
set_target_properties(gtmsecshr_real PROPERTIES
|
||||||
OUTPUT_NAME gtmsecshr
|
OUTPUT_NAME gtmsecshr
|
||||||
RUNTIME_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/gtmsecshrdir
|
RUNTIME_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/gtmsecshrdir
|
||||||
)
|
)
|
||||||
add_dependencies(gtmsecshr_real gen_gtm_threadgbl_deftypes)
|
add_dependencies(gtmsecshr_real gen_gtm_threadgbl_deftypes)
|
||||||
|
|
||||||
add_executable(mupip ${mupip_SOURCES})
|
add_executable(mupip ${mupip_SOURCES})
|
||||||
target_link_libraries(mupip libmupip libmumps libstub)
|
target_link_libraries(mupip libmupip libmumps libstub)
|
||||||
list(APPEND with_export mupip)
|
list(APPEND with_export mupip)
|
||||||
|
|
||||||
add_executable(lke ${lke_SOURCES})
|
add_executable(lke ${lke_SOURCES})
|
||||||
target_link_libraries(lke liblke libmumps libgnpclient libmumps libgnpclient libcmisockettcp)
|
target_link_libraries(lke liblke libmumps libgnpclient libmumps libgnpclient libcmisockettcp)
|
||||||
list(APPEND with_export lke)
|
|
||||||
|
|
||||||
|
add_executable(gtcm_server ${gtcm_server_SOURCES})
|
||||||
add_executable(gtcm_server ${gtcm_server_SOURCES})
|
target_link_libraries(gtcm_server libgtcm libmumps libstub)
|
||||||
target_link_libraries(gtcm_server libgtcm libmumps libstub)
|
|
||||||
list(APPEND with_export gtcm_server)
|
list(APPEND with_export gtcm_server)
|
||||||
|
add_executable(gtcm_gnp_server ${gtcm_gnp_server_SOURCES})
|
||||||
add_executable(gtcm_gnp_server ${gtcm_gnp_server_SOURCES})
|
target_link_libraries(gtcm_gnp_server libgnpserver liblke libmumps libcmisockettcp libstub)
|
||||||
target_link_libraries(gtcm_gnp_server libgnpserver liblke libmumps libcmisockettcp libstub)
|
|
||||||
list(APPEND with_export gtcm_gnp_server)
|
list(APPEND with_export gtcm_gnp_server)
|
||||||
|
|
||||||
add_executable(gtcm_play ${gtcm_play_SOURCES})
|
add_executable(gtcm_play ${gtcm_play_SOURCES})
|
||||||
target_link_libraries(gtcm_play libgtcm libmumps libstub)
|
target_link_libraries(gtcm_play libgtcm libmumps libstub)
|
||||||
list(APPEND with_export gtcm_play)
|
list(APPEND with_export gtcm_play)
|
||||||
|
|
||||||
add_executable(gtcm_pkdisp ${gtcm_pkdisp_SOURCES})
|
add_executable(gtcm_pkdisp ${gtcm_pkdisp_SOURCES})
|
||||||
target_link_libraries(gtcm_pkdisp libgtcm libmumps libstub)
|
target_link_libraries(gtcm_pkdisp libgtcm libmumps libstub)
|
||||||
|
add_executable(gtcm_shmclean ${gtcm_shmclean_SOURCES})
|
||||||
|
target_link_libraries(gtcm_shmclean libgtcm libmumps libstub)
|
||||||
|
add_executable(semstat2 ${semstat2_SOURCES})
|
||||||
|
add_executable(ftok ${ftok_SOURCES})
|
||||||
|
target_link_libraries(ftok libmumps libstub)
|
||||||
|
|
||||||
add_executable(gtcm_shmclean ${gtcm_shmclean_SOURCES})
|
|
||||||
target_link_libraries(gtcm_shmclean libgtcm libmumps libstub)
|
|
||||||
|
|
||||||
add_executable(semstat2 ${semstat2_SOURCES})
|
|
||||||
|
|
||||||
add_executable(ftok ${ftok_SOURCES})
|
|
||||||
target_link_libraries(ftok libmumps libstub)
|
|
||||||
|
|
||||||
if("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
|
|
||||||
add_executable(gtm_svc ${gtm_svc_SOURCES})
|
|
||||||
target_link_libraries(gtm_svc libmumps libgnpclient libcmisockettcp libgtmrpc)
|
|
||||||
endif()
|
|
||||||
foreach(t ${with_export})
|
foreach(t ${with_export})
|
||||||
set_target_properties(${t} PROPERTIES
|
set_target_properties(${t} PROPERTIES
|
||||||
LINK_FLAGS "${gtm_link}"
|
LINK_FLAGS "-Wl,-u,gtm_filename_to_id -Wl,-u,gtm_zstatus -Wl,--version-script,\"${GTM_BINARY_DIR}/gtmexe_symbols.export\""
|
||||||
LINK_DEPENDS "${gtm_dep}"
|
LINK_DEPENDS "${GTM_BINARY_DIR}/gtmexe_symbols.export"
|
||||||
)
|
)
|
||||||
add_dependencies(${t} gen_export)
|
add_dependencies(${t} gen_export)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
@ -457,81 +439,68 @@ add_library(libgtmshr MODULE ${libgtmshr_SOURCES})
|
||||||
set_property(TARGET libgtmshr PROPERTY OUTPUT_NAME gtmshr)
|
set_property(TARGET libgtmshr PROPERTY OUTPUT_NAME gtmshr)
|
||||||
target_link_libraries(libgtmshr libmumps libgnpclient libcmisockettcp)
|
target_link_libraries(libgtmshr libmumps libgnpclient libcmisockettcp)
|
||||||
set_target_properties(libgtmshr PROPERTIES
|
set_target_properties(libgtmshr PROPERTIES
|
||||||
LINK_FLAGS "${libgtmshr_link}"
|
LINK_FLAGS "-Wl,-u,gtm_ci -Wl,-u,gtm_filename_to_id -Wl,--version-script,\"${GTM_BINARY_DIR}/gtmshr_symbols.export\""
|
||||||
LINK_DEPENDS "${libgtmshr_dep}"
|
LINK_DEPENDS "${GTM_BINARY_DIR}/gtmshr_symbols.export"
|
||||||
)
|
)
|
||||||
add_dependencies(libgtmshr gen_export)
|
add_dependencies(libgtmshr gen_export)
|
||||||
add_dependencies(mumps libgtmshr)
|
add_dependencies(mumps libgtmshr)
|
||||||
|
|
||||||
if(is_encryption_supported)
|
add_library(libgtmcrypt MODULE ${libgtmcrypt_SOURCES})
|
||||||
# Iterate over the list of GPG related libraries
|
set_target_properties(libgtmcrypt PROPERTIES
|
||||||
foreach(gpglib gpg-error gpgme gcrypt)
|
OUTPUT_NAME gtmcrypt
|
||||||
# For each library, we need a new CMake variable, hence GPGLIB_${gpglib}
|
COMPILE_DEFINITIONS USE_GCRYPT
|
||||||
find_library(GPGLIB_${gpglib} NAME ${gpglib} PATHS ${CMAKE_LIBRARY_PATH})
|
LIBRARY_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin
|
||||||
# Append the found library to the list
|
)
|
||||||
set(GPG_LIBRARIES ${GPG_LIBRARIES} ${GPGLIB_${gpglib}})
|
target_link_libraries(libgtmcrypt gpg-error gpgme gcrypt)
|
||||||
endforeach()
|
install(TARGETS libgtmcrypt DESTINATION ${GTM_INSTALL_DIR}/plugin)
|
||||||
|
|
||||||
add_library(libgtmcrypt MODULE ${libgtmcrypt_SOURCES})
|
add_executable(maskpass ${maskpass_SOURCES})
|
||||||
set_target_properties(libgtmcrypt PROPERTIES
|
target_link_libraries(maskpass gpg-error gpgme gcrypt)
|
||||||
OUTPUT_NAME gtmcrypt
|
set_target_properties(maskpass PROPERTIES
|
||||||
COMPILE_DEFINITIONS "USE_GCRYPT -DUSE_AES256CFB"
|
COMPILE_DEFINITIONS USE_GCRYPT
|
||||||
LIBRARY_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin
|
RUNTIME_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin/gtmcrypt
|
||||||
|
)
|
||||||
|
install(TARGETS maskpass DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt)
|
||||||
|
|
||||||
|
foreach(f
|
||||||
|
add_db_key.sh
|
||||||
|
build.sh
|
||||||
|
encrypt_sign_db_key.sh
|
||||||
|
gen_keypair.sh
|
||||||
|
gen_sym_hash.sh
|
||||||
|
gen_sym_key.sh
|
||||||
|
gtmcrypt.tab
|
||||||
|
gtmcrypt_dbk_ref.c
|
||||||
|
gtmcrypt_dbk_ref.h
|
||||||
|
gtmcrypt_interface.h
|
||||||
|
gtmcrypt_pk_ref.c
|
||||||
|
gtmcrypt_pk_ref.h
|
||||||
|
gtmcrypt_ref.c
|
||||||
|
gtmcrypt_ref.h
|
||||||
|
gtmcrypt_sym_ref.h
|
||||||
|
gtmxc_types.h
|
||||||
|
import_and_sign_key.sh
|
||||||
|
install.sh
|
||||||
|
maskpass.c
|
||||||
|
pinentry-gtm.sh
|
||||||
|
pinentry.m
|
||||||
|
pinentry.m
|
||||||
)
|
)
|
||||||
target_link_libraries(libgtmcrypt ${GPG_LIBRARIES})
|
set(f_in "${GTM_SOURCE_DIR}/sr_unix/${f}")
|
||||||
install(TARGETS libgtmcrypt DESTINATION ${GTM_INSTALL_DIR}/plugin)
|
set(f_out "${GTM_BINARY_DIR}/plugin/gtmcrypt/${f}")
|
||||||
|
add_custom_command(
|
||||||
add_executable(maskpass ${maskpass_SOURCES})
|
OUTPUT "${f_out}"
|
||||||
target_link_libraries(maskpass ${GPG_LIBRARIES})
|
DEPENDS "${f_in}"
|
||||||
set_target_properties(maskpass PROPERTIES
|
COMMAND ${CMAKE_COMMAND} -E copy "${f_in}" "${f_out}"
|
||||||
COMPILE_DEFINITIONS USE_GCRYPT
|
|
||||||
RUNTIME_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin/gtmcrypt
|
|
||||||
)
|
)
|
||||||
install(TARGETS maskpass DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt)
|
if("${f}" MATCHES "\\.sh$")
|
||||||
|
set(permissions PERMISSIONS ${install_permissions_script})
|
||||||
foreach(f
|
else()
|
||||||
add_db_key.sh
|
set(permissions "")
|
||||||
build.sh
|
endif()
|
||||||
encrypt_sign_db_key.sh
|
install(FILES "${f_out}" DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt ${permissions})
|
||||||
gen_keypair.sh
|
list(APPEND files_to_place "${f_out}")
|
||||||
gen_sym_hash.sh
|
endforeach()
|
||||||
gen_sym_key.sh
|
|
||||||
gtmcrypt.tab
|
|
||||||
gtmcrypt_dbk_ref.c
|
|
||||||
gtmcrypt_dbk_ref.h
|
|
||||||
gtmcrypt_interface.h
|
|
||||||
gtmcrypt_pk_ref.c
|
|
||||||
gtmcrypt_pk_ref.h
|
|
||||||
gtmcrypt_dbk_ref.c
|
|
||||||
gtmcrypt_dbk_ref.h
|
|
||||||
gtmcrypt_ref.c
|
|
||||||
gtmcrypt_ref.h
|
|
||||||
gtmcrypt_sym_ref.h
|
|
||||||
gtmxc_types.h
|
|
||||||
import_and_sign_key.sh
|
|
||||||
install.sh
|
|
||||||
maskpass.c
|
|
||||||
pinentry-gtm.sh
|
|
||||||
pinentry.m
|
|
||||||
pinentry.m
|
|
||||||
show_install_config.sh
|
|
||||||
)
|
|
||||||
set(f_in "${GTM_SOURCE_DIR}/sr_unix/${f}")
|
|
||||||
set(f_out "${GTM_BINARY_DIR}/plugin/gtmcrypt/${f}")
|
|
||||||
add_custom_command(
|
|
||||||
OUTPUT "${f_out}"
|
|
||||||
DEPENDS "${f_in}"
|
|
||||||
COMMAND ${CMAKE_COMMAND} -E copy "${f_in}" "${f_out}"
|
|
||||||
)
|
|
||||||
if("${f}" MATCHES "\\.sh$")
|
|
||||||
set(permissions PERMISSIONS ${install_permissions_script})
|
|
||||||
else()
|
|
||||||
set(permissions "")
|
|
||||||
endif()
|
|
||||||
install(FILES "${f_out}" DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt ${permissions})
|
|
||||||
list(APPEND files_to_place "${f_out}")
|
|
||||||
endforeach()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
install(TARGETS
|
install(TARGETS
|
||||||
mumps
|
mumps
|
||||||
|
@ -646,7 +615,6 @@ foreach(f
|
||||||
lke.hlp
|
lke.hlp
|
||||||
mumps.hlp
|
mumps.hlp
|
||||||
mupip.hlp
|
mupip.hlp
|
||||||
custom_errors_sample.txt
|
|
||||||
)
|
)
|
||||||
select_file(src ${f})
|
select_file(src ${f})
|
||||||
list(APPEND files ${src})
|
list(APPEND files ${src})
|
||||||
|
@ -717,10 +685,7 @@ endforeach()
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
set(gtm_hlp mumps.hlp)
|
set(gtm_hlp mumps.hlp)
|
||||||
set(gde_hlp gde.hlp)
|
set(gde_hlp gde.hlp)
|
||||||
set(mupip_hlp mupip.hlp)
|
foreach(help gtm gde)
|
||||||
set(dse_hlp dse.hlp)
|
|
||||||
set(lke_hlp lke.hlp)
|
|
||||||
foreach(help gtm gde mupip dse lke)
|
|
||||||
set(CMAKE_CONFIGURABLE_FILE_CONTENT
|
set(CMAKE_CONFIGURABLE_FILE_CONTENT
|
||||||
"Change -segment DEFAULT -block=2048 -file=\$gtm_dist/${help}help.dat
|
"Change -segment DEFAULT -block=2048 -file=\$gtm_dist/${help}help.dat
|
||||||
Change -region DEFAULT -record=1020 -key=255
|
Change -region DEFAULT -record=1020 -key=255
|
||||||
|
|
15
CVS/Entries
15
CVS/Entries
|
@ -1,15 +0,0 @@
|
||||||
/CMakeLists.txt/1.6/Wed Oct 23 03:49:20 2013//
|
|
||||||
/COPYING/1.6/Fri Nov 2 03:00:12 2012//
|
|
||||||
/README/1.21/Wed Oct 23 03:49:20 2013//
|
|
||||||
D/sr_alpha////
|
|
||||||
D/sr_i386////
|
|
||||||
D/sr_linux////
|
|
||||||
D/sr_port////
|
|
||||||
D/sr_port_cm////
|
|
||||||
D/sr_unix////
|
|
||||||
D/sr_unix_cm////
|
|
||||||
D/sr_unix_gnp////
|
|
||||||
D/sr_unix_nsb////
|
|
||||||
D/sr_vvms////
|
|
||||||
D/sr_x86_64////
|
|
||||||
D/sr_x86_regs////
|
|
|
@ -1,15 +0,0 @@
|
||||||
/CMakeLists.txt////*////
|
|
||||||
/COPYING////*////
|
|
||||||
/README////*////
|
|
||||||
D/sr_alpha////////
|
|
||||||
D/sr_i386////////
|
|
||||||
D/sr_linux////////
|
|
||||||
D/sr_port////////
|
|
||||||
D/sr_port_cm////////
|
|
||||||
D/sr_unix////////
|
|
||||||
D/sr_unix_cm////////
|
|
||||||
D/sr_unix_gnp////////
|
|
||||||
D/sr_unix_nsb////////
|
|
||||||
D/sr_vvms////////
|
|
||||||
D/sr_x86_64////////
|
|
||||||
D/sr_x86_regs////////
|
|
|
@ -1,3 +0,0 @@
|
||||||
/CMakeLists.txt////*////
|
|
||||||
/COPYING////*////
|
|
||||||
/README////*////
|
|
|
@ -1,4 +0,0 @@
|
||||||
/CMakeLists.txt/1.6/Wed Oct 23 03:49:20 2013//
|
|
||||||
/COPYING/1.6/Fri Nov 2 03:00:12 2012//
|
|
||||||
/README/1.21/Wed Oct 23 03:49:20 2013//
|
|
||||||
D
|
|
|
@ -1 +0,0 @@
|
||||||
gtm
|
|
|
@ -1,6 +1,6 @@
|
||||||
All software in this package is part of FIS GT.M (http://fis-gtm.com)
|
All software in this package is part of FIS GT.M (http://fis-gtm.com)
|
||||||
which is Copyright 2013 Fidelity Information Services, Inc., and
|
which is Copyright 2012 Fidelity Information Services, Inc., and
|
||||||
provided to you under the terms of a license. If there is a COPYING
|
provided to you under the terms of a license. If there is a COPYING
|
||||||
file included in this package, it contains the terms of the license under
|
file included in this package, it contains the terms of the license under
|
||||||
which the package is provided to you. If there is not a COPYING file in
|
which the package is provided to you. If there is not a COPYING file in
|
||||||
the package, you must ensure that your use of FIS GT.M complies with the
|
the package, you must ensure that your use of FIS GT.M complies with the
|
||||||
|
@ -22,68 +22,49 @@ To build GT.M for Linux, do the following steps:
|
||||||
Install developement libraries libelf, zlib, libicu, libgpgme, libgpg-error,
|
Install developement libraries libelf, zlib, libicu, libgpgme, libgpg-error,
|
||||||
libgcrypt.
|
libgcrypt.
|
||||||
|
|
||||||
Ensure that your locale settings are correct, otherwise you will see
|
|
||||||
GTM-E-NONUTF8LOCALE messages. Refer the Messages and Recovery Procedures
|
|
||||||
Manual if you do encounter these messages.
|
|
||||||
|
|
||||||
[optional] The GT.M source tarball includes pre-generated files. To generate
|
[optional] The GT.M source tarball includes pre-generated files. To generate
|
||||||
these files requires a binary distribution of GT.M. You can download GT.M
|
these files requires a binary distribution of GT.M. You can download GT.M
|
||||||
from http://sourceforge.net/projects/fis-gtm/ Unpack the tar file and run
|
from http://sourceforge.net/projects/fis-gtm/ Unpack the tar file and run
|
||||||
the configure script as root. Note: the tar file unpacks everything into
|
the configure script as root. Note: the tar file unpacks everything into
|
||||||
your current working directory, not a new subdirectory. The Linux Standard
|
your current working directory, not a new subdirectory. The Linux Standard
|
||||||
Base (LSB) install path for GT.M V6.0-003 is /opt/fis-gtm/V6.0-003_i686 or
|
Base (LSB) install path for GT.M V60000 is /opt/lsb-gtm/V6.0-000_i686 or
|
||||||
/opt/fis-gtm/V6.0-003_x8664. These instrcutions are written using x8664, please
|
/opt/lsb-gtm/V6.0-000_x8664.
|
||||||
use i686 as necessary.
|
$ tar xfz gtm_V60000_linux_i686_pro.tar.gz
|
||||||
|
|
||||||
$ tar xfz gtm_V60003_linux_x8664_pro.tar.gz
|
|
||||||
|
|
||||||
# Note down the installation path for use with cmake below
|
|
||||||
|
|
||||||
$ sudo sh ./configure
|
$ sudo sh ./configure
|
||||||
|
|
||||||
2. Unpack the GT.M sources
|
# Provide the directory path to cmake using
|
||||||
The GT.M source tarball extracts to a directory with the version number in
|
# -D GTM_DIST:PATH=$gtm_dist
|
||||||
the name, fis-gtm-V6.0-003
|
|
||||||
$ tar xfz fis-gtm-V6.0-003.tar.gz
|
|
||||||
$ cd fis-gtm-V6.0-003
|
|
||||||
|
|
||||||
You should find this README, LICENSE, COPYING and CMakeLists.txt file and
|
2. Unpack the GT.M sources
|
||||||
sr_* source directories.
|
Change directory in the directory that you will place the GT.M source,
|
||||||
|
here after referred to as <gtm-directory>.
|
||||||
|
$ mkdir <gtm-directory>
|
||||||
|
$ cd <gtm-directory>
|
||||||
|
$ tar xfz gtm_V60000_linux_i686_src.tar.gz
|
||||||
|
|
||||||
|
You should find this README, COPYING and CMakeLitst.txt file and sr_* source
|
||||||
|
directories.
|
||||||
|
|
||||||
3. Building GT.M -
|
3. Building GT.M -
|
||||||
<fis-gtm-build> can be a sub directory of the source directory,
|
<gtm-builddir> can be a sub directory of the source directory <gtm-directory>
|
||||||
fis-gtm-V6.0-003, or any other valid path.
|
|
||||||
|
$ mkdir <gtm-builddir>
|
||||||
|
$ cd <gtm-builddir>
|
||||||
|
$ cmake <gtm-directory>
|
||||||
|
|
||||||
$ mkdir <fis-gtm-build>
|
|
||||||
$ cd <fis-gtm-build>
|
|
||||||
|
|
||||||
# [optional] If you installed GT.M, provide the directory path to cmake
|
|
||||||
# -D GTM_DIST:PATH=$gtm_dist
|
|
||||||
#
|
|
||||||
# By default the build produces release versions of GT.M. To build a debug
|
# By default the build produces release versions of GT.M. To build a debug
|
||||||
# version of GT.M supply the following parameter to cmake
|
# version of GT.M supply the following parameter to cmake
|
||||||
# -D CMAKE_BUILD_TYPE=DEBUG
|
# -D CMAKE_BUILD_TYPE=DEBUG
|
||||||
#
|
#
|
||||||
# Note that the cmake install does not create the final installed GT.M.
|
# Note that the default install location is driven by CMAKE_INSTALL_PREFIX.
|
||||||
# Instead, it stages GT.M for distribution. Change the CMAKE_INSTALL_PREFIX
|
# You can change this when executing cmake
|
||||||
# to place the staged files in a local directory. To install GT.M, you must
|
# -D CMAKE_INSTALL_PREFIX:PATH=/opt/lsb-gtm
|
||||||
# cd to that installed directory and execute the configure script.
|
|
||||||
#
|
#
|
||||||
# -D CMAKE_INSTALL_PREFIX:PATH=${PWD}/package
|
|
||||||
#
|
|
||||||
$ cmake <path to>/fis-gtm-V6.0-003 -D CMAKE_INSTALL_PREFIX:PATH=${PWD}/package
|
|
||||||
|
|
||||||
$ make
|
$ make
|
||||||
|
|
||||||
$ make install
|
$ make install
|
||||||
|
|
||||||
$ cd package/lib/fis-gtm/V6.0-003_x86_64
|
|
||||||
|
|
||||||
# Now you are ready to install GT.M. Answer a few questions and install it.
|
|
||||||
# The recommended installation path is /opt/fis-gtm/V6.0-003_x86_64
|
|
||||||
|
|
||||||
$ sudo ./configure
|
|
||||||
|
|
||||||
$ make clean
|
$ make clean
|
||||||
|
|
||||||
4. Packaging GT.M -
|
4. Packaging GT.M -
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
/axp.h/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/cacheflush.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/double2s.c/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/emit_code_sp.c/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/emit_code_sp.h/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/follow.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/gtm_dump.c/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/inst_flush.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/mint2mval.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/movq.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/mval2bool.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/mval2mint.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/objlangdefs.h/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/op_call.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/op_equnul.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/op_forlcldo.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/op_linestart.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/op_pattern.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/op_sorts_after.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/pseudo_ret.m64/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
/zbreaksp.h/1.1/Wed Oct 23 03:49:21 2013//
|
|
||||||
D
|
|
|
@ -1,21 +0,0 @@
|
||||||
/axp.h////*////
|
|
||||||
/cacheflush.m64////*////
|
|
||||||
/double2s.c////*////
|
|
||||||
/emit_code_sp.c////*////
|
|
||||||
/emit_code_sp.h////*////
|
|
||||||
/follow.m64////*////
|
|
||||||
/gtm_dump.c////*////
|
|
||||||
/inst_flush.m64////*////
|
|
||||||
/mint2mval.m64////*////
|
|
||||||
/movq.m64////*////
|
|
||||||
/mval2bool.m64////*////
|
|
||||||
/mval2mint.m64////*////
|
|
||||||
/objlangdefs.h////*////
|
|
||||||
/op_call.m64////*////
|
|
||||||
/op_equnul.m64////*////
|
|
||||||
/op_forlcldo.m64////*////
|
|
||||||
/op_linestart.m64////*////
|
|
||||||
/op_pattern.m64////*////
|
|
||||||
/op_sorts_after.m64////*////
|
|
||||||
/pseudo_ret.m64////*////
|
|
||||||
/zbreaksp.h////*////
|
|
|
@ -1 +0,0 @@
|
||||||
gtm/sr_alpha
|
|
|
@ -1 +0,0 @@
|
||||||
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm
|
|
133
sr_alpha/axp.h
133
sr_alpha/axp.h
|
@ -1,133 +0,0 @@
|
||||||
/****************************************************************
|
|
||||||
* *
|
|
||||||
* Copyright 2001, 2002 Sanchez Computer Associates, Inc. *
|
|
||||||
* *
|
|
||||||
* This source code contains the intellectual property *
|
|
||||||
* of its copyright holder(s), and is made available *
|
|
||||||
* under a license. If you do not know the terms of *
|
|
||||||
* the license, please stop and do not read further. *
|
|
||||||
* *
|
|
||||||
****************************************************************/
|
|
||||||
|
|
||||||
/* axp.h - AXP machine instruction information.
|
|
||||||
*
|
|
||||||
* Requires "axp_registers.h" and "axp_gtm_registers.h".
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
/* Machine instruction templates. */
|
|
||||||
|
|
||||||
#define ALPHA_INS_ADDL ((unsigned)0x10 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BEQ ((unsigned)0x39 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BGE ((unsigned)0x3e << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BGT ((unsigned)0x3f << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BIS ((unsigned)0x11 << ALPHA_SHIFT_OP | 0x20 << ALPHA_SHIFT_FUNC)
|
|
||||||
#define ALPHA_INS_BLE ((unsigned)0x3b << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BLT ((unsigned)0x3a << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BLBC ((unsigned)0x38 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BLBS ((unsigned)0x3c << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BNE ((unsigned)0x3d << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BSR ((unsigned)0x34 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_BR ((unsigned)0x30 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_JMP ((unsigned)0x1a << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_JSR ((unsigned)0x1a << ALPHA_SHIFT_OP | 1 << ALPHA_SHIFT_BRANCH_FUNC)
|
|
||||||
#define ALPHA_INS_LDA ((unsigned)0x08 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_LDAH ((unsigned)0x09 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_LDL ((unsigned)0x28 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_LDQ ((unsigned)0x29 << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_RET ((unsigned)0x1a << ALPHA_SHIFT_OP | 2 << ALPHA_SHIFT_BRANCH_FUNC)
|
|
||||||
#define ALPHA_INS_STL ((unsigned)0x2c << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_STQ ((unsigned)0x2d << ALPHA_SHIFT_OP)
|
|
||||||
#define ALPHA_INS_SUBL ((unsigned)0x10 << ALPHA_SHIFT_OP | 0x9 << ALPHA_SHIFT_FUNC)
|
|
||||||
#define ALPHA_INS_SUBQ ((unsigned)0x10 << ALPHA_SHIFT_OP | 0x29 << ALPHA_SHIFT_FUNC)
|
|
||||||
|
|
||||||
|
|
||||||
/* Bit offsets to instruction fields. */
|
|
||||||
|
|
||||||
#define ALPHA_SHIFT_OP 26
|
|
||||||
#define ALPHA_SHIFT_BRANCH_FUNC 14
|
|
||||||
#define ALPHA_SHIFT_FUNC 5
|
|
||||||
#define ALPHA_SHIFT_LITERAL 13
|
|
||||||
#define ALPHA_SHIFT_RA 21
|
|
||||||
#define ALPHA_SHIFT_RB 16
|
|
||||||
#define ALPHA_SHIFT_RC 0
|
|
||||||
#define ALPHA_SHIFT_BRANCH_DISP 0
|
|
||||||
#define ALPHA_SHIFT_DISP 0
|
|
||||||
|
|
||||||
|
|
||||||
/* Bit masks for instruction fields. */
|
|
||||||
|
|
||||||
#define ALPHA_BIT_LITERAL (1 << 12)
|
|
||||||
#define ALPHA_MASK_BRANCH_DISP 0x1fffff
|
|
||||||
#define ALPHA_MASK_BRANCH_FUNC 0xc00000
|
|
||||||
#define ALPHA_MASK_DISP 0xffff
|
|
||||||
#define ALPHA_MASK_FUNC 0x7f
|
|
||||||
#define ALPHA_MASK_LITERAL 0xff
|
|
||||||
#define ALPHA_MASK_OP 0x3f
|
|
||||||
#define ALPHA_MASK_REG 0x1f
|
|
||||||
|
|
||||||
|
|
||||||
/* Alternative assembler mnemonics for machine instruction. */
|
|
||||||
|
|
||||||
#define ALPHA_INS_CLRQ (ALPHA_INS_BIS \
|
|
||||||
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RA) \
|
|
||||||
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RB))
|
|
||||||
#define ALPHA_INS_LPC (ALPHA_INS_BR \
|
|
||||||
| (GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RA))
|
|
||||||
#define ALPHA_INS_MOVE (ALPHA_INS_BIS \
|
|
||||||
| ALPHA_REG_ZERO << ALPHA_SHIFT_RB)
|
|
||||||
#define ALPHA_INS_NOP (ALPHA_INS_BIS \
|
|
||||||
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RA) \
|
|
||||||
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RB) \
|
|
||||||
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RC))
|
|
||||||
|
|
||||||
|
|
||||||
/* Construction forms. */
|
|
||||||
|
|
||||||
#define ALPHA_BRA(op,ra,disp) ((op) | ((ra) << ALPHA_SHIFT_RA) | (disp)&ALPHA_MASK_BRANCH_DISP)
|
|
||||||
#define ALPHA_JMP(op,ra,rb) ((op) | ((ra) << ALPHA_SHIFT_RA) | ((rb) << ALPHA_SHIFT_RB))
|
|
||||||
#define ALPHA_LIT(op,ra,lit,rc) ((op) | ((ra) << ALPHA_SHIFT_RA) \
|
|
||||||
| (((lit)&ALPHA_MASK_LITERAL) << ALPHA_SHIFT_LITERAL) \
|
|
||||||
| ALPHA_BIT_LITERAL \
|
|
||||||
| ((rc) << ALPHA_SHIFT_RC))
|
|
||||||
#define ALPHA_MEM(op,ra,rb,disp)((op) | ((ra) << ALPHA_SHIFT_RA) | ((rb) << ALPHA_SHIFT_RB) | (disp)&ALPHA_MASK_DISP)
|
|
||||||
#define ALPHA_OPR(op,ra,rb,rc) ((op) | ((ra) << ALPHA_SHIFT_RA) | ((rb) << ALPHA_SHIFT_RB) | ((rc) << ALPHA_SHIFT_RC))
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
#define GET_OPCODE(ains) ((ains >> ALPHA_SHIFT_OP) & ALPHA_MASK_OP)
|
|
||||||
#define GET_RA(ains) ((ains >> ALPHA_SHIFT_RA) & ALPHA_MASK_REG)
|
|
||||||
#define GET_RB(ains) ((ains >> ALPHA_SHIFT_RB) & ALPHA_MASK_REG)
|
|
||||||
#define GET_RC(ains) ((ains >> ALPHA_SHIFT_RC) & ALPHA_MASK_REG)
|
|
||||||
#define GET_MEMDISP(ains) ((ains >> ALPHA_SHIFT_DISP) & ALPHA_MASK_DISP)
|
|
||||||
#define GET_BRDISP(ains) ((ains >> ALPHA_SHIFT_BRANCH_DISP) & ALPHA_MASK_BRANCH_DISP)
|
|
||||||
#define GET_FUNC(ains) ((ains >> ALPHA_SHIFT_FUNC) & ALPHA_MASK_FUNC)
|
|
||||||
|
|
||||||
#define ADDL_INST "addl"
|
|
||||||
#define SUBL_INST "subl"
|
|
||||||
#define SUBQ_INST "subq"
|
|
||||||
#define BIS_INST "bis"
|
|
||||||
#define JSR_INST "jsr"
|
|
||||||
#define RET_INST "ret"
|
|
||||||
#define JMP_INST "jmp"
|
|
||||||
#define LDA_INST "lda"
|
|
||||||
#define LDAH_INST "ldah"
|
|
||||||
#define LDL_INST "ldl"
|
|
||||||
#define LDQ_INST "ldq"
|
|
||||||
#define STL_INST "stl"
|
|
||||||
#define STQ_INST "stq"
|
|
||||||
#define BR_INST "br"
|
|
||||||
#define BSR_INST "bsr"
|
|
||||||
#define BLBC_INST "blbc"
|
|
||||||
#define BEQ_INST "beq"
|
|
||||||
#define BLT_INST "blt"
|
|
||||||
#define BLE_INST "ble"
|
|
||||||
#define BLBS_INST "blbs"
|
|
||||||
#define BNE_INST "bne"
|
|
||||||
#define BGE_INST "bge"
|
|
||||||
#define BGT_INST "bgt"
|
|
||||||
#define CONSTANT "Constant 0x"
|
|
||||||
|
|
||||||
/* Space for op_code to be in */
|
|
||||||
#define OPSPC 7
|
|
||||||
#endif
|
|
|
@ -1,27 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title cacheflush - flush data and instruction caches
|
|
||||||
|
|
||||||
; cacheflush
|
|
||||||
;
|
|
||||||
; entry:
|
|
||||||
; a0 (r16) address of start of region to flush
|
|
||||||
; a1 (r17) length (in bytes) of region to flush
|
|
||||||
; a2 (r18) flag indicating which region to flush (not used on AXP)
|
|
||||||
|
|
||||||
$routine name=cacheflush, entry=cacheflush_ca, kind=null
|
|
||||||
|
|
||||||
imb
|
|
||||||
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine name=cacheflush
|
|
|
@ -1,158 +0,0 @@
|
||||||
/****************************************************************
|
|
||||||
* *
|
|
||||||
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
|
||||||
* *
|
|
||||||
* This source code contains the intellectual property *
|
|
||||||
* of its copyright holder(s), and is made available *
|
|
||||||
* under a license. If you do not know the terms of *
|
|
||||||
* the license, please stop and do not read further. *
|
|
||||||
* *
|
|
||||||
****************************************************************/
|
|
||||||
|
|
||||||
#include "mdef.h"
|
|
||||||
#include "stringpool.h"
|
|
||||||
|
|
||||||
#define MAX_NUM_SIZE 64
|
|
||||||
|
|
||||||
GBLREF spdesc stringpool;
|
|
||||||
|
|
||||||
static char pot_index [256] =
|
|
||||||
{
|
|
||||||
-78, 78, -77, 77, 77, 77, -76, 76, 76, -75, 75, 75, -74, 74, 74, 74,
|
|
||||||
-73, 73, 73, -72, 72, 72, -71, 71, 71, 71, -70, 70, 70, -69, 69, 69,
|
|
||||||
-68, 68, 68, -67, 67, 67, 67, -66, 66, 66, -65, 65, 65, -64, 64, 64,
|
|
||||||
64, -63, 63, 63, -62, 62, 62, -61, 61, 61, 61, -60, 60, 60, -59, 59,
|
|
||||||
59, -58, 58, 58, 58, -57, 57, 57, -56, 56, 56, -55, 55, 55, 55, -54,
|
|
||||||
54, 54, -53, 53, 53, -52, 52, 52, 52, -51, 51, 51, -50, 50, 50, -49,
|
|
||||||
49, 49, 49, -48, 48, 48, -47, 47, 47, -46, 46, 46, 46, -45, 45, 45,
|
|
||||||
-44, 44, 44, -43, 43, 43, 43, -42, 42, 42, -41, 41, 41, -40, 40, 40,
|
|
||||||
40, -39, 39, 39, -38, 38, 38, -37, 37, 37, -36, 36, 36, 36, -35, 35,
|
|
||||||
35, -34, 34, 34, -33, 33, 33, 33, -32, 32, 32, -31, 31, 31, -30, 30,
|
|
||||||
30, 30, -29, 29, 29, -28, 28, 28, -27, 27, 27, 27, -26, 26, 26, -25,
|
|
||||||
25, 25, -24, 24, 24, 24, -23, 23, 23, -22, 22, 22, -21, 21, 21, 21,
|
|
||||||
-20, 20, 20, -19, 19, 19, -18, 18, 18, 18, -17, 17, 17, -16, 16, 16,
|
|
||||||
-15, 15, 15, 15, -14, 14, 14, -13, 13, 13, -12, 12, 12, 12, -11, 11,
|
|
||||||
11, -10, 10, 10, -9, 9, 9, -8, 8, 8, 8, -7, 7, 7, -6, 6,
|
|
||||||
6, -5, 5, 5, 5, -4, 4, 4, -3, 3, 3, -2, 2, 2, 2, -1
|
|
||||||
};
|
|
||||||
|
|
||||||
static double pot [79] =
|
|
||||||
{
|
|
||||||
1.701411834604692e+38 + 2.83e+22,
|
|
||||||
1e+38, 1e+37, 1e+36, 1e+35, 1e+34, 1e+33, 1e+32,
|
|
||||||
1e+31, 1e+30, 1e+29, 1e+28, 1e+27, 1e+26, 1e+25, 1e+24,
|
|
||||||
1e+23, 1e+22, 1e+21, 1e+20, 1e+19, 1e+18, 1e+17, 1e+16,
|
|
||||||
1e+15, 1e+14, 1e+13, 1e+12, 1e+11, 1e+10, 1e+9, 1e+8,
|
|
||||||
1e+7, 1e+6, 1e+5, 1e+4, 1e+3, 1e+2, 1e+1, 1.0,
|
|
||||||
1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8,
|
|
||||||
1e-9, 1e-10, 1e-11, 1e-12, 1e-13, 1e-14, 1e-15, 1e-16,
|
|
||||||
1e-17, 1e-18, 1e-19, 1e-20, 1e-21, 1e-22, 1e-23, 1e-24,
|
|
||||||
1e-25, 1e-26, 1e-27, 1e-28, 1e-29, 1e-30, 1e-31, 1e-32,
|
|
||||||
1e-33, 1e-34, 1e-35, 1e-36, 1e-37, 1e-38, 0
|
|
||||||
};
|
|
||||||
|
|
||||||
#define POT_UNITY 39 /* Subscript of pot: pot[POT_UNITY] == 1.0 */
|
|
||||||
|
|
||||||
|
|
||||||
struct D_float /* Format of D-floating point datum */
|
|
||||||
{
|
|
||||||
unsigned int : 7; /* fraction, bits 0:6 */
|
|
||||||
unsigned int exp : 8; /* exponent, bits 7:14 */
|
|
||||||
unsigned int sign : 1; /* sign, bit 15 */
|
|
||||||
unsigned int : 16; /* fraction, bits 16:31 */
|
|
||||||
unsigned int : 32; /* fraction, bits 32:63 */
|
|
||||||
};
|
|
||||||
|
|
||||||
void double2s (double *dp, mval *v)
|
|
||||||
{
|
|
||||||
double d = *dp;
|
|
||||||
char *p, *q;
|
|
||||||
int i, j, k;
|
|
||||||
|
|
||||||
ENSURE_STP_FREE_SPACE(MAX_NUM_SIZE);
|
|
||||||
assert (stringpool.free >= stringpool.base);
|
|
||||||
v->mvtype = MV_STR;
|
|
||||||
p = v->str.addr
|
|
||||||
= (char *)stringpool.free;
|
|
||||||
|
|
||||||
if (d == 0.0)
|
|
||||||
*p++ = '0';
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (d < 0.0)
|
|
||||||
{
|
|
||||||
*p++ = '-'; /* plug in a minus sign */
|
|
||||||
d = -d; /* but make d positive */
|
|
||||||
}
|
|
||||||
|
|
||||||
i = pot_index[((struct D_float *)dp)->exp];
|
|
||||||
if (i < 0)
|
|
||||||
{
|
|
||||||
i = -i;
|
|
||||||
if (d < pot[i])
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
i = POT_UNITY + 1 - i;
|
|
||||||
|
|
||||||
/* "Normalize" the number; i.e. adjust it to be between 0.0 and 1.0 */
|
|
||||||
d *= pot[i + POT_UNITY];
|
|
||||||
|
|
||||||
if (d < 5e-16)
|
|
||||||
/* Call it zero */
|
|
||||||
*p++ = '0';
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Round the sixteenth digit */
|
|
||||||
d += 5e-16;
|
|
||||||
|
|
||||||
if (d >= 1.0)
|
|
||||||
{
|
|
||||||
/* Readjust it to be between 0.0 and 1.0 */
|
|
||||||
d /= 10.0;
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
|
|
||||||
q = p; /* q will point to the last non-zero byte */
|
|
||||||
j = i;
|
|
||||||
|
|
||||||
if (i <= 0)
|
|
||||||
{
|
|
||||||
*p++ = '.';
|
|
||||||
for (; i < 0; ++i)
|
|
||||||
*p++ = '0';
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 15; i > 0; --i)
|
|
||||||
{
|
|
||||||
/* Multiply the value by ten, put the integer portion
|
|
||||||
of the result into k (0 <= k <= 9), and replace the
|
|
||||||
value with the fractional portion of the result */
|
|
||||||
k = d *= 10.0;
|
|
||||||
d -= k;
|
|
||||||
|
|
||||||
*p++ = '0' + k;
|
|
||||||
|
|
||||||
if (k > 0)
|
|
||||||
q = p;
|
|
||||||
if (--j == 0)
|
|
||||||
{
|
|
||||||
q = p;
|
|
||||||
*p++ = '.';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (j > 0)
|
|
||||||
do
|
|
||||||
*p++ = '0';
|
|
||||||
while (--j > 0);
|
|
||||||
else
|
|
||||||
p = q;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
v->str.len = p - (char *)stringpool.free;
|
|
||||||
stringpool.free = (unsigned char *)p;
|
|
||||||
assert(stringpool.free <= stringpool.top);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
|
@ -1,278 +0,0 @@
|
||||||
/****************************************************************
|
|
||||||
* *
|
|
||||||
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
|
||||||
* *
|
|
||||||
* This source code contains the intellectual property *
|
|
||||||
* of its copyright holder(s), and is made available *
|
|
||||||
* under a license. If you do not know the terms of *
|
|
||||||
* the license, please stop and do not read further. *
|
|
||||||
* *
|
|
||||||
****************************************************************/
|
|
||||||
|
|
||||||
#include "mdef.h"
|
|
||||||
|
|
||||||
#include "gtm_string.h"
|
|
||||||
|
|
||||||
#include "cgp.h"
|
|
||||||
#include "compiler.h"
|
|
||||||
#include <rtnhdr.h>
|
|
||||||
#include "list_file.h"
|
|
||||||
#include <emit_code.h>
|
|
||||||
|
|
||||||
GBLREF uint4 code_buf[]; /* Instruction buffer */
|
|
||||||
GBLREF int code_idx; /* Index into code_buf */
|
|
||||||
GBLREF char cg_phase; /* Current compiler phase */
|
|
||||||
GBLREF int4 curr_addr;
|
|
||||||
#ifdef DEBUG
|
|
||||||
GBLREF unsigned char *obpt; /* output buffer index */
|
|
||||||
GBLREF unsigned char outbuf[]; /* assembly language output buffer */
|
|
||||||
static unsigned int ains; /* assembler instruction (binary) */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Used by emit_base_offset to extract offset parts */
|
|
||||||
int alpha_adjusted_upper(int offset)
|
|
||||||
{
|
|
||||||
int upper;
|
|
||||||
|
|
||||||
upper = (offset >> 16) & 0xFFFF;
|
|
||||||
if (offset & 0x8000)
|
|
||||||
upper = (upper + 1) & 0xFFFF;
|
|
||||||
|
|
||||||
return upper;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void emit_base_offset(int base, int offset)
|
|
||||||
{
|
|
||||||
/* NOTE: emit_base_offset does not advance past its last
|
|
||||||
generated instruction because that instruction is
|
|
||||||
incomplete; it contains only a base and offset -- the
|
|
||||||
rt and opcode field are left empty for use by the caller. */
|
|
||||||
int upper, low, source;
|
|
||||||
|
|
||||||
switch (cg_phase)
|
|
||||||
{
|
|
||||||
#ifdef DEBUG
|
|
||||||
case CGP_ASSEMBLY:
|
|
||||||
#endif
|
|
||||||
case CGP_ADDR_OPT:
|
|
||||||
case CGP_APPROX_ADDR:
|
|
||||||
case CGP_MACHINE:
|
|
||||||
assert(base >= 0 && base <= 31);
|
|
||||||
source = base;
|
|
||||||
upper = alpha_adjusted_upper(offset);
|
|
||||||
|
|
||||||
if (0 != upper)
|
|
||||||
{
|
|
||||||
code_buf[code_idx++] = ALPHA_INS_LDAH
|
|
||||||
| (GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RA)
|
|
||||||
| (source << ALPHA_SHIFT_RB)
|
|
||||||
| (upper & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP;
|
|
||||||
source = GTM_REG_CODEGEN_TEMP;
|
|
||||||
}
|
|
||||||
low = offset & 0xFFFF;
|
|
||||||
code_buf[code_idx] = source << ALPHA_SHIFT_RB
|
|
||||||
| (low & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
GTMASSERT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
void fmt_ra()
|
|
||||||
{
|
|
||||||
*obpt++ = 'r';
|
|
||||||
obpt = i2asc(obpt, GET_RA(ains));
|
|
||||||
}
|
|
||||||
void fmt_ra_rb()
|
|
||||||
{
|
|
||||||
fmt_ra();
|
|
||||||
*obpt++ = ',';
|
|
||||||
*obpt++;
|
|
||||||
*obpt++ = 'r';
|
|
||||||
obpt = i2asc(obpt, GET_RB(ains));
|
|
||||||
}
|
|
||||||
void fmt_ra_rb_rc()
|
|
||||||
{
|
|
||||||
fmt_ra_rb();
|
|
||||||
*obpt++ = ',';
|
|
||||||
*obpt++;
|
|
||||||
*obpt++ = 'r';
|
|
||||||
obpt = i2asc(obpt, GET_RC(ains));
|
|
||||||
}
|
|
||||||
void fmt_ra_mem()
|
|
||||||
{
|
|
||||||
fmt_ra();
|
|
||||||
*obpt++ = ',';
|
|
||||||
obpt++;
|
|
||||||
*obpt++ = '0';
|
|
||||||
*obpt++ = 'x';
|
|
||||||
obpt += i2hex_nofill(GET_MEMDISP(ains), obpt, 6);
|
|
||||||
*obpt++ = '(';
|
|
||||||
*obpt++ = 'r';
|
|
||||||
obpt = i2asc(obpt, GET_RB(ains));
|
|
||||||
*obpt++ = ')';
|
|
||||||
}
|
|
||||||
void fmt_ra_brdisp()
|
|
||||||
{
|
|
||||||
fmt_ra();
|
|
||||||
*obpt++ = ',';
|
|
||||||
obpt++;
|
|
||||||
*obpt++ = '0';
|
|
||||||
*obpt++ = 'x';
|
|
||||||
obpt += i2hex_nofill(GET_BRDISP(ains) * 4, obpt, 6);
|
|
||||||
}
|
|
||||||
void format_machine_inst(void)
|
|
||||||
{
|
|
||||||
int instindx;
|
|
||||||
|
|
||||||
for (instindx = 0; instindx < code_idx; instindx++)
|
|
||||||
{
|
|
||||||
list_chkpage();
|
|
||||||
obpt = &outbuf[0];
|
|
||||||
memset(obpt, SP, ASM_OUT_BUFF);
|
|
||||||
obpt += 10;
|
|
||||||
i2hex((curr_addr - SIZEOF(rhdtyp)), (uchar_ptr_t)obpt, 8);
|
|
||||||
curr_addr += 4;
|
|
||||||
obpt += 10;
|
|
||||||
i2hex(code_buf[instindx], (uchar_ptr_t)obpt, 8);
|
|
||||||
obpt += 10;
|
|
||||||
ains = code_buf[instindx];
|
|
||||||
switch(GET_OPCODE(ains))
|
|
||||||
{
|
|
||||||
case 0x8:
|
|
||||||
memcpy(obpt, LDA_INST, SIZEOF(LDA_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_mem();
|
|
||||||
break;
|
|
||||||
case 0x9:
|
|
||||||
memcpy(obpt, LDAH_INST, SIZEOF(LDAH_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_mem();
|
|
||||||
break;
|
|
||||||
case 0x10:
|
|
||||||
/* Note opcodes 0x10, 0x11, have overlapping functions but none that we generate
|
|
||||||
so we can combine their disassembly.
|
|
||||||
*/
|
|
||||||
case 0x11:
|
|
||||||
switch(GET_FUNC(ains))
|
|
||||||
{
|
|
||||||
case 0x0: /* main opcode 0x10 */
|
|
||||||
memcpy(obpt, ADDL_INST, SIZEOF(ADDL_INST) - 1);
|
|
||||||
break;
|
|
||||||
case 0x9: /* main opcode 0x10 */
|
|
||||||
memcpy(obpt, SUBL_INST, SIZEOF(SUBL_INST) - 1);
|
|
||||||
break;
|
|
||||||
case 0x29: /* main opcode 0x10 */
|
|
||||||
memcpy(obpt, SUBQ_INST, SIZEOF(SUBQ_INST) - 1);
|
|
||||||
break;
|
|
||||||
case 0x20: /* main opcode 0x11 */
|
|
||||||
memcpy(obpt, BIS_INST, SIZEOF(BIS_INST) - 1);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
GTMASSERT;
|
|
||||||
}
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_rb_rc();
|
|
||||||
break;
|
|
||||||
case 0x1a:
|
|
||||||
switch(GET_MEMDISP(ains) & 0x3)
|
|
||||||
{
|
|
||||||
case 0x0:
|
|
||||||
memcpy(obpt, JMP_INST, SIZEOF(JMP_INST) - 1);
|
|
||||||
break;
|
|
||||||
case 0x1:
|
|
||||||
memcpy(obpt, JSR_INST, SIZEOF(JSR_INST) - 1);
|
|
||||||
break;
|
|
||||||
case 0x2:
|
|
||||||
memcpy(obpt, RET_INST, SIZEOF(RET_INST) - 1);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
GTMASSERT;
|
|
||||||
}
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_rb();
|
|
||||||
break;
|
|
||||||
case 0x28:
|
|
||||||
memcpy(obpt, LDL_INST, SIZEOF(LDL_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_mem();
|
|
||||||
break;
|
|
||||||
case 0x29:
|
|
||||||
memcpy(obpt, LDQ_INST, SIZEOF(LDQ_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_mem();
|
|
||||||
break;
|
|
||||||
case 0x2c:
|
|
||||||
memcpy(obpt, STL_INST, SIZEOF(STL_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_mem();
|
|
||||||
break;
|
|
||||||
case 0x2d:
|
|
||||||
memcpy(obpt, STQ_INST, SIZEOF(STQ_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_mem();
|
|
||||||
break;
|
|
||||||
case 0x30:
|
|
||||||
memcpy(obpt, BR_INST, SIZEOF(BR_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x34:
|
|
||||||
memcpy(obpt, BSR_INST, SIZEOF(BSR_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x38:
|
|
||||||
memcpy(obpt, BLBC_INST, SIZEOF(BLBC_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x39:
|
|
||||||
memcpy(obpt, BEQ_INST, SIZEOF(BEQ_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x3a:
|
|
||||||
memcpy(obpt, BLT_INST, SIZEOF(BLT_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x3b:
|
|
||||||
memcpy(obpt, BLE_INST, SIZEOF(BLE_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x3c:
|
|
||||||
memcpy(obpt, BLBS_INST, SIZEOF(BLBS_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x3d:
|
|
||||||
memcpy(obpt, BNE_INST, SIZEOF(BNE_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x3e:
|
|
||||||
memcpy(obpt, BGE_INST, SIZEOF(BGE_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
case 0x3f:
|
|
||||||
memcpy(obpt, BGT_INST, SIZEOF(BGT_INST) - 1);
|
|
||||||
obpt += OPSPC;
|
|
||||||
fmt_ra_brdisp();
|
|
||||||
break;
|
|
||||||
default: /* Not an instruction but a constant */
|
|
||||||
memcpy(obpt, CONSTANT, SIZEOF(CONSTANT) - 1);
|
|
||||||
obpt += SIZEOF(CONSTANT) - 1;
|
|
||||||
i2hex(ains, obpt, 8);
|
|
||||||
obpt += 8;
|
|
||||||
}
|
|
||||||
emit_eoi();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,206 +0,0 @@
|
||||||
/****************************************************************
|
|
||||||
* *
|
|
||||||
* Copyright 2003, 2009 Fidelity Information Services, Inc *
|
|
||||||
* *
|
|
||||||
* This source code contains the intellectual property *
|
|
||||||
* of its copyright holder(s), and is made available *
|
|
||||||
* under a license. If you do not know the terms of *
|
|
||||||
* the license, please stop and do not read further. *
|
|
||||||
* *
|
|
||||||
****************************************************************/
|
|
||||||
|
|
||||||
#ifndef EMIT_CODE_SP_INCLUDED
|
|
||||||
#define EMIT_CODE_SP_INCLUDED
|
|
||||||
|
|
||||||
#include "axp_registers.h"
|
|
||||||
#include "axp_gtm_registers.h"
|
|
||||||
#include "axp.h"
|
|
||||||
|
|
||||||
void emit_base_offset(int base, int offset);
|
|
||||||
int alpha_adjusted_upper(int offset);
|
|
||||||
|
|
||||||
#ifdef DEBUG
|
|
||||||
void format_machine_inst(void);
|
|
||||||
void fmt_ra(void);
|
|
||||||
void fmt_ra_rb(void);
|
|
||||||
void fmt_ra_rb_rc(void);
|
|
||||||
void fmt_ra_mem(void);
|
|
||||||
void fmt_ra_brdisp(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define INST_SIZE (int)SIZEOF(uint4)
|
|
||||||
#define BRANCH_OFFSET_FROM_IDX(idx_start, idx_end) (idx_end - (idx_start + 1))
|
|
||||||
#define LONG_JUMP_OFFSET (0x4ffffffc) /* should be large enough to force the long jump instruction sequence */
|
|
||||||
#define MAX_BRANCH_CODEGEN_SIZE 32 /* The length in bytes, of the longest form of branch instruction sequence */
|
|
||||||
|
|
||||||
#define MAX_OFFSET 0x3fff
|
|
||||||
#define STACK_ARG_OFFSET(indx) (8 * (indx)) /* All arguments on Alpha platforms are 8 bytes wide on stack */
|
|
||||||
#define MACHINE_FIRST_ARG_REG ALPHA_REG_A0
|
|
||||||
|
|
||||||
/* Register usage in some of the code generation expansions */
|
|
||||||
#define CALLS_TINT_TEMP_REG ALPHA_REG_R1
|
|
||||||
#define CLRL_REG ALPHA_REG_ZERO
|
|
||||||
#define CMPL_TEMP_REG ALPHA_REG_T1
|
|
||||||
#define GET_ARG_REG(indx) (ALPHA_REG_A0 + (indx))
|
|
||||||
#define MOVC3_SRC_REG ALPHA_REG_R0
|
|
||||||
#define MOVC3_TRG_REG ALPHA_REG_R1
|
|
||||||
#define MOVL_RETVAL_REG ALPHA_REG_V0
|
|
||||||
#define MOVL_REG_R1 ALPHA_REG_R1
|
|
||||||
|
|
||||||
/* Macros to define the opcodes for use in emit_jmp() and emit_tip() args */
|
|
||||||
|
|
||||||
#define GENERIC_OPCODE_BEQ ((uint4)ALPHA_INS_BEQ)
|
|
||||||
#define GENERIC_OPCODE_BGE ((uint4)ALPHA_INS_BGE)
|
|
||||||
#define GENERIC_OPCODE_BGT ((uint4)ALPHA_INS_BGT)
|
|
||||||
#define GENERIC_OPCODE_BLE ((uint4)ALPHA_INS_BLE)
|
|
||||||
#define GENERIC_OPCODE_BLT ((uint4)ALPHA_INS_BLT)
|
|
||||||
#define GENERIC_OPCODE_BNE ((uint4)ALPHA_INS_BNE)
|
|
||||||
#define GENERIC_OPCODE_BLBC ((uint4)ALPHA_INS_BLBC)
|
|
||||||
#define GENERIC_OPCODE_BLBS ((uint4)ALPHA_INS_BLBS)
|
|
||||||
#define GENERIC_OPCODE_BR ((uint4)ALPHA_INS_BR)
|
|
||||||
#define GENERIC_OPCODE_LDA ((uint4)ALPHA_INS_LDA)
|
|
||||||
#define GENERIC_OPCODE_LOAD ((uint4)ALPHA_INS_LDL)
|
|
||||||
#define GENERIC_OPCODE_STORE ((uint4)ALPHA_INS_STL)
|
|
||||||
#define GENERIC_OPCODE_NOP ((uint4)ALPHA_INS_NOP)
|
|
||||||
|
|
||||||
/* Macro to extract parts of generic opcodes */
|
|
||||||
#define GENXCT_LOAD_SRCREG(inst) ((inst >> ALPHA_SHIFT_RB) & ALPHA_MASK_REG)
|
|
||||||
|
|
||||||
/* Macros to create specific generated code sequences */
|
|
||||||
|
|
||||||
/* Note that the GEN_CLEAR/SET_TRUTH macros are only used on VMS (TRUTH_IN_REG) */
|
|
||||||
#define GEN_CLEAR_TRUTH code_buf[code_idx++] = (ALPHA_INS_STL | ALPHA_REG_ZERO << ALPHA_SHIFT_RA \
|
|
||||||
| GTM_REG_DOLLAR_TRUTH << ALPHA_SHIFT_RB \
|
|
||||||
| 0 << ALPHA_SHIFT_DISP)
|
|
||||||
#define GEN_SET_TRUTH { \
|
|
||||||
code_buf[code_idx++] = (ALPHA_INS_BIS | ALPHA_REG_ZERO << ALPHA_SHIFT_RA \
|
|
||||||
| 1 << ALPHA_SHIFT_LITERAL | ALPHA_BIT_LITERAL \
|
|
||||||
| GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RC); \
|
|
||||||
code_buf[code_idx++] = (ALPHA_INS_STL | GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RA \
|
|
||||||
| GTM_REG_DOLLAR_TRUTH << ALPHA_SHIFT_RB \
|
|
||||||
| 0 << ALPHA_SHIFT_DISP); \
|
|
||||||
}
|
|
||||||
#define GEN_LOAD_ADDR(reg, breg, disp) code_buf[code_idx++] = (ALPHA_INS_LDA | reg << ALPHA_SHIFT_RA \
|
|
||||||
| breg << ALPHA_SHIFT_RB \
|
|
||||||
| (disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
|
|
||||||
#define GEN_LOAD_WORD(reg, breg, disp) code_buf[code_idx++] = (ALPHA_INS_LDL | reg << ALPHA_SHIFT_RA \
|
|
||||||
| breg << ALPHA_SHIFT_RB \
|
|
||||||
| (disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
|
|
||||||
#define GEN_STORE_WORD(reg, breg, disp) code_buf[code_idx++] = (ALPHA_INS_STL | reg << ALPHA_SHIFT_RA \
|
|
||||||
| breg << ALPHA_SHIFT_RB \
|
|
||||||
| (disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
|
|
||||||
#define GEN_LOAD_IMMED(reg, disp) GEN_LOAD_ADDR(reg, ALPHA_REG_ZERO, disp)
|
|
||||||
#define GEN_CLEAR_WORD_EMIT(reg) emit_trip(*(fst_opr + *inst++), TRUE, ALPHA_INS_STL, reg)
|
|
||||||
#define GEN_LOAD_WORD_EMIT(reg) emit_trip(*(fst_opr + *inst++), TRUE, ALPHA_INS_LDL, reg)
|
|
||||||
#define GEN_SUBTRACT_REGS(src1, src2, trgt) \
|
|
||||||
code_buf[code_idx++] = (ALPHA_INS_SUBL \
|
|
||||||
| src1 << ALPHA_SHIFT_RA \
|
|
||||||
| src2 << ALPHA_SHIFT_RB \
|
|
||||||
| trgt << ALPHA_SHIFT_RC)
|
|
||||||
#define GEN_ADD_IMMED(reg, imval) code_buf[code_idx++] = (ALPHA_INS_ADDL \
|
|
||||||
| reg << ALPHA_SHIFT_RA \
|
|
||||||
| imval << ALPHA_SHIFT_LITERAL | ALPHA_BIT_LITERAL \
|
|
||||||
| reg << ALPHA_SHIFT_RC)
|
|
||||||
#define GEN_JUMP_REG(reg) code_buf[code_idx++] = (ALPHA_INS_JMP | ALPHA_REG_ZERO << ALPHA_SHIFT_RA \
|
|
||||||
| reg << ALPHA_SHIFT_RB)
|
|
||||||
#define GEN_STORE_ARG(reg, offset) code_buf[code_idx++] = (ALPHA_INS_STQ | reg << ALPHA_SHIFT_RA \
|
|
||||||
| ALPHA_REG_SP << ALPHA_SHIFT_RB \
|
|
||||||
| (offset & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
|
|
||||||
#define GEN_PCREL code_buf[code_idx++] = (ALPHA_INS_LPC)
|
|
||||||
#define GEN_MOVE_REG(trg, src) code_buf[code_idx++] = (ALPHA_INS_MOVE | src << ALPHA_SHIFT_RA | trg << ALPHA_SHIFT_RC)
|
|
||||||
|
|
||||||
#if defined(__vms)
|
|
||||||
/* CALL_INST_SIZE is the byte length of the minimum-length instruction sequence to implement a transfer
|
|
||||||
* table call. In the case of OpenVMS AXP, this is the sequence:
|
|
||||||
*
|
|
||||||
* ldl r27, xfer(r11) ; get address of procedure descriptor from transfer table
|
|
||||||
* ldq r26, 8(r27) ; get code address of procedure from procedure descriptor
|
|
||||||
* jmp r26, (r26) ; call it
|
|
||||||
*
|
|
||||||
* This value is used to determine how to adjust the offset value for a relative call and may not
|
|
||||||
* be appropriate for the Alpha because VAX relative calls are emulated on the Alpha differently.
|
|
||||||
*/
|
|
||||||
# define CALL_INST_SIZE (3 * INST_SIZE)
|
|
||||||
# define GEN_XFER_TBL_CALL(xfer) \
|
|
||||||
{ \
|
|
||||||
emit_base_offset(GTM_REG_XFER_TABLE, xfer); \
|
|
||||||
code_buf[code_idx++] |= ALPHA_INS_LDL | ALPHA_REG_PV << ALPHA_SHIFT_RA; \
|
|
||||||
emit_base_offset(ALPHA_REG_PV, 8); \
|
|
||||||
code_buf[code_idx++] |= ALPHA_INS_LDQ | ALPHA_REG_RA << ALPHA_SHIFT_RA; \
|
|
||||||
code_buf[code_idx++] = ALPHA_INS_JSR | ALPHA_REG_RA << ALPHA_SHIFT_RA | ALPHA_REG_RA << ALPHA_SHIFT_RB; \
|
|
||||||
}
|
|
||||||
#elif defined(__osf__)
|
|
||||||
/* CALL_INST_SIZE is the byte length of the minimum-length instruction sequence to implement a transfer
|
|
||||||
* table call. In the case of OSF/1 (Digital Unix) AXP, this is the sequence:
|
|
||||||
*
|
|
||||||
* ldl r27, offset(r12) # get address of entry point from transfer table
|
|
||||||
* jmp r26, (r27) # call it
|
|
||||||
*
|
|
||||||
* This value is used to determine how to adjust the offset value for a relative call and may not
|
|
||||||
* be appropriate for the Alpha because VAX relative calls are emulated on the Alpha differently.
|
|
||||||
*/
|
|
||||||
# define CALL_INST_SIZE (2 * INST_SIZE)
|
|
||||||
# define GEN_XFER_TBL_CALL(xfer) \
|
|
||||||
{ \
|
|
||||||
emit_base_offset(GTM_REG_XFER_TABLE, xfer); \
|
|
||||||
code_buf[code_idx++] |= ALPHA_INS_LDL | ALPHA_REG_PV << ALPHA_SHIFT_RA; \
|
|
||||||
code_buf[code_idx++] = ALPHA_INS_JSR | ALPHA_REG_RA << ALPHA_SHIFT_RA | ALPHA_REG_PV << ALPHA_SHIFT_RB; \
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
# error "Unsupported platform"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/* Macros to return an instruction value. This is typcically used to modify an instruction
|
|
||||||
that is already in the instruction buffer such as the last instruction that was created
|
|
||||||
by emit_pcrel().
|
|
||||||
*/
|
|
||||||
#define IGEN_COND_BRANCH_REG_OFFSET(opcode, reg, disp) (opcode | ((reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA) \
|
|
||||||
| ((disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_BRANCH_DISP))
|
|
||||||
#define IGEN_UCOND_BRANCH_REG_OFFSET(opcode, reg, disp) IGEN_COND_BRANCH_REG_OFFSET(opcode, reg, disp)
|
|
||||||
#define IGEN_LOAD_ADDR_REG(reg) (ALPHA_INS_LDA | (reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA)
|
|
||||||
#define IGEN_LOAD_WORD_REG(reg) (ALPHA_INS_LDL | (reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA)
|
|
||||||
#define IGEN_LOAD_NATIVE_REG(reg) IGEN_LOAD_WORD_REG(reg)
|
|
||||||
#define IGEN_COND_BRANCH_OFFSET(disp) ((disp & ALPHA_MASK_BRANCH_DISP) << ALPHA_SHIFT_BRANCH_DISP)
|
|
||||||
#define IGEN_UCOND_BRANCH_OFFSET(disp) IGEN_COND_BRANCH_OFFSET(disp)
|
|
||||||
#define IGEN_LOAD_LINKAGE(reg) (ALPHA_INS_LDQ | (reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA)
|
|
||||||
#define IGEN_GENERIC_REG(opcode, reg) (opcode | ((reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA))
|
|
||||||
|
|
||||||
/* Some macros that are used in certain routines in emit_code.c. The names of these
|
|
||||||
macros start with the routine name they are used in.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Branch has origin of +1 instructions. However, if the branch was nullified in an earlier shrink_trips,
|
|
||||||
* the origin is the current instruction itself */
|
|
||||||
#define EMIT_JMP_ADJUST_BRANCH_OFFSET branch_offset = ((branch_offset != 0) ? branch_offset - 1 : 0)
|
|
||||||
/* Can jump be done within range of immediate operand */
|
|
||||||
#define EMIT_JMP_SHORT_CODE_CHECK (branch_offset >= (-(ALPHA_MASK_BRANCH_DISP/2) - 1) \
|
|
||||||
&& branch_offset <= (ALPHA_MASK_BRANCH_DISP/2))
|
|
||||||
/* Emit the short jump */
|
|
||||||
#define EMIT_JMP_SHORT_CODE_GEN \
|
|
||||||
{ \
|
|
||||||
code_buf[code_idx++] = (branchop | (reg << ALPHA_SHIFT_RA) \
|
|
||||||
| ((branch_offset & ALPHA_MASK_BRANCH_DISP) << ALPHA_SHIFT_BRANCH_DISP)); \
|
|
||||||
branch_offset--; \
|
|
||||||
}
|
|
||||||
/* Is this a conditional branch? */
|
|
||||||
#define EMIT_JMP_OPPOSITE_BR_CHECK (branchop != ALPHA_INS_BR && (branchop != ALPHA_INS_BEQ || reg != ALPHA_REG_ZERO))
|
|
||||||
#define EMIT_JMP_GEN_COMPARE /* No compare necessary */
|
|
||||||
#define EMIT_JMP_LONG_CODE_CHECK FALSE
|
|
||||||
/* Is the offset field in this instruction zero? */
|
|
||||||
#define EMIT_JMP_ZERO_DISP_COND (0 == ((code_buf[code_idx] >> ALPHA_SHIFT_DISP) & ALPHA_MASK_DISP))
|
|
||||||
/* Emit code to load a given numeric literal */
|
|
||||||
#define EMIT_TRIP_ILIT_GEN { /* Emit liternal number */ \
|
|
||||||
emit_base_offset(ALPHA_REG_ZERO, immediate); \
|
|
||||||
code_buf[code_idx++] |= (ALPHA_INS_LDA | \
|
|
||||||
(trg_reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA); \
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* GT.M on AIX and SPARC is 64bit
|
|
||||||
* By default the loads/stores use ldd/std(load double),
|
|
||||||
* but if the value being dealt with is a word,the
|
|
||||||
* opcode in generic_inst is changed to ldw/stw
|
|
||||||
*/
|
|
||||||
#define REVERT_GENERICINST_TO_WORD(inst)
|
|
||||||
|
|
||||||
#endif
|
|
|
@ -1,32 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title FOLLOW "Allows run-time modules to call OP_FOLLOW"
|
|
||||||
|
|
||||||
; FOLLOW simply passes its two arguments, which are pointers to
|
|
||||||
; mval's, to OP_FOLLOW, which expects them in registers r0 and r1.
|
|
||||||
; OP_FOLLOW returns 1, 0, or -1; FOLLOW returns a boolean result:
|
|
||||||
; 1 (true) if OP_FOLLOW returned 1, otherwise 0 (false).
|
|
||||||
|
|
||||||
$routine FOLLOW, entry=FOLLOW_CA, kind=stack
|
|
||||||
.base r27, $ls
|
|
||||||
|
|
||||||
sextl r16, r0
|
|
||||||
sextl r17, r1
|
|
||||||
$call OP_FOLLOW, set_arg_info=false
|
|
||||||
sextl r0, r0
|
|
||||||
cmovlt r0, 0, r0
|
|
||||||
|
|
||||||
$return
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,24 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title inst_flush flush instruction cache
|
|
||||||
|
|
||||||
; inst_flush is a C-callable routine that makes the instruction cache coherent with memory.
|
|
||||||
|
|
||||||
$routine name=inst_flush,entry=inst_flush_ca,kind=null
|
|
||||||
|
|
||||||
imb
|
|
||||||
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine name=inst_flush
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,51 +0,0 @@
|
||||||
.title mint2mval "Convert integer to mval"
|
|
||||||
|
|
||||||
; ###############################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2004 Sanchez Computer Associates, Inc. #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ###############################################################
|
|
||||||
|
|
||||||
; On input, r1 = integer value, r0 -> mval
|
|
||||||
|
|
||||||
mval$def
|
|
||||||
|
|
||||||
$linkage_section
|
|
||||||
|
|
||||||
int_hi_val:
|
|
||||||
.quad INT_HI
|
|
||||||
|
|
||||||
$routine MINT2MVAL, entry=MINT2MVAL_CA, kind=null
|
|
||||||
lda sp, -24(sp)
|
|
||||||
stq r26, (sp)
|
|
||||||
stq r13, 8(sp)
|
|
||||||
mov r27, r13
|
|
||||||
.base r13, $ls
|
|
||||||
|
|
||||||
ldq r22, int_hi_val
|
|
||||||
cmplt r1, r22, r28
|
|
||||||
beq r28, 11$ ; int >= INT_HI
|
|
||||||
negq r22, r22
|
|
||||||
cmple r1, r22, r28
|
|
||||||
bne r28, 11$ ; int <= -INT_HI
|
|
||||||
|
|
||||||
mv_i2mval r1, r0
|
|
||||||
|
|
||||||
12$: ldq r26, (sp)
|
|
||||||
ldq r13, 8(sp)
|
|
||||||
lda sp, 24(sp)
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
11$: mov r0, r16
|
|
||||||
mov r1, r17
|
|
||||||
$call I2MVAL, args=<r16, r17>, set_arg_info=false, nonstandard=true
|
|
||||||
br 12$
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,21 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title movq move quadword
|
|
||||||
|
|
||||||
$routine name=movq,entry=movq_ca,kind=null
|
|
||||||
|
|
||||||
ldq r28, (r16)
|
|
||||||
stq r28, (r17)
|
|
||||||
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine name=movq
|
|
|
@ -1,39 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2000, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title mval2bool "Sets condition code from mval"
|
|
||||||
|
|
||||||
; On entry, r1 -> mval.
|
|
||||||
; On exit, r24 = numeric value of mval
|
|
||||||
|
|
||||||
mval$def
|
|
||||||
|
|
||||||
$routine MVAL2BOOL, entry=MVAL2BOOL_CA, kind=null
|
|
||||||
lda sp, -24(sp)
|
|
||||||
stq r26, (sp)
|
|
||||||
stq r13, 8(sp)
|
|
||||||
mov r27, r13
|
|
||||||
.base r13, $ls
|
|
||||||
|
|
||||||
mv_force_defined r1
|
|
||||||
stq r1, 16(sp)
|
|
||||||
mv_force_num (r1)
|
|
||||||
ldq r1, 16(sp)
|
|
||||||
ldl r24, mval$l_m1(r1)
|
|
||||||
|
|
||||||
ldq r26, (sp)
|
|
||||||
ldq r13, 8(sp)
|
|
||||||
lda sp, 24(sp)
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,39 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2000, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title mval2mint "Converts an mval to integer"
|
|
||||||
|
|
||||||
; On entry, r1 -> mval
|
|
||||||
; On exit, r0 = integer value
|
|
||||||
|
|
||||||
mval$def
|
|
||||||
|
|
||||||
$routine MVAL2MINT, entry=MVAL2MINT_CA, kind=null
|
|
||||||
lda sp, -24(sp)
|
|
||||||
stq r26, (sp)
|
|
||||||
stq r13, 8(sp)
|
|
||||||
mov r27, r13
|
|
||||||
.base r13, $ls
|
|
||||||
|
|
||||||
mv_force_defined r1
|
|
||||||
stq r1, 16(sp)
|
|
||||||
mv_force_num (r1)
|
|
||||||
ldq r16, 16(sp)
|
|
||||||
$call MVAL2I, args=<r16>, set_arg_info=false, nonstandard=true
|
|
||||||
|
|
||||||
ldq r26, (sp)
|
|
||||||
ldq r13, 8(sp)
|
|
||||||
lda sp, 24(sp)
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,457 +0,0 @@
|
||||||
/****************************************************************
|
|
||||||
* *
|
|
||||||
* Copyright 2001 Sanchez Computer Associates, Inc. *
|
|
||||||
* *
|
|
||||||
* This source code contains the intellectual property *
|
|
||||||
* of its copyright holder(s), and is made available *
|
|
||||||
* under a license. If you do not know the terms of *
|
|
||||||
* the license, please stop and do not read further. *
|
|
||||||
* *
|
|
||||||
****************************************************************/
|
|
||||||
|
|
||||||
/* Object record types: */
|
|
||||||
#define EOBJ$C_EMH 8
|
|
||||||
#define EOBJ$C_EEOM 9
|
|
||||||
#define EOBJ$C_EGSD 10
|
|
||||||
#define EOBJ$C_ETIR 11
|
|
||||||
#define EOBJ$C_EDBG 12
|
|
||||||
#define EOBJ$C_ETBT 13
|
|
||||||
#define EOBJ$C_MAXRECTYP 13
|
|
||||||
|
|
||||||
/* Byte offsets into object record and related constants: */
|
|
||||||
#define EOBJ$K_SUBTYP 4
|
|
||||||
#define EOBJ$C_SUBTYP 4
|
|
||||||
#define EOBJ$C_MAXRECSIZ 8192
|
|
||||||
#define EOBJ$C_STRLVL 2
|
|
||||||
#define EOBJ$C_SYMSIZ 31
|
|
||||||
#define EOBJ$C_STOREPLIM -1
|
|
||||||
#define EOBJ$C_PSCALILIM 16
|
|
||||||
#define EOBJ$S_EOBJRECDEF 10
|
|
||||||
#define EOBJ$W_RECTYP 0
|
|
||||||
#define EOBJ$W_SIZE 2
|
|
||||||
#define EOBJ$W_SUBTYP 4
|
|
||||||
#define EOBJ$B_MHD_STRLV 6
|
|
||||||
#define EOBJ$B_MHD_HOLD 7
|
|
||||||
#define EOBJ$W_MHD_RECSZ 8
|
|
||||||
#define EOBJ$T_MHD_NAME 10
|
|
||||||
|
|
||||||
/* Object header record (EOBJ$C_EMH) subtypes: */
|
|
||||||
#define EMH$C_MHD 0
|
|
||||||
#define EMH$C_LNM 1
|
|
||||||
#define EMH$C_SRC 2
|
|
||||||
#define EMH$C_TTL 3
|
|
||||||
#define EMH$C_CPR 4
|
|
||||||
#define EMH$C_MTC 5
|
|
||||||
#define EMH$C_GTX 6
|
|
||||||
#define EMH$C_MAXHDRTYP 6
|
|
||||||
|
|
||||||
/* Byte offsets of fields in object header record (EOBJ$C_EMH): */
|
|
||||||
#define EMH$S_EMHDEF 52
|
|
||||||
#define EMH$W_RECTYP 0
|
|
||||||
#define EMH$W_SIZE 2
|
|
||||||
#define EMH$W_HDRTYP 4
|
|
||||||
#define EMH$B_STRLVL 6
|
|
||||||
#define EMH$B_TEMP 7
|
|
||||||
#define EMH$L_ARCH1 8
|
|
||||||
#define EMH$L_ARCH2 12
|
|
||||||
#define EMH$L_RECSIZ 16
|
|
||||||
#define EMH$B_NAMLNG 20
|
|
||||||
#define EMH$S_NAME 31
|
|
||||||
#define EMH$T_NAME 21
|
|
||||||
|
|
||||||
#define EEOM$C_SUCCESS 0
|
|
||||||
#define EEOM$C_WARNING 1
|
|
||||||
#define EEOM$C_ERROR 2
|
|
||||||
#define EEOM$C_ABORT 3
|
|
||||||
#define EEOM$K_EOMMIN 10
|
|
||||||
#define EEOM$C_EOMMIN 10
|
|
||||||
#define EEOM$K_EOMMX1 10
|
|
||||||
#define EEOM$C_EOMMX1 10
|
|
||||||
#define EEOM$M_WKTFR 0X1
|
|
||||||
#define EEOM$K_EOMMAX 24
|
|
||||||
#define EEOM$C_EOMMAX 24
|
|
||||||
#define EEOM$S_EEOMDEF 24
|
|
||||||
#define EEOM$W_RECTYP 0
|
|
||||||
#define EEOM$W_SIZE 2
|
|
||||||
#define EEOM$L_TOTAL_LPS 4
|
|
||||||
#define EEOM$W_COMCOD 8
|
|
||||||
#define EEOM$B_TFRFLG 10
|
|
||||||
#define EEOM$V_WKTFR 0
|
|
||||||
#define EEOM$B_TEMP 11
|
|
||||||
#define EEOM$L_PSINDX 12
|
|
||||||
#define EEOM$S_TFRADR 8
|
|
||||||
#define EEOM$Q_TFRADR 16
|
|
||||||
#define EEOM$L_TFRADR 16
|
|
||||||
|
|
||||||
|
|
||||||
#define EGSD$K_ENTRIES 2
|
|
||||||
#define EGSD$C_ENTRIES 2
|
|
||||||
|
|
||||||
#define EGSD$C_PSC 0
|
|
||||||
#define EGSD$C_SYM 1
|
|
||||||
#define EGSD$C_IDC 2
|
|
||||||
#define EGSD$C_ENV 3
|
|
||||||
#define EGSD$C_LSY 4
|
|
||||||
#define EGSD$C_SPSC 5
|
|
||||||
#define EGSD$C_SYMV 6
|
|
||||||
#define EGSD$C_SYMM 7
|
|
||||||
#define EGSD$C_SYMG 8
|
|
||||||
#define EGSD$C_MAXRECTYP 8
|
|
||||||
|
|
||||||
#define EGSD$S_EGSDEF 12
|
|
||||||
#define EGSD$W_RECTYP 0
|
|
||||||
#define EGSD$W_RECSIZ 2
|
|
||||||
#define EGSD$L_ALIGNLW 4
|
|
||||||
#define EGSD$W_GSDTYP 8
|
|
||||||
#define EGSD$W_GSDSIZ 10
|
|
||||||
|
|
||||||
#define EGPS$M_PIC 0X1
|
|
||||||
#define EGPS$M_LIB 0X2
|
|
||||||
#define EGPS$M_OVR 0X4
|
|
||||||
#define EGPS$M_REL 0X8
|
|
||||||
#define EGPS$M_GBL 0X10
|
|
||||||
#define EGPS$M_SHR 0X20
|
|
||||||
#define EGPS$M_EXE 0X40
|
|
||||||
#define EGPS$M_RD 0X80
|
|
||||||
#define EGPS$M_WRT 0X100
|
|
||||||
#define EGPS$M_VEC 0X200
|
|
||||||
#define EGPS$M_NOMOD 0X400
|
|
||||||
#define EGPS$M_COM 0X800
|
|
||||||
#define EGPS$K_NAME 12
|
|
||||||
#define EGPS$C_NAME 12
|
|
||||||
#define EGPS$S_EGPSDEF 44
|
|
||||||
#define EGPS$W_GSDTYP 0
|
|
||||||
#define EGPS$T_START 0
|
|
||||||
#define EGPS$W_SIZE 2
|
|
||||||
#define EGPS$B_ALIGN 4
|
|
||||||
#define EGPS$B_TEMP 5
|
|
||||||
#define EGPS$W_FLAGS 6
|
|
||||||
#define EGPS$V_PIC 0
|
|
||||||
#define EGPS$V_LIB 1
|
|
||||||
#define EGPS$V_OVR 2
|
|
||||||
#define EGPS$V_REL 3
|
|
||||||
#define EGPS$V_GBL 4
|
|
||||||
#define EGPS$V_SHR 5
|
|
||||||
#define EGPS$V_EXE 6
|
|
||||||
#define EGPS$V_RD 7
|
|
||||||
#define EGPS$V_WRT 8
|
|
||||||
#define EGPS$V_VEC 9
|
|
||||||
#define EGPS$V_NOMOD 10
|
|
||||||
#define EGPS$V_COM 11
|
|
||||||
#define EGPS$L_ALLOC 8
|
|
||||||
#define EGPS$B_NAMLNG 12
|
|
||||||
#define EGPS$S_NAME 31
|
|
||||||
#define EGPS$T_NAME 13
|
|
||||||
|
|
||||||
#define ESGPS$M_PIC 0X1
|
|
||||||
#define ESGPS$M_LIB 0X2
|
|
||||||
#define ESGPS$M_OVR 0X4
|
|
||||||
#define ESGPS$M_REL 0X8
|
|
||||||
#define ESGPS$M_GBL 0X10
|
|
||||||
#define ESGPS$M_SHR 0X20
|
|
||||||
#define ESGPS$M_EXE 0X40
|
|
||||||
#define ESGPS$M_RD 0X80
|
|
||||||
#define ESGPS$M_WRT 0X100
|
|
||||||
#define ESGPS$M_VEC 0X200
|
|
||||||
#define ESGPS$M_NOMOD 0X400
|
|
||||||
#define ESGPS$M_COM 0X800
|
|
||||||
#define ESGPS$K_NAME 25
|
|
||||||
#define ESGPS$C_NAME 25
|
|
||||||
#define ESGPS$S_ESGPSDEF 56
|
|
||||||
#define ESGPS$W_GSDTYP 0
|
|
||||||
#define ESGPS$T_START 0
|
|
||||||
#define ESGPS$W_SIZE 2
|
|
||||||
#define ESGPS$B_ALIGN 4
|
|
||||||
#define ESGPS$B_TEMP 5
|
|
||||||
#define ESGPS$W_FLAGS 6
|
|
||||||
#define ESGPS$V_PIC 0
|
|
||||||
#define ESGPS$V_LIB 1
|
|
||||||
#define ESGPS$V_OVR 2
|
|
||||||
#define ESGPS$V_REL 3
|
|
||||||
#define ESGPS$V_GBL 4
|
|
||||||
#define ESGPS$V_SHR 5
|
|
||||||
#define ESGPS$V_EXE 6
|
|
||||||
#define ESGPS$V_RD 7
|
|
||||||
#define ESGPS$V_WRT 8
|
|
||||||
#define ESGPS$V_VEC 9
|
|
||||||
#define ESGPS$V_NOMOD 10
|
|
||||||
#define ESGPS$V_COM 11
|
|
||||||
#define ESGPS$L_ALLOC 8
|
|
||||||
#define ESGPS$L_BASE 12
|
|
||||||
#define ESGPS$S_VALUE 8
|
|
||||||
#define ESGPS$Q_VALUE 16
|
|
||||||
#define ESGPS$L_VALUE 16
|
|
||||||
#define ESGPS$B_NAMLNG 24
|
|
||||||
#define ESGPS$S_NAME 31
|
|
||||||
#define ESGPS$T_NAME 25
|
|
||||||
|
|
||||||
#define EGSY$M_WEAK 0X1
|
|
||||||
#define EGSY$M_DEF 0X2
|
|
||||||
#define EGSY$M_UNI 0X4
|
|
||||||
#define EGSY$M_REL 0X8
|
|
||||||
#define EGSY$M_COMM 0X10
|
|
||||||
#define EGSY$M_VECEP 0X20
|
|
||||||
#define EGSY$M_NORM 0X40
|
|
||||||
#define EGSY$S_EGSYDEF 8
|
|
||||||
#define EGSY$W_GSDTYP 0
|
|
||||||
#define EGSY$T_START 0
|
|
||||||
#define EGSY$W_SIZE 2
|
|
||||||
#define EGSY$B_DATYP 4
|
|
||||||
#define EGSY$B_TEMP 5
|
|
||||||
#define EGSY$W_FLAGS 6
|
|
||||||
#define EGSY$V_WEAK 0
|
|
||||||
#define EGSY$V_DEF 1
|
|
||||||
#define EGSY$V_UNI 2
|
|
||||||
#define EGSY$V_REL 3
|
|
||||||
#define EGSY$V_COMM 4
|
|
||||||
#define EGSY$V_VECEP 5
|
|
||||||
#define EGSY$V_NORM 6
|
|
||||||
|
|
||||||
#define EGST$K_NAME 37
|
|
||||||
#define EGST$C_NAME 37
|
|
||||||
#define EGST$S_EGSTDEF 68
|
|
||||||
#define EGST$W_GSDTYP 0
|
|
||||||
#define EGST$T_START 0
|
|
||||||
#define EGST$W_SIZE 2
|
|
||||||
#define EGST$B_DATYP 4
|
|
||||||
#define EGST$B_TEMP 5
|
|
||||||
#define EGST$W_FLAGS 6
|
|
||||||
#define EGST$S_VALUE 8
|
|
||||||
#define EGST$Q_VALUE 8
|
|
||||||
#define EGST$L_VALUE 8
|
|
||||||
#define EGST$S_LP_1 8
|
|
||||||
#define EGST$Q_LP_1 16
|
|
||||||
#define EGST$L_LP_1 16
|
|
||||||
#define EGST$S_LP_2 8
|
|
||||||
#define EGST$Q_LP_2 24
|
|
||||||
#define EGST$L_LP_2 24
|
|
||||||
#define EGST$L_PSINDX 32
|
|
||||||
#define EGST$B_NAMLNG 36
|
|
||||||
#define EGST$S_NAME 31
|
|
||||||
#define EGST$T_NAME 37
|
|
||||||
|
|
||||||
#define ESDF$K_NAME 33
|
|
||||||
#define ESDF$C_NAME 33
|
|
||||||
#define ESDF$S_ESDFDEF 64
|
|
||||||
#define ESDF$W_GSDTYP 0
|
|
||||||
#define ESDF$T_START 0
|
|
||||||
#define ESDF$W_SIZE 2
|
|
||||||
#define ESDF$B_DATYP 4
|
|
||||||
#define ESDF$B_TEMP 5
|
|
||||||
#define ESDF$W_FLAGS 6
|
|
||||||
#define ESDF$S_VALUE 8
|
|
||||||
#define ESDF$Q_VALUE 8
|
|
||||||
#define ESDF$L_VALUE 8
|
|
||||||
#define ESDF$S_CODE_ADDRESS 8
|
|
||||||
#define ESDF$Q_CODE_ADDRESS 16
|
|
||||||
#define ESDF$L_CODE_ADDRESS 16
|
|
||||||
#define ESDF$L_CA_PSINDX 24
|
|
||||||
#define ESDF$L_PSINDX 28
|
|
||||||
#define ESDF$B_NAMLNG 32
|
|
||||||
#define ESDF$S_NAME 31
|
|
||||||
#define ESDF$T_NAME 33
|
|
||||||
|
|
||||||
#define ESDFV$K_NAME 25
|
|
||||||
#define ESDFV$C_NAME 25
|
|
||||||
#define ESDFV$S_ESDFVDEF 56
|
|
||||||
#define ESDFV$W_GSDTYP 0
|
|
||||||
#define ESDFV$T_START 0
|
|
||||||
#define ESDFV$W_SIZE 2
|
|
||||||
#define ESDFV$B_DATYP 4
|
|
||||||
#define ESDFV$B_TEMP 5
|
|
||||||
#define ESDFV$W_FLAGS 6
|
|
||||||
#define ESDFV$S_VALUE 8
|
|
||||||
#define ESDFV$Q_VALUE 8
|
|
||||||
#define ESDFV$L_VALUE 8
|
|
||||||
#define ESDFV$L_PSINDX 16
|
|
||||||
#define ESDFV$L_VECTOR 20
|
|
||||||
#define ESDFV$B_NAMLNG 24
|
|
||||||
#define ESDFV$S_NAME 31
|
|
||||||
#define ESDFV$T_NAME 25
|
|
||||||
#define ESDFM$K_NAME 25
|
|
||||||
#define ESDFM$C_NAME 25
|
|
||||||
#define ESDFM$S_ESDFMDEF 56
|
|
||||||
#define ESDFM$W_GSDTYP 0
|
|
||||||
#define ESDFM$T_START 0
|
|
||||||
#define ESDFM$W_SIZE 2
|
|
||||||
#define ESDFM$B_DATYP 4
|
|
||||||
#define ESDFM$B_TEMP 5
|
|
||||||
#define ESDFM$W_FLAGS 6
|
|
||||||
#define ESDFM$S_VALUE 8
|
|
||||||
#define ESDFM$Q_VALUE 8
|
|
||||||
#define ESDFM$L_VALUE 8
|
|
||||||
#define ESDFM$L_PSINDX 16
|
|
||||||
#define ESDFM$L_VERSION_MASK 20
|
|
||||||
#define ESDFM$B_NAMLNG 24
|
|
||||||
#define ESDFM$S_NAME 31
|
|
||||||
#define ESDFM$T_NAME 25
|
|
||||||
#define ESRF$K_NAME 9
|
|
||||||
#define ESRF$C_NAME 9
|
|
||||||
#define ESRF$S_ESRFDEF 40
|
|
||||||
#define ESRF$W_GSDTYP 0
|
|
||||||
#define ESRF$T_START 0
|
|
||||||
#define ESRF$W_SIZE 2
|
|
||||||
#define ESRF$B_DATYP 4
|
|
||||||
#define ESRF$B_TEMP 5
|
|
||||||
#define ESRF$W_FLAGS 6
|
|
||||||
#define ESRF$B_NAMLNG 8
|
|
||||||
#define ESRF$S_NAME 31
|
|
||||||
#define ESRF$T_NAME 9
|
|
||||||
#define EIDC$C_LEQ 0
|
|
||||||
#define EIDC$C_EQUAL 1
|
|
||||||
#define EIDC$S_EIDCDEF 7
|
|
||||||
#define EIDC$W_GSDTYP 0
|
|
||||||
#define EIDC$W_SIZE 2
|
|
||||||
#define EIDC$B_NAMLNG 4
|
|
||||||
#define EIDC$T_NAME 5
|
|
||||||
#define EIDC$W_FLAGS 5
|
|
||||||
#define EIDC$V_BINIDENT 0
|
|
||||||
#define EIDC$S_IDMATCH 2
|
|
||||||
#define EIDC$V_IDMATCH 1
|
|
||||||
#define EIDC$S_ERRSEV 3
|
|
||||||
#define EIDC$V_ERRSEV 3
|
|
||||||
|
|
||||||
#define EENV$M_DEF 0X1
|
|
||||||
#define EENV$M_NESTED 0X2
|
|
||||||
#define EENV$S_EENVDEF 40
|
|
||||||
#define EENV$W_GSDTYP 0
|
|
||||||
#define EENV$W_SIZE 2
|
|
||||||
#define EENV$W_FLAGS 4
|
|
||||||
#define EENV$V_DEF 0
|
|
||||||
#define EENV$V_NESTED 1
|
|
||||||
#define EENV$W_ENVINDX 6
|
|
||||||
#define EENV$B_NAMLNG 8
|
|
||||||
#define EENV$S_NAME 31
|
|
||||||
#define EENV$T_NAME 9
|
|
||||||
|
|
||||||
#define ELSY$M_WEAK 0X1
|
|
||||||
#define ELSY$M_DEF 0X2
|
|
||||||
#define ELSY$M_UNI 0X4
|
|
||||||
#define ELSY$M_REL 0X8
|
|
||||||
#define ELSY$S_ELSYDEF 14
|
|
||||||
#define ELSY$W_GSDTYP 0
|
|
||||||
#define ELSY$T_START 0
|
|
||||||
#define ELSY$W_SIZE 2
|
|
||||||
#define ELSY$B_DATYP 4
|
|
||||||
#define ELSY$B_TEMP1 5
|
|
||||||
#define ELSY$W_FLAGS 6
|
|
||||||
#define ELSY$V_WEAK 0
|
|
||||||
#define ELSY$V_DEF 1
|
|
||||||
#define ELSY$V_UNI 2
|
|
||||||
#define ELSY$V_REL 3
|
|
||||||
#define ELSY$L_PSINDX 8
|
|
||||||
#define ELSY$W_ENVINDX 12
|
|
||||||
|
|
||||||
#define ELSRF$K_NAME 17
|
|
||||||
#define ELSRF$C_NAME 17
|
|
||||||
#define ELSRF$S_ELSRFDEF 48
|
|
||||||
#define ELSRF$W_GSDTYP 0
|
|
||||||
#define ELSRF$T_START 0
|
|
||||||
#define ELSRF$W_SIZE 2
|
|
||||||
#define ELSRF$B_DATYP 4
|
|
||||||
#define ELSRF$B_TEMP1 5
|
|
||||||
#define ELSRF$W_FLAGS 6
|
|
||||||
#define ELSRF$L_PSINDX 8
|
|
||||||
#define ELSRF$W_ENVINDX 12
|
|
||||||
#define ELSRF$W_TEMP2 14
|
|
||||||
#define ELSRF$B_NAMLNG 16
|
|
||||||
#define ELSRF$S_NAME 31
|
|
||||||
#define ELSRF$T_NAME 17
|
|
||||||
|
|
||||||
#define ELSDF$K_NAME 25
|
|
||||||
#define ELSDF$C_NAME 25
|
|
||||||
#define ELSDF$S_ELSDFDEF 56
|
|
||||||
#define ELSDF$W_GSDTYP 0
|
|
||||||
#define ELSDF$T_START 0
|
|
||||||
#define ELSDF$W_SIZE 2
|
|
||||||
#define ELSDF$B_DATYP 4
|
|
||||||
#define ELSDF$B_TEMP1 5
|
|
||||||
#define ELSDF$W_FLAGS 6
|
|
||||||
#define ELSDF$S_VALUE 8
|
|
||||||
#define ELSDF$Q_VALUE 8
|
|
||||||
#define ELSDF$L_VALUE 8
|
|
||||||
#define ELSDF$L_PSINDX 16
|
|
||||||
#define ELSDF$W_ENVINDX 20
|
|
||||||
#define ELSDF$W_TEMP2 22
|
|
||||||
#define ELSDF$B_NAMLNG 24
|
|
||||||
#define ELSDF$S_NAME 31
|
|
||||||
#define ELSDF$T_NAME 25
|
|
||||||
|
|
||||||
/* ETIR command types: */
|
|
||||||
/* ETIR stack commands: */
|
|
||||||
#define ETIR$C_MINSTACOD 0
|
|
||||||
#define ETIR$C_STA_GBL 0
|
|
||||||
#define ETIR$C_STA_LW 1
|
|
||||||
#define ETIR$C_STA_QW 2
|
|
||||||
#define ETIR$C_STA_PQ 3
|
|
||||||
#define ETIR$C_STA_LI 4
|
|
||||||
#define ETIR$C_STA_MOD 5
|
|
||||||
#define ETIR$C_STA_CKARG 6
|
|
||||||
#define ETIR$C_MAXSTACOD 6
|
|
||||||
|
|
||||||
#define ETIR$C_MINSTOCOD 50
|
|
||||||
#define ETIR$C_STO_B 50
|
|
||||||
#define ETIR$C_STO_W 51
|
|
||||||
#define ETIR$C_STO_LW 52
|
|
||||||
#define ETIR$C_STO_QW 53
|
|
||||||
#define ETIR$C_STO_IMMR 54
|
|
||||||
#define ETIR$C_STO_GBL 55
|
|
||||||
#define ETIR$C_STO_CA 56
|
|
||||||
#define ETIR$C_STO_RB 57
|
|
||||||
#define ETIR$C_STO_AB 58
|
|
||||||
#define ETIR$C_STO_OFF 59
|
|
||||||
#define ETIR$C_STO_IMM 61
|
|
||||||
#define ETIR$C_STO_GBL_LW 62
|
|
||||||
#define ETIR$C_STO_HINT_GBL 64
|
|
||||||
#define ETIR$C_STO_HINT_PS 65
|
|
||||||
#define ETIR$C_MAXSTOCOD 65
|
|
||||||
|
|
||||||
#define ETIR$C_MINOPRCOD 100
|
|
||||||
#define ETIR$C_OPR_NOP 100
|
|
||||||
#define ETIR$C_OPR_ADD 101
|
|
||||||
#define ETIR$C_OPR_SUB 102
|
|
||||||
#define ETIR$C_OPR_MUL 103
|
|
||||||
#define ETIR$C_OPR_DIV 104
|
|
||||||
#define ETIR$C_OPR_AND 105
|
|
||||||
#define ETIR$C_OPR_IOR 106
|
|
||||||
#define ETIR$C_OPR_EOR 107
|
|
||||||
#define ETIR$C_OPR_NEG 108
|
|
||||||
#define ETIR$C_OPR_COM 109
|
|
||||||
#define ETIR$C_OPR_INSV 110
|
|
||||||
#define ETIR$C_OPR_ASH 111
|
|
||||||
#define ETIR$C_OPR_USH 112
|
|
||||||
#define ETIR$C_OPR_ROT 113
|
|
||||||
#define ETIR$C_OPR_SEL 114
|
|
||||||
#define ETIR$C_OPR_REDEF 115
|
|
||||||
#define ETIR$C_OPR_DFLIT 116
|
|
||||||
#define ETIR$C_MAXOPRCOD 116
|
|
||||||
|
|
||||||
#define ETIR$C_MINCTLCOD 150
|
|
||||||
#define ETIR$C_CTL_SETRB 150
|
|
||||||
#define ETIR$C_CTL_AUGRB 151
|
|
||||||
#define ETIR$C_CTL_DFLOC 152
|
|
||||||
#define ETIR$C_CTL_STLOC 153
|
|
||||||
#define ETIR$C_CTL_STKDL 154
|
|
||||||
#define ETIR$C_MAXCTLCOD 154
|
|
||||||
|
|
||||||
#define ETIR$C_MINSTCCOD 200
|
|
||||||
#define ETIR$C_STC_LP 200
|
|
||||||
#define ETIR$C_STC_LP_PSB 201
|
|
||||||
#define ETIR$C_STC_GBL 202
|
|
||||||
#define ETIR$C_STC_GCA 203
|
|
||||||
#define ETIR$C_STC_PS 204
|
|
||||||
#define ETIR$C_STC_NOP_GBL 205
|
|
||||||
#define ETIR$C_STC_NOP_PS 206
|
|
||||||
#define ETIR$C_STC_BSR_GBL 207
|
|
||||||
#define ETIR$C_STC_BSR_PS 208
|
|
||||||
#define ETIR$C_STC_LDA_GBL 209
|
|
||||||
#define ETIR$C_STC_LDA_PS 210
|
|
||||||
#define ETIR$C_STC_BOH_GBL 211
|
|
||||||
#define ETIR$C_STC_BOH_PS 212
|
|
||||||
#define ETIR$C_STC_NBH_GBL 213
|
|
||||||
#define ETIR$C_STC_NBH_PS 214
|
|
||||||
#define ETIR$C_MAXSTCCOD 214
|
|
||||||
|
|
||||||
#define ETIR$S_ETIRDEF 4
|
|
||||||
#define ETIR$W_RECTYP 0
|
|
||||||
#define ETIR$W_SIZE 2
|
|
|
@ -1,51 +0,0 @@
|
||||||
.title OP_CALL
|
|
||||||
; ###############################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2003 Sanchez Computer Associates, Inc. #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ###############################################################
|
|
||||||
|
|
||||||
G_MSF
|
|
||||||
|
|
||||||
|
|
||||||
$linkage_section
|
|
||||||
|
|
||||||
a_frame_pointer:
|
|
||||||
.address frame_pointer
|
|
||||||
|
|
||||||
|
|
||||||
$code_section
|
|
||||||
|
|
||||||
$routine OP_CALLB, entry=OP_CALL_CA, aliases=<OP_CALLW, OP_CALLL>, kind=null
|
|
||||||
|
|
||||||
lda sp, -16(sp)
|
|
||||||
stq r13, 8(sp)
|
|
||||||
stq r26, (sp)
|
|
||||||
mov r27, r13
|
|
||||||
.base r13, $ls
|
|
||||||
|
|
||||||
ldq r1, a_frame_pointer
|
|
||||||
ldl r1, (r1)
|
|
||||||
|
|
||||||
; Bump the return PC past the branch sequence following the jsr that got us here:
|
|
||||||
addl r26, r16, r26 ; length of branch sequence
|
|
||||||
stl r26, msf$mpc_off(r1) ; and store it in the Mumps stack frame
|
|
||||||
|
|
||||||
$call COPY_STACK_FRAME, set_arg_info=false, nonstandard=true
|
|
||||||
|
|
||||||
ldq r12, a_frame_pointer
|
|
||||||
ldl r12, (r12)
|
|
||||||
|
|
||||||
ldq r26, (sp)
|
|
||||||
ldq r13, 8(sp)
|
|
||||||
lda sp, 16(sp)
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,61 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title OP_EQUNUL "Compare mval to null string"
|
|
||||||
|
|
||||||
mval$def
|
|
||||||
|
|
||||||
|
|
||||||
$linkage_section
|
|
||||||
|
|
||||||
a_undef_inhibit:
|
|
||||||
.address undef_inhibit
|
|
||||||
|
|
||||||
|
|
||||||
$code_section
|
|
||||||
|
|
||||||
$routine OP_EQUNUL, entry=OP_EQUNUL_CA, kind=null
|
|
||||||
.base r27, $ls
|
|
||||||
|
|
||||||
mv_if_notdefined (r0), 30$
|
|
||||||
|
|
||||||
mv_if_notstring (r0), 20$
|
|
||||||
ldl r28, mval$l_strlen(r0)
|
|
||||||
bne r28, 20$
|
|
||||||
|
|
||||||
; Mval is a null string
|
|
||||||
10$: mov 1, r24
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
; Mval is not a null string
|
|
||||||
20$: clr r24
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
; If undef_inhibit is set, then all undefined values are equal to the null string:
|
|
||||||
30$: ldq r28, a_undef_inhibit
|
|
||||||
ldq_u r24, (r28)
|
|
||||||
extbl r24, r28, r24
|
|
||||||
bne r24, 10$ ; it's set; treat mval as a null string
|
|
||||||
|
|
||||||
; It's not set, so issue a message:
|
|
||||||
lda sp, -8(sp) ; but first,
|
|
||||||
stq r26, (sp) ; save the return address
|
|
||||||
mov r0, r16
|
|
||||||
$call UNDERR, args=<r16>, set_arg_info=false, nonstandard=true
|
|
||||||
|
|
||||||
ldq r26, (sp) ; restore our return address
|
|
||||||
lda sp, 8(sp)
|
|
||||||
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,51 +0,0 @@
|
||||||
.title OP_FORLCLDO
|
|
||||||
; ###############################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2003 Sanchez Computer Associates, Inc. #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ###############################################################
|
|
||||||
|
|
||||||
G_MSF
|
|
||||||
|
|
||||||
|
|
||||||
$linkage_section
|
|
||||||
|
|
||||||
a_frame_pointer:
|
|
||||||
.address frame_pointer
|
|
||||||
|
|
||||||
|
|
||||||
$code_section
|
|
||||||
|
|
||||||
$routine OP_FORLCLDOB, entry=OP_FORLCLDO_CA, aliases=<OP_FORLCLDOW,OP_FORLCLDOL>, kind=null
|
|
||||||
lda sp, -16(sp)
|
|
||||||
stq r13, 8(sp)
|
|
||||||
stq r26, (sp)
|
|
||||||
mov r27, r13
|
|
||||||
.base r13, $ls
|
|
||||||
|
|
||||||
ldq r1, a_frame_pointer
|
|
||||||
ldl r1, (r1)
|
|
||||||
|
|
||||||
; Bump the return PC past the branch instruction following the jsr that got us here:
|
|
||||||
addl r26, r16, r26 ; length of branch sequence
|
|
||||||
stl r26, msf$mpc_off(r1) ; and store it in the Mumps stack frame
|
|
||||||
|
|
||||||
$call EXFUN_FRAME, set_arg_info=false, nonstandard=true
|
|
||||||
|
|
||||||
ldq r12, a_frame_pointer
|
|
||||||
ldl r12, (r12)
|
|
||||||
ldl r9, msf$temps_ptr_off(r12)
|
|
||||||
|
|
||||||
ldq r26, (sp)
|
|
||||||
ldq r13, 8(sp)
|
|
||||||
lda sp, 16(sp)
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,24 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title op_linestart
|
|
||||||
G_MSF
|
|
||||||
|
|
||||||
; op_linestart - establish start of line in GT.M MUMPS stack frame
|
|
||||||
|
|
||||||
$routine name=op_linestart,entry=op_linestart_ca,kind=null
|
|
||||||
|
|
||||||
stl r26, msf$mpc_off(r12)
|
|
||||||
stl r13, msf$ctxt_off(r12)
|
|
||||||
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine name=op_linestart
|
|
|
@ -1,51 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title OP_PATTERN
|
|
||||||
|
|
||||||
mval$def
|
|
||||||
|
|
||||||
$routine OP_PATTERN, entry=OP_PATTERN_CA, kind=null
|
|
||||||
lda sp, -16(sp)
|
|
||||||
stq r13, 8(sp)
|
|
||||||
stq r26, (sp)
|
|
||||||
mov r27, r13
|
|
||||||
.base r13, $ls
|
|
||||||
|
|
||||||
mov r0, r16
|
|
||||||
mov r1, r17
|
|
||||||
|
|
||||||
;
|
|
||||||
; This is an array of unaligned ints. If the first word is zero, then call do_pattern
|
|
||||||
; instead of do_patfixed. Only the low order byte is significant and so it is the only
|
|
||||||
; one we need to test. We would do this in assembly because (1) we need the assmembly
|
|
||||||
; routine anyway to save the return value into $TEST and (2) it saves an extra level of
|
|
||||||
; call linkage at the C level to do the decision here.
|
|
||||||
;
|
|
||||||
ldl r28, mval$a_straddr(r1)
|
|
||||||
ldq_u r24, (r28)
|
|
||||||
extbl r24, r28, r24
|
|
||||||
beq r24, 20$
|
|
||||||
|
|
||||||
10$: $call DO_PATFIXED, args=<r16, r17>, set_arg_info=false, nonstandard=true
|
|
||||||
|
|
||||||
15$: mov r0, r24
|
|
||||||
ldq r26, (sp)
|
|
||||||
ldq r13, 8(sp)
|
|
||||||
lda sp, 16(sp)
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
20$: $call DO_PATTERN, args=<r16, r17>, set_arg_info=false, nonstandard=true
|
|
||||||
br 15$
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,41 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title OP_SORTS_AFTER
|
|
||||||
|
|
||||||
; On entry:
|
|
||||||
; r0 -> mval for left hand side
|
|
||||||
; r1 -> mval for right hand side
|
|
||||||
;
|
|
||||||
; On exit:
|
|
||||||
; r24 < 0 : lhs ']] rhs (lhs ]] rhs is false)
|
|
||||||
; r24 = 0 : lhs = rhs (lhs ]] rhs is false)
|
|
||||||
; r24 > 0 : lhs ]] rhs (lhs ]] rhs is true)
|
|
||||||
|
|
||||||
|
|
||||||
$routine OP_SORTS_AFTER, entry=OP_SORTS_AFTER_CA, kind=null
|
|
||||||
lda sp, -8(sp)
|
|
||||||
stq r26, (sp)
|
|
||||||
.base r27, $ls
|
|
||||||
|
|
||||||
mov r0, r16
|
|
||||||
mov r1, r17
|
|
||||||
$call SORTS_AFTER, args=<r16, r17>, set_arg_info=false, nonstandard=true
|
|
||||||
mov r0, r24
|
|
||||||
|
|
||||||
ldq r26, (sp)
|
|
||||||
lda sp, 8(sp)
|
|
||||||
|
|
||||||
ret r26
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -1,37 +0,0 @@
|
||||||
; ################################################################
|
|
||||||
; # #
|
|
||||||
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
|
|
||||||
; # #
|
|
||||||
; # This source code contains the intellectual property #
|
|
||||||
; # of its copyright holder(s), and is made available #
|
|
||||||
; # under a license. If you do not know the terms of #
|
|
||||||
; # the license, please stop and do not read further. #
|
|
||||||
; # #
|
|
||||||
; ################################################################
|
|
||||||
|
|
||||||
.title PSEUDO_RET
|
|
||||||
|
|
||||||
; PSEUDO_RET calls opp_ret (which doesn't return). It executes in a
|
|
||||||
; GT.M MUMPS stack frame and is, in fact, normally entered via a
|
|
||||||
; getframe/ret instruction sequence.
|
|
||||||
;
|
|
||||||
; entry:
|
|
||||||
; r13 - address of PSEUDO_RET's procedure descriptor (not r27)
|
|
||||||
;
|
|
||||||
; WARNING: because PSEUDO_RET is designed to be invoked from a GT.M
|
|
||||||
; MUMPS stack frame, it does not conform to the Alpha calling
|
|
||||||
; standard and cannot be invoked from any high-level language. The
|
|
||||||
; invoker should load the address of PSEUDO_RET's procedure descriptor
|
|
||||||
; into r13, not r27.
|
|
||||||
|
|
||||||
|
|
||||||
$code_section
|
|
||||||
|
|
||||||
$routine PSEUDO_RET, entry=PSEUDO_RET_CA, kind=null
|
|
||||||
.base r13, $ls
|
|
||||||
|
|
||||||
$call opp_ret, set_arg_info=false, nonstandard=true
|
|
||||||
|
|
||||||
$end_routine
|
|
||||||
|
|
||||||
.end
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global aswp
|
||||||
|
.type aswp, %function
|
||||||
|
aswp:
|
||||||
|
@ args = 0, pretend = 0, frame = 8
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #12
|
||||||
|
str r0, [fp, #-8]
|
||||||
|
str r1, [fp, #-12]
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size aswp, .-aswp
|
|
@ -0,0 +1,91 @@
|
||||||
|
/****************************************************************
|
||||||
|
* *
|
||||||
|
* Copyright 2001, 2012 Fidelity Information Services, Inc *
|
||||||
|
* *
|
||||||
|
* This source code contains the intellectual property *
|
||||||
|
* of its copyright holder(s), and is made available *
|
||||||
|
* under a license. If you do not know the terms of *
|
||||||
|
* the license, please stop and do not read further. *
|
||||||
|
* *
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include "mdef.h"
|
||||||
|
|
||||||
|
#include "gtm_string.h"
|
||||||
|
|
||||||
|
#include "i386.h"
|
||||||
|
#include "urx.h"
|
||||||
|
#include <rtnhdr.h>
|
||||||
|
#include "op.h"
|
||||||
|
#include <auto_zlink.h>
|
||||||
|
|
||||||
|
#define PEA_SZ 5
|
||||||
|
#define XFER_BYTE_SZ 3
|
||||||
|
#define XFER_LONG_SZ 6
|
||||||
|
#define INST_SZ 1
|
||||||
|
|
||||||
|
error_def(ERR_LABELUNKNOWN);
|
||||||
|
error_def(ERR_ROUTINEUNKNOWN);
|
||||||
|
|
||||||
|
rhdtyp *auto_zlink (unsigned char *pc, int4 **line)
|
||||||
|
{
|
||||||
|
char *adj_pc; /* address of PEA rtnref offset */
|
||||||
|
mstr rname;
|
||||||
|
mident_fixed rname_local;
|
||||||
|
urx_rtnref *rtnurx;
|
||||||
|
mval rtn;
|
||||||
|
rhdtyp *rhead;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
ModR_M modrm;
|
||||||
|
unsigned char byte;
|
||||||
|
} modrm_byte_byte, modrm_byte_long;
|
||||||
|
|
||||||
|
/* ASSUMPTION -- The instruction previous to the current mpc is a transfer table jump.
|
||||||
|
* This is either a byte or a int4 displacement off of ebx, instruction
|
||||||
|
* size either 3 or 6 (prefix byte, ModR/M byte, 8- or 32-bit offset).
|
||||||
|
*/
|
||||||
|
modrm_byte_byte.modrm.reg_opcode = I386_INS_CALL_Ev;
|
||||||
|
modrm_byte_byte.modrm.mod = I386_MOD32_BASE_DISP_8;
|
||||||
|
modrm_byte_byte.modrm.r_m = I386_REG_EBX;
|
||||||
|
modrm_byte_long.modrm.reg_opcode = I386_INS_CALL_Ev;
|
||||||
|
modrm_byte_long.modrm.mod = I386_MOD32_BASE_DISP_32;
|
||||||
|
modrm_byte_long.modrm.r_m = I386_REG_EBX;
|
||||||
|
if ((*(pc - XFER_BYTE_SZ) == I386_INS_Grp5_Prefix) && (*(pc - XFER_BYTE_SZ + 1) == modrm_byte_byte.byte))
|
||||||
|
{
|
||||||
|
assert(*(pc - XFER_BYTE_SZ - PEA_SZ) == I386_INS_PUSH_Iv);
|
||||||
|
adj_pc = (char *)pc - XFER_BYTE_SZ - PEA_SZ;
|
||||||
|
} else if ((*(pc - XFER_LONG_SZ) == I386_INS_Grp5_Prefix) && (*(pc - XFER_LONG_SZ + 1) == modrm_byte_long.byte))
|
||||||
|
{
|
||||||
|
assert(*(pc - XFER_LONG_SZ - PEA_SZ) == I386_INS_PUSH_Iv);
|
||||||
|
adj_pc = (char *)pc - XFER_LONG_SZ - PEA_SZ;
|
||||||
|
} else
|
||||||
|
GTMASSERT;
|
||||||
|
if (azl_geturxrtn(adj_pc + INST_SZ, &rname, &rtnurx))
|
||||||
|
{
|
||||||
|
assert((0 <= rname.len) && (MAX_MIDENT_LEN >= rname.len));
|
||||||
|
assert(rname.addr);
|
||||||
|
/* Copy rname into local storage because azl_geturxrtn sets rname.addr to an address that is
|
||||||
|
* freed during op_zlink and before the call to find_rtn_hdr.
|
||||||
|
*/
|
||||||
|
memcpy(rname_local.c, rname.addr, rname.len);
|
||||||
|
rname.addr = rname_local.c;
|
||||||
|
assert(rtnurx);
|
||||||
|
assert(*(adj_pc - PEA_SZ) == I386_INS_PUSH_Iv);
|
||||||
|
assert(azl_geturxlab(adj_pc - PEA_SZ + INST_SZ, rtnurx));
|
||||||
|
assert(!find_rtn_hdr(&rname));
|
||||||
|
rtn.mvtype = MV_STR;
|
||||||
|
rtn.str.len = rname.len;
|
||||||
|
rtn.str.addr = rname.addr;
|
||||||
|
op_zlink (&rtn, 0);
|
||||||
|
if (0 != (rhead = find_rtn_hdr(&rname))) /* note the assignment */
|
||||||
|
{
|
||||||
|
*line = *(int4 **)(adj_pc - PEA_SZ + INST_SZ);
|
||||||
|
if (!(*line))
|
||||||
|
rts_error(VARLSTCNT(1) ERR_LABELUNKNOWN);
|
||||||
|
return rhead;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rts_error(VARLSTCNT(1) ERR_ROUTINEUNKNOWN);
|
||||||
|
return NULL;
|
||||||
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
/****************************************************************
|
/****************************************************************
|
||||||
* *
|
* *
|
||||||
* Copyright 2001 Sanchez Computer Associates, Inc. *
|
* Copyright 2001, 2010 Fidelity Information Services, Inc *
|
||||||
* *
|
* *
|
||||||
* This source code contains the intellectual property *
|
* This source code contains the intellectual property *
|
||||||
* of its copyright holder(s), and is made available *
|
* of its copyright holder(s), and is made available *
|
||||||
|
@ -9,9 +9,9 @@
|
||||||
* *
|
* *
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
#ifndef __CRIT_WAKE_ALARM_H__
|
#ifndef __AUTO_ZLINK_H__
|
||||||
#define __CRIT_WAKE_ALARM_H__
|
#define __AUTO_ZLINK_H__
|
||||||
|
|
||||||
void crit_wake_alarm(void);
|
rhdtyp *auto_zlink (unsigned char *pc, int4 **line);
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global call_dm
|
||||||
|
.type call_dm, %function
|
||||||
|
call_dm:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size call_dm, .-call_dm
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global ci_restart
|
||||||
|
.type ci_restart, %function
|
||||||
|
ci_restart:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size ci_restart, .-ci_restart
|
|
@ -0,0 +1,39 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global compswap
|
||||||
|
.type compswap, %function
|
||||||
|
compswap:
|
||||||
|
@ args = 4, pretend = 0, frame = 24
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #28
|
||||||
|
str r0, [fp, #-16]
|
||||||
|
str r1, [fp, #-20]
|
||||||
|
str r2, [fp, #-24]
|
||||||
|
str r3, [fp, #-28]
|
||||||
|
ldr r3, [fp, #-20]
|
||||||
|
str r3, [fp, #-8]
|
||||||
|
ldr r3, [fp, #-8]
|
||||||
|
add r3, r3, #17
|
||||||
|
str r3, [fp, #-8]
|
||||||
|
ldr r3, [fp, #-8]
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size compswap, .-compswap
|
|
@ -1,6 +1,6 @@
|
||||||
/****************************************************************
|
/****************************************************************
|
||||||
* *
|
* *
|
||||||
* Copyright 2001 Sanchez Computer Associates, Inc. *
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
||||||
* *
|
* *
|
||||||
* This source code contains the intellectual property *
|
* This source code contains the intellectual property *
|
||||||
* of its copyright holder(s), and is made available *
|
* of its copyright holder(s), and is made available *
|
||||||
|
@ -9,9 +9,8 @@
|
||||||
* *
|
* *
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
/*** STUB FILE ***/
|
int dm_start(void)
|
||||||
|
{
|
||||||
#include "mdef.h"
|
mum_tstart();
|
||||||
#include "error.h"
|
return 0;
|
||||||
|
}
|
||||||
void gtm_dump(void) {};
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global dm_start_arm
|
||||||
|
.type dm_start_arm, %function
|
||||||
|
dm_start_arm:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size dm_start_arm, .-dm_start_arm
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global gtm_levl_ret_code
|
||||||
|
.type gtm_levl_ret_code, %function
|
||||||
|
gtm_levl_ret_code:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size gtm_levl_ret_code, .-gtm_levl_ret_code
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global gtm_ret_code
|
||||||
|
.type gtm_ret_code, %function
|
||||||
|
gtm_ret_code:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size gtm_ret_code, .-gtm_ret_code
|
File diff suppressed because it is too large
Load Diff
|
@ -9,14 +9,12 @@
|
||||||
* *
|
* *
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
#include "mdef.h"
|
#ifndef EMIT_CODE_INCLUDED
|
||||||
#include "gt_timer.h"
|
#define EMIT_CODE_INCLUDED
|
||||||
#include "crit_wake_alarm.h"
|
|
||||||
|
|
||||||
GBLDEF bool crit_timer_expired;
|
void trip_gen(triple *ct);
|
||||||
|
short *emit_vax_inst(short *inst, oprtype **fst_opr, oprtype **lst_opr);
|
||||||
|
void emit_xfer(short xfer);
|
||||||
|
void emit_base_offset (short reg_opcode, short base_reg, int4 offset);
|
||||||
|
|
||||||
void crit_wake_alarm(void)
|
#endif
|
||||||
{
|
|
||||||
crit_timer_expired = TRUE;
|
|
||||||
GT_WAKE;
|
|
||||||
}
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
/****************************************************************
|
||||||
|
* *
|
||||||
|
* Copyright 2001, 2012 Fidelity Information Services, Inc *
|
||||||
|
* *
|
||||||
|
* This source code contains the intellectual property *
|
||||||
|
* of its copyright holder(s), and is made available *
|
||||||
|
* under a license. If you do not know the terms of *
|
||||||
|
* the license, please stop and do not read further. *
|
||||||
|
* *
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include "mdef.h"
|
||||||
|
#include "xfer_enum.h"
|
||||||
|
#include "i386.h"
|
||||||
|
#include <rtnhdr.h> /* Needed by zbreak.h */
|
||||||
|
#include "zbreak.h"
|
||||||
|
|
||||||
|
zb_code *find_line_call(void *addr)
|
||||||
|
{
|
||||||
|
unsigned char *call_addr;
|
||||||
|
union
|
||||||
|
{
|
||||||
|
ModR_M modrm;
|
||||||
|
unsigned char byte;
|
||||||
|
} modrm_byte;
|
||||||
|
|
||||||
|
call_addr = (unsigned char *)addr;
|
||||||
|
modrm_byte.byte = *(call_addr + 1);
|
||||||
|
if ((I386_INS_Grp5_Prefix == *call_addr) && (I386_INS_CALL_Ev == modrm_byte.modrm.reg_opcode))
|
||||||
|
{
|
||||||
|
call_addr++;
|
||||||
|
assert(I386_REG_EBX == modrm_byte.modrm.r_m);
|
||||||
|
call_addr++;
|
||||||
|
if (I386_MOD32_BASE_DISP_8 == modrm_byte.modrm.mod)
|
||||||
|
{
|
||||||
|
if ((xf_linestart * SIZEOF(int4) == *call_addr) ||
|
||||||
|
(xf_zbstart * SIZEOF(int4) == *call_addr))
|
||||||
|
return (zb_code *)call_addr;
|
||||||
|
call_addr++;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
assert (I386_MOD32_BASE_DISP_32 == modrm_byte.modrm.mod);
|
||||||
|
return (zb_code *)addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
modrm_byte.byte = *(call_addr + 1);
|
||||||
|
if ((I386_INS_PUSH_Ib == *call_addr) || (I386_INS_PUSH_Iv == *call_addr))
|
||||||
|
{
|
||||||
|
while ((I386_INS_PUSH_Ib == *call_addr) || (I386_INS_PUSH_Iv == *call_addr))
|
||||||
|
{
|
||||||
|
if (I386_INS_PUSH_Ib == *call_addr)
|
||||||
|
call_addr += 1 + SIZEOF(unsigned char);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assert(I386_INS_PUSH_Iv == *call_addr);
|
||||||
|
call_addr += 1 + SIZEOF(int4);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
modrm_byte.byte = *(call_addr + 1);
|
||||||
|
if ((I386_INS_Grp5_Prefix != *call_addr++) || (I386_INS_CALL_Ev != modrm_byte.modrm.reg_opcode))
|
||||||
|
return (zb_code *)addr;
|
||||||
|
assert((I386_MOD32_BASE_DISP_8 == modrm_byte.modrm.mod) || (I386_MOD32_BASE_DISP_32 == modrm_byte.modrm.mod));
|
||||||
|
assert(I386_REG_EBX == modrm_byte.modrm.r_m);
|
||||||
|
call_addr++;
|
||||||
|
if (I386_MOD32_BASE_DISP_8 == modrm_byte.modrm.mod)
|
||||||
|
{
|
||||||
|
if ((xf_linefetch * SIZEOF(int4) != *call_addr) && (xf_zbfetch * SIZEOF(int4) != *call_addr))
|
||||||
|
return (zb_code *)addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if ((I386_INS_Grp5_Prefix == *call_addr) && (I386_INS_CALL_Ev != modrm_byte.modrm.reg_opcode))
|
||||||
|
{
|
||||||
|
call_addr++;
|
||||||
|
assert((I386_MOD32_BASE_DISP_8 == modrm_byte.modrm.mod) || (I386_MOD32_BASE_DISP_32 == modrm_byte.modrm.mod));
|
||||||
|
assert(I386_REG_EBX == modrm_byte.modrm.r_m);
|
||||||
|
call_addr++;
|
||||||
|
if (I386_MOD32_BASE_DISP_8 == modrm_byte.modrm.mod)
|
||||||
|
{
|
||||||
|
if ((xf_linestart * SIZEOF(int4) != *call_addr) && (xf_zbstart * SIZEOF(int4) != *call_addr))
|
||||||
|
return (zb_code *)addr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (zb_code *)call_addr;
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global follow
|
||||||
|
.type follow, %function
|
||||||
|
follow:
|
||||||
|
@ args = 0, pretend = 0, frame = 8
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #12
|
||||||
|
str r0, [fp, #-8]
|
||||||
|
str r1, [fp, #-12]
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size follow, .-follow
|
|
@ -70,6 +70,7 @@ LITDEF err_msg gdeerrors[] = {
|
||||||
"NONASCII", "!AD is illegal for a !AD as it contains non-ASCII characters", 4,
|
"NONASCII", "!AD is illegal for a !AD as it contains non-ASCII characters", 4,
|
||||||
"CRYPTNOMM", "!AD is an encrypted database. Cannot support MM access method.", 2,
|
"CRYPTNOMM", "!AD is an encrypted database. Cannot support MM access method.", 2,
|
||||||
"JNLALLOCGROW", "Increased Journal ALLOCATION from [!AD blocks] to [!AD blocks] to match AUTOSWITCHLIMIT for !AD !AD", 8,
|
"JNLALLOCGROW", "Increased Journal ALLOCATION from [!AD blocks] to [!AD blocks] to match AUTOSWITCHLIMIT for !AD !AD", 8,
|
||||||
|
"KEYFORBLK", "But block size !AD can only support key size !AD", 4,
|
||||||
};
|
};
|
||||||
|
|
||||||
LITDEF int GDE_BLKSIZ512 = 150503435;
|
LITDEF int GDE_BLKSIZ512 = 150503435;
|
||||||
|
@ -129,9 +130,10 @@ LITDEF int GDE_WRITEERROR = 150503859;
|
||||||
LITDEF int GDE_NONASCII = 150503866;
|
LITDEF int GDE_NONASCII = 150503866;
|
||||||
LITDEF int GDE_CRYPTNOMM = 150503874;
|
LITDEF int GDE_CRYPTNOMM = 150503874;
|
||||||
LITDEF int GDE_JNLALLOCGROW = 150503883;
|
LITDEF int GDE_JNLALLOCGROW = 150503883;
|
||||||
|
LITDEF int GDE_KEYFORBLK = 150503891;
|
||||||
|
|
||||||
GBLDEF err_ctl gdeerrors_ctl = {
|
GBLDEF err_ctl gdeerrors_ctl = {
|
||||||
248,
|
248,
|
||||||
"GDE",
|
"GDE",
|
||||||
&gdeerrors[0],
|
&gdeerrors[0],
|
||||||
57};
|
58};
|
|
@ -0,0 +1,428 @@
|
||||||
|
/****************************************************************
|
||||||
|
* *
|
||||||
|
* Copyright 2001, 2012 Fidelity Information Services, Inc *
|
||||||
|
* *
|
||||||
|
* This source code contains the intellectual property *
|
||||||
|
* of its copyright holder(s), and is made available *
|
||||||
|
* under a license. If you do not know the terms of *
|
||||||
|
* the license, please stop and do not read further. *
|
||||||
|
* *
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include "mdef.h"
|
||||||
|
|
||||||
|
#include "gtm_unistd.h"
|
||||||
|
#include "gtm_stdio.h"
|
||||||
|
#include "gtm_string.h"
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include <rtnhdr.h>
|
||||||
|
#include "compiler.h"
|
||||||
|
#include "urx.h"
|
||||||
|
#include "objlabel.h" /* needed for masscomp.h */
|
||||||
|
#include "masscomp.h"
|
||||||
|
#include "gtmio.h"
|
||||||
|
#include "incr_link.h"
|
||||||
|
#include "min_max.h" /* MIDENT_CMP needs MIN */
|
||||||
|
#include "cmd_qlf.h" /* needed for CQ_UTF8 */
|
||||||
|
#include "gtm_text_alloc.h"
|
||||||
|
|
||||||
|
/* INCR_LINK - read and process a mumps object module. Link said module to currently executing image */
|
||||||
|
|
||||||
|
LITREF char gtm_release_name[];
|
||||||
|
LITREF int4 gtm_release_name_len;
|
||||||
|
|
||||||
|
static char *code;
|
||||||
|
GBLREF mident_fixed zlink_mname;
|
||||||
|
GBLREF boolean_t gtm_utf8_mode;
|
||||||
|
|
||||||
|
error_def(ERR_INVOBJ);
|
||||||
|
error_def(ERR_LOADRUNNING);
|
||||||
|
error_def(ERR_TEXT);
|
||||||
|
|
||||||
|
#define RELREAD 50 /* number of relocation entries to buffer */
|
||||||
|
typedef struct res_list_struct
|
||||||
|
{
|
||||||
|
struct res_list_struct *next, *list;
|
||||||
|
unsigned int addr, symnum;
|
||||||
|
} res_list;
|
||||||
|
|
||||||
|
void res_free(res_list *root);
|
||||||
|
bool addr_fix(int file, struct exec *fhead, urx_rtnref *urx_lcl, rhdtyp *code);
|
||||||
|
void zl_error(int4 file, int4 err, int4 err2, int4 len, char *addr);
|
||||||
|
|
||||||
|
bool incr_link(int file_desc)
|
||||||
|
{
|
||||||
|
rhdtyp *hdr, *old_rhead;
|
||||||
|
int code_size, save_errno, cnt;
|
||||||
|
int4 rhd_diff, read_size;
|
||||||
|
char *literal_ptr;
|
||||||
|
var_tabent *curvar;
|
||||||
|
char module_name[SIZEOF(mident_fixed)];
|
||||||
|
lab_tabent *lbt_ent, *lbt_bot, *lbt_top, *olbt_ent, *olbt_bot, *olbt_top, *curlab;
|
||||||
|
urx_rtnref urx_lcl_anchor;
|
||||||
|
int order;
|
||||||
|
struct exec file_hdr;
|
||||||
|
|
||||||
|
urx_lcl_anchor.len = 0;
|
||||||
|
urx_lcl_anchor.addr = 0;
|
||||||
|
urx_lcl_anchor.lab = 0;
|
||||||
|
urx_lcl_anchor.next = 0;
|
||||||
|
code = NULL;
|
||||||
|
DOREADRL(file_desc, &file_hdr, SIZEOF(file_hdr), read_size);
|
||||||
|
if (read_size != SIZEOF(file_hdr))
|
||||||
|
{
|
||||||
|
if (-1 == read_size)
|
||||||
|
{
|
||||||
|
save_errno = errno;
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT, strlen(STRERROR(save_errno)),
|
||||||
|
STRERROR(save_errno));
|
||||||
|
} else
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT, RTS_ERROR_TEXT("reading file header"));
|
||||||
|
} else if (OMAGIC != file_hdr.a_magic)
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT, RTS_ERROR_TEXT("bad magic"));
|
||||||
|
else if (OBJ_LABEL != file_hdr.a_stamp)
|
||||||
|
return FALSE; /* wrong version */
|
||||||
|
assert(0 == file_hdr.a_bss);
|
||||||
|
code_size = file_hdr.a_text + file_hdr.a_data;
|
||||||
|
code = GTM_TEXT_ALLOC(code_size);
|
||||||
|
DOREADRL(file_desc, code, code_size, read_size);
|
||||||
|
if (read_size != code_size)
|
||||||
|
{
|
||||||
|
if (-1 == read_size)
|
||||||
|
{
|
||||||
|
save_errno = errno;
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT, strlen(STRERROR(save_errno)), STRERROR(save_errno)); /* BYPASSOK */
|
||||||
|
} else
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT, RTS_ERROR_TEXT("reading code"));
|
||||||
|
}
|
||||||
|
hdr = (rhdtyp *)code;
|
||||||
|
if (memcmp(&hdr->jsb[0], "GTM_CODE", SIZEOF(hdr->jsb)))
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT, RTS_ERROR_TEXT("missing GTM_CODE"));
|
||||||
|
if ((hdr->compiler_qlf & CQ_UTF8) && !gtm_utf8_mode)
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT,
|
||||||
|
RTS_ERROR_TEXT("Object compiled with CHSET=UTF-8 which is different from $ZCHSET"));
|
||||||
|
if (!(hdr->compiler_qlf & CQ_UTF8) && gtm_utf8_mode)
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT,
|
||||||
|
RTS_ERROR_TEXT("Object compiled with CHSET=M which is different from $ZCHSET"));
|
||||||
|
literal_ptr = code + file_hdr.a_text;
|
||||||
|
for (cnt = hdr->vartab_len, curvar = VARTAB_ADR(hdr); cnt; --cnt, ++curvar)
|
||||||
|
{ /* relocate the variable table */
|
||||||
|
assert(0 < curvar->var_name.len);
|
||||||
|
curvar->var_name.addr += (uint4)literal_ptr;
|
||||||
|
}
|
||||||
|
for (cnt = hdr->labtab_len, curlab = LABTAB_ADR(hdr); cnt; --cnt, ++curlab)
|
||||||
|
/* relocate the label table */
|
||||||
|
curlab->lab_name.addr += (uint4)literal_ptr;
|
||||||
|
if (!addr_fix(file_desc, &file_hdr, &urx_lcl_anchor, hdr))
|
||||||
|
{
|
||||||
|
urx_free(&urx_lcl_anchor);
|
||||||
|
zl_error(file_desc, ERR_INVOBJ, ERR_TEXT, RTS_ERROR_TEXT("address fixup failure"));
|
||||||
|
}
|
||||||
|
if (!zlput_rname(hdr))
|
||||||
|
{
|
||||||
|
urx_free(&urx_lcl_anchor);
|
||||||
|
/* Copy routine name to local variable because zl_error free's it. */
|
||||||
|
memcpy(&module_name[0], hdr->routine_name.addr, hdr->routine_name.len);
|
||||||
|
zl_error(file_desc, 0, ERR_LOADRUNNING, hdr->routine_name.len, &module_name[0]);
|
||||||
|
}
|
||||||
|
urx_add(&urx_lcl_anchor);
|
||||||
|
old_rhead = (rhdtyp *)hdr->old_rhead_ptr;
|
||||||
|
lbt_bot = (lab_tabent *)((char *)hdr + hdr->labtab_ptr);
|
||||||
|
lbt_top = lbt_bot + hdr->labtab_len;
|
||||||
|
while (old_rhead)
|
||||||
|
{
|
||||||
|
lbt_ent = lbt_bot;
|
||||||
|
olbt_bot = (lab_tabent *)((char *)old_rhead + old_rhead->labtab_ptr);
|
||||||
|
olbt_top = olbt_bot + old_rhead->labtab_len;
|
||||||
|
for (olbt_ent = olbt_bot; olbt_ent < olbt_top; olbt_ent++)
|
||||||
|
{
|
||||||
|
for (; lbt_ent < lbt_top; lbt_ent++)
|
||||||
|
{
|
||||||
|
MIDENT_CMP(&olbt_ent->lab_name, &lbt_ent->lab_name, order);
|
||||||
|
if (order <= 0)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if ((lbt_ent < lbt_top) && !order)
|
||||||
|
{
|
||||||
|
olbt_ent->lab_ln_ptr = lbt_ent->lab_ln_ptr;
|
||||||
|
olbt_ent->has_parms = lbt_ent->has_parms;
|
||||||
|
} else
|
||||||
|
olbt_ent->lab_ln_ptr = 0;
|
||||||
|
}
|
||||||
|
rhd_diff = (char *)hdr - (char *)old_rhead;
|
||||||
|
old_rhead->src_full_name = hdr->src_full_name;
|
||||||
|
old_rhead->routine_name = hdr->routine_name;
|
||||||
|
old_rhead->vartab_len = hdr->vartab_len;
|
||||||
|
old_rhead->vartab_ptr = hdr->vartab_ptr + rhd_diff;
|
||||||
|
old_rhead->ptext_ptr = hdr->ptext_ptr + rhd_diff;
|
||||||
|
old_rhead->current_rhead_ptr = rhd_diff;
|
||||||
|
old_rhead->temp_mvals = hdr->temp_mvals;
|
||||||
|
old_rhead->temp_size = hdr->temp_size;
|
||||||
|
old_rhead = (rhdtyp *) old_rhead->old_rhead_ptr;
|
||||||
|
}
|
||||||
|
urx_resolve(hdr, lbt_bot, lbt_top);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool addr_fix(int file, struct exec *fhead, urx_rtnref *urx_lcl, rhdtyp *code)
|
||||||
|
{
|
||||||
|
res_list *res_root, *new_res, *res_temp, *res_temp1;
|
||||||
|
char *symbols, *sym_temp, *sym_temp1, *symtop, *res_addr;
|
||||||
|
struct relocation_info rel[RELREAD];
|
||||||
|
int numrel, rel_read, i, string_size, sym_size;
|
||||||
|
size_t status;
|
||||||
|
mident_fixed rtnid, labid;
|
||||||
|
mstr rtn_str;
|
||||||
|
rhdtyp *rtn;
|
||||||
|
lab_tabent *label, *labtop;
|
||||||
|
bool labsym;
|
||||||
|
urx_rtnref *urx_rp;
|
||||||
|
urx_addr *urx_tmpaddr;
|
||||||
|
|
||||||
|
res_root = 0;
|
||||||
|
numrel = (fhead->a_trsize + fhead->a_drsize) / SIZEOF(struct relocation_info);
|
||||||
|
if (numrel * SIZEOF(struct relocation_info) != fhead->a_trsize + fhead->a_drsize)
|
||||||
|
return FALSE;
|
||||||
|
for ( ; numrel;)
|
||||||
|
{
|
||||||
|
rel_read = numrel < RELREAD ? numrel : RELREAD;
|
||||||
|
DOREADRC(file, rel, rel_read * SIZEOF(struct relocation_info), status);
|
||||||
|
if (0 != status)
|
||||||
|
{
|
||||||
|
res_free(res_root);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
numrel -= rel_read;
|
||||||
|
for (i = 0; i < rel_read; i++)
|
||||||
|
{
|
||||||
|
if (rel[i].r_extern)
|
||||||
|
{
|
||||||
|
new_res = (res_list *)malloc(SIZEOF(*new_res));
|
||||||
|
new_res->symnum = rel[i].r_symbolnum;
|
||||||
|
new_res->addr = rel[i].r_address;
|
||||||
|
new_res->next = new_res->list = 0;
|
||||||
|
/* Insert the relocation entry in symbol number order on the unresolved chain */
|
||||||
|
if (!res_root)
|
||||||
|
res_root = new_res;
|
||||||
|
else
|
||||||
|
{ res_temp = res_root;
|
||||||
|
res_temp1 = 0;
|
||||||
|
while (res_temp)
|
||||||
|
{
|
||||||
|
if (res_temp->symnum >= new_res->symnum)
|
||||||
|
break;
|
||||||
|
res_temp1 = res_temp;
|
||||||
|
res_temp = res_temp->next;
|
||||||
|
}
|
||||||
|
if (res_temp)
|
||||||
|
{ if (res_temp->symnum == new_res->symnum)
|
||||||
|
{
|
||||||
|
new_res->list = res_temp->list;
|
||||||
|
res_temp->list = new_res;
|
||||||
|
} else
|
||||||
|
{ if (res_temp1)
|
||||||
|
{
|
||||||
|
new_res->next = res_temp1->next;
|
||||||
|
res_temp1->next = new_res;
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
assert(res_temp == res_root);
|
||||||
|
new_res->next = res_root;
|
||||||
|
res_root = new_res;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
res_temp1->next = new_res;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
*(unsigned int *)(((char *)code) + rel[i].r_address) += (unsigned int)code;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* All relocations within the routine should have been done, so copy the routine_name */
|
||||||
|
assert(code->routine_name.len < SIZEOF(zlink_mname.c));
|
||||||
|
memcpy(&zlink_mname.c[0], code->routine_name.addr, code->routine_name.len);
|
||||||
|
zlink_mname.c[code->routine_name.len] = 0;
|
||||||
|
if (!res_root)
|
||||||
|
return TRUE;
|
||||||
|
if ((off_t)-1 == lseek(file, (off_t)fhead->a_syms, SEEK_CUR))
|
||||||
|
{ res_free(res_root);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
DOREADRC(file, &string_size, SIZEOF(string_size), status);
|
||||||
|
if (0 != status)
|
||||||
|
{
|
||||||
|
res_free(res_root);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
string_size -= SIZEOF(string_size);
|
||||||
|
symbols = malloc(string_size);
|
||||||
|
DOREADRC(file, symbols, string_size, status);
|
||||||
|
if (0 != status)
|
||||||
|
{
|
||||||
|
free(symbols);
|
||||||
|
res_free(res_root);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
/* Match up unresolved entries with the null terminated symbol name entries from the
|
||||||
|
* symbol text pool we just read in.
|
||||||
|
*/
|
||||||
|
sym_temp = sym_temp1 = symbols;
|
||||||
|
symtop = symbols + string_size;
|
||||||
|
for (i = 0; res_root; i++)
|
||||||
|
{
|
||||||
|
while (i < res_root->symnum)
|
||||||
|
{ /* Forward symbol space until our symnum index (i) matches the symbol we are processing in res_root */
|
||||||
|
while (*sym_temp)
|
||||||
|
{
|
||||||
|
if (sym_temp >= symtop)
|
||||||
|
{
|
||||||
|
free(symbols);
|
||||||
|
res_free(res_root);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
sym_temp++;
|
||||||
|
}
|
||||||
|
sym_temp++;
|
||||||
|
sym_temp1 = sym_temp;
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
assert (i == res_root->symnum);
|
||||||
|
/* Find end of routine name that we care about */
|
||||||
|
while (('.' != *sym_temp1) && *sym_temp1)
|
||||||
|
{ if (sym_temp1 >= symtop)
|
||||||
|
{
|
||||||
|
free(symbols);
|
||||||
|
res_free(res_root);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
sym_temp1++;
|
||||||
|
}
|
||||||
|
sym_size = sym_temp1 - sym_temp;
|
||||||
|
assert(sym_size <= MAX_MIDENT_LEN);
|
||||||
|
memcpy(&rtnid.c[0], sym_temp, sym_size);
|
||||||
|
rtnid.c[sym_size] = 0;
|
||||||
|
if ('_' == rtnid.c[0])
|
||||||
|
rtnid.c[0] = '%';
|
||||||
|
assert((sym_size != mid_len(&zlink_mname)) || (0 != memcmp(&zlink_mname.c[0], &rtnid.c[0], sym_size)));
|
||||||
|
rtn_str.addr = &rtnid.c[0];
|
||||||
|
rtn_str.len = sym_size;
|
||||||
|
rtn = find_rtn_hdr(&rtn_str); /* Routine already resolved? */
|
||||||
|
sym_size = 0;
|
||||||
|
labsym = FALSE;
|
||||||
|
if (*sym_temp1 == '.')
|
||||||
|
{ /* If symbol is for a label, find the end of the label name */
|
||||||
|
sym_temp1++;
|
||||||
|
sym_temp = sym_temp1;
|
||||||
|
while (*sym_temp1)
|
||||||
|
{
|
||||||
|
if (sym_temp1 >= symtop)
|
||||||
|
{
|
||||||
|
free(symbols);
|
||||||
|
res_free(res_root);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
sym_temp1++;
|
||||||
|
}
|
||||||
|
sym_size = sym_temp1 - sym_temp;
|
||||||
|
assert(sym_size <= MAX_MIDENT_LEN);
|
||||||
|
memcpy(&labid.c[0], sym_temp, sym_size);
|
||||||
|
labid.c[sym_size] = 0;
|
||||||
|
if ('_' == labid.c[0])
|
||||||
|
labid.c[0] = '%';
|
||||||
|
labsym = TRUE;
|
||||||
|
}
|
||||||
|
sym_temp1++;
|
||||||
|
sym_temp = sym_temp1;
|
||||||
|
if (rtn)
|
||||||
|
{ /* The routine part at least is known */
|
||||||
|
if (labsym)
|
||||||
|
{ /* Look our target label up in the routines label table */
|
||||||
|
label = (lab_tabent *)((char *)rtn + rtn->labtab_ptr);
|
||||||
|
labtop = label + rtn->labtab_len;
|
||||||
|
for (; label < labtop && ((sym_size != label->lab_name.len)
|
||||||
|
|| memcmp(&labid.c[0], label->lab_name.addr, sym_size)); label++)
|
||||||
|
;
|
||||||
|
if (label < labtop)
|
||||||
|
res_addr = (char *)&label->LABENT_LNR_OFFSET;
|
||||||
|
else
|
||||||
|
res_addr = 0;
|
||||||
|
} else
|
||||||
|
res_addr = (char *)rtn;
|
||||||
|
if (res_addr)
|
||||||
|
{ /* The external symbol definition is available. Resolve all references to it */
|
||||||
|
res_temp = res_root->next;
|
||||||
|
while (res_root)
|
||||||
|
{
|
||||||
|
*(uint4 *)(((char *)code) + res_root->addr) = (unsigned int)res_addr;
|
||||||
|
res_temp1 = res_root->list;
|
||||||
|
free(res_root);
|
||||||
|
res_root = res_temp1;
|
||||||
|
}
|
||||||
|
res_root = res_temp;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/* This symbol is unknown. Put on the (local) unresolved extern chain -- either for labels or routines */
|
||||||
|
urx_rp = urx_putrtn(rtn_str.addr, rtn_str.len, urx_lcl);
|
||||||
|
res_temp = res_root->next;
|
||||||
|
while (res_root)
|
||||||
|
{
|
||||||
|
if (labsym)
|
||||||
|
urx_putlab(&labid.c[0], sym_size, urx_rp, ((char *)code) + res_root->addr);
|
||||||
|
else
|
||||||
|
{ urx_tmpaddr = (urx_addr *)malloc(SIZEOF(urx_addr));
|
||||||
|
urx_tmpaddr->next = urx_rp->addr;
|
||||||
|
urx_tmpaddr->addr = (INTPTR_T *)(((char *)code) + res_root->addr);
|
||||||
|
urx_rp->addr = urx_tmpaddr;
|
||||||
|
}
|
||||||
|
res_temp1 = res_root->list;
|
||||||
|
free(res_root);
|
||||||
|
res_root = res_temp1;
|
||||||
|
}
|
||||||
|
res_root = res_temp;
|
||||||
|
}
|
||||||
|
free(symbols);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void res_free(res_list *root)
|
||||||
|
{
|
||||||
|
res_list *temp;
|
||||||
|
|
||||||
|
while (root)
|
||||||
|
{ while (root->list)
|
||||||
|
{ temp = root->list->list;
|
||||||
|
free(root->list);
|
||||||
|
root->list = temp;
|
||||||
|
}
|
||||||
|
temp = root->next;
|
||||||
|
free(root);
|
||||||
|
root = temp;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ZL_ERROR - perform cleanup and signal errors found in zlinking a mumps object module
|
||||||
|
* err - an error code that accepts no arguments and
|
||||||
|
* err2 - an error code that accepts two arguments (!AD)
|
||||||
|
*/
|
||||||
|
void zl_error(int4 file, int4 err, int4 err2, int4 len, char *addr)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (code)
|
||||||
|
{
|
||||||
|
GTM_TEXT_FREE(code);
|
||||||
|
code = NULL;
|
||||||
|
}
|
||||||
|
CLOSEFILE_RESET(file, rc); /* resets "file" to FD_INVALID */
|
||||||
|
if ((0 != err) && (0 != err2))
|
||||||
|
rts_error(VARLSTCNT(6) err, 0, err2, 2, len, addr);
|
||||||
|
else if (0 != err)
|
||||||
|
rts_error(VARLSTCNT(1) err);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
assert(0 != err2);
|
||||||
|
rts_error(VARLSTCNT(4) err2, 2, len, addr);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,81 @@
|
||||||
|
/****************************************************************
|
||||||
|
* *
|
||||||
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
||||||
|
* *
|
||||||
|
* This source code contains the intellectual property *
|
||||||
|
* of its copyright holder(s), and is made available *
|
||||||
|
* under a license. If you do not know the terms of *
|
||||||
|
* the license, please stop and do not read further. *
|
||||||
|
* *
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include "mdef.h"
|
||||||
|
|
||||||
|
#include "gtm_string.h"
|
||||||
|
|
||||||
|
#include "error.h"
|
||||||
|
#include <rtnhdr.h>
|
||||||
|
#include "op.h"
|
||||||
|
#include "i386.h"
|
||||||
|
#include "inst_flush.h"
|
||||||
|
#include "gtmci.h"
|
||||||
|
#include "gtm_text_alloc.h"
|
||||||
|
|
||||||
|
#define CALL_SIZE 5
|
||||||
|
#define CODE_SIZE (3 * CALL_SIZE)
|
||||||
|
#define CODE_LINES 3
|
||||||
|
|
||||||
|
/* The code created and returned by make_cimode() is executed in the frame GTM$CI at level 1 of
|
||||||
|
* every nested call-in environment. For every M routine being called-in from C, GTM$CI code
|
||||||
|
* will setup argument registers/stack and executes the M routine. When the M routine returns
|
||||||
|
* from its final QUIT, GTM$CI returns to gtm_ci(). make_cimode generates machine equivalents
|
||||||
|
* for the following operations in that order:
|
||||||
|
*
|
||||||
|
* CALL ci_restart :setup register/stack arguments from 'param_list' and transfer control
|
||||||
|
* to op_extcall/op_extexfun which return only after the M routine finishes and QUITs.
|
||||||
|
* CALL ci_ret_code :transfer control from the M routine back to C (gtm_ci). Never returns.
|
||||||
|
* CALL opp_ret :an implicit QUIT although it is never executed.
|
||||||
|
*
|
||||||
|
* Before GTM$CI executes, it is assumed that the global 'param_list' has been populated with
|
||||||
|
* argument/return mval*.
|
||||||
|
*/
|
||||||
|
rhdtyp *make_cimode(void)
|
||||||
|
{
|
||||||
|
static rhdtyp *base_address = NULL;
|
||||||
|
lab_tabent *lbl;
|
||||||
|
int *lnr;
|
||||||
|
unsigned char *code;
|
||||||
|
|
||||||
|
if (NULL != base_address)
|
||||||
|
return base_address;
|
||||||
|
base_address = (rhdtyp *)GTM_TEXT_ALLOC(SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent) + CODE_LINES * SIZEOF(int4));
|
||||||
|
memset(base_address,0,SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent) + CODE_LINES * SIZEOF(int4));
|
||||||
|
base_address->routine_name.len = STR_LIT_LEN(GTM_CIMOD);
|
||||||
|
base_address->routine_name.addr = GTM_CIMOD;
|
||||||
|
base_address->ptext_ptr = SIZEOF(rhdtyp);
|
||||||
|
base_address->vartab_ptr =
|
||||||
|
base_address->labtab_ptr = SIZEOF(rhdtyp) + CODE_SIZE; /* hdr + code */
|
||||||
|
base_address->lnrtab_ptr = SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent);
|
||||||
|
base_address->labtab_len = 1;
|
||||||
|
base_address->lnrtab_len = CODE_LINES;
|
||||||
|
code = (unsigned char *) base_address + base_address->ptext_ptr;
|
||||||
|
*code++ = I386_INS_CALL_Jv;
|
||||||
|
*((int4 *)code) = (int4)((unsigned char *)ci_restart - (code + SIZEOF(int4)));
|
||||||
|
code += SIZEOF(int4);
|
||||||
|
*code++ = I386_INS_CALL_Jv; /* a CALL to return control from M to ci_ret_code() which in turn returns to gtm_ci() */
|
||||||
|
*((int4 *)code) = (int4)((unsigned char *)ci_ret_code - (code + SIZEOF(int4)));
|
||||||
|
code += SIZEOF(int4);
|
||||||
|
*code++ = I386_INS_JMP_Jv;
|
||||||
|
*((int4 *)code) = (int4)((unsigned char *)opp_ret - (code + SIZEOF(int4)));
|
||||||
|
code += SIZEOF(int4);
|
||||||
|
lbl = (lab_tabent *)((int) base_address + base_address->labtab_ptr);
|
||||||
|
lbl->lab_ln_ptr = base_address->lnrtab_ptr;
|
||||||
|
lnr = (int *)((int)base_address + base_address->lnrtab_ptr);
|
||||||
|
*lnr++ = base_address->ptext_ptr;
|
||||||
|
*lnr++ = base_address->ptext_ptr;
|
||||||
|
*lnr++ = base_address->ptext_ptr + 2 * CALL_SIZE;
|
||||||
|
assert(code - ((unsigned char *)base_address + base_address->ptext_ptr) == CODE_SIZE);
|
||||||
|
zlput_rname(base_address);
|
||||||
|
inst_flush(base_address, SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent) + CODE_LINES * SIZEOF(int4));
|
||||||
|
return base_address;
|
||||||
|
}
|
|
@ -0,0 +1,67 @@
|
||||||
|
/****************************************************************
|
||||||
|
* *
|
||||||
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
||||||
|
* *
|
||||||
|
* This source code contains the intellectual property *
|
||||||
|
* of its copyright holder(s), and is made available *
|
||||||
|
* under a license. If you do not know the terms of *
|
||||||
|
* the license, please stop and do not read further. *
|
||||||
|
* *
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include "mdef.h"
|
||||||
|
|
||||||
|
#include "gtm_string.h"
|
||||||
|
|
||||||
|
#include "error.h"
|
||||||
|
#include <rtnhdr.h>
|
||||||
|
#include "op.h"
|
||||||
|
#include "i386.h"
|
||||||
|
#include "inst_flush.h"
|
||||||
|
#include "dm_setup.h"
|
||||||
|
#include "gtm_text_alloc.h"
|
||||||
|
|
||||||
|
#define CALL_SIZE 5
|
||||||
|
#define CODE_SIZE 3*CALL_SIZE
|
||||||
|
#define CODE_LINES 3
|
||||||
|
|
||||||
|
rhdtyp *make_dmode(void)
|
||||||
|
{
|
||||||
|
rhdtyp *base_address;
|
||||||
|
lab_tabent *lbl;
|
||||||
|
int *lnr;
|
||||||
|
unsigned char *code;
|
||||||
|
/* dummy code + label entry + line entries */
|
||||||
|
base_address = (rhdtyp *)GTM_TEXT_ALLOC(SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent) + CODE_LINES * SIZEOF(int4));
|
||||||
|
memset(base_address,0,SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent) + CODE_LINES*SIZEOF(int4));
|
||||||
|
base_address->routine_name.len = STR_LIT_LEN(GTM_DMOD);
|
||||||
|
base_address->routine_name.addr = GTM_DMOD;
|
||||||
|
base_address->ptext_ptr = SIZEOF(rhdtyp);
|
||||||
|
base_address->vartab_ptr =
|
||||||
|
base_address->labtab_ptr = SIZEOF(rhdtyp) + CODE_SIZE; /* hdr + code */
|
||||||
|
base_address->lnrtab_ptr = SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent);
|
||||||
|
base_address->labtab_len = 1;
|
||||||
|
base_address->lnrtab_len = CODE_LINES;
|
||||||
|
code = (unsigned char *) base_address + base_address->ptext_ptr;
|
||||||
|
*code++ = I386_INS_CALL_Jv;
|
||||||
|
*((int4 *)code) = (int4)((unsigned char *)dm_setup - (code + SIZEOF(int4)));
|
||||||
|
code += SIZEOF(int4);
|
||||||
|
*code++ = I386_INS_CALL_Jv; /* this should be a CALL to maintain uniformity between transfer to mum_tstart from baseframe
|
||||||
|
and transfers to mum_tstart from error processing (MUM_TSTART marco in
|
||||||
|
mdb_condition_handler) */
|
||||||
|
*((int4 *)code) = (int4)((unsigned char *)mum_tstart - (code + SIZEOF(int4)));
|
||||||
|
code += SIZEOF(int4);
|
||||||
|
*code++ = I386_INS_JMP_Jv;
|
||||||
|
*((int4 *)code) = (int4)((unsigned char *)opp_ret - (code + SIZEOF(int4)));
|
||||||
|
code += SIZEOF(int4);
|
||||||
|
lbl = (lab_tabent *)((int) base_address + base_address->labtab_ptr);
|
||||||
|
lbl->lab_ln_ptr = base_address->lnrtab_ptr;
|
||||||
|
lnr = (int *)((int)base_address + base_address->lnrtab_ptr);
|
||||||
|
*lnr++ = base_address->ptext_ptr;
|
||||||
|
*lnr++ = base_address->ptext_ptr;
|
||||||
|
*lnr++ = base_address->ptext_ptr + 2 * CALL_SIZE;
|
||||||
|
assert(code - ((unsigned char *)base_address + base_address->ptext_ptr) == CODE_SIZE);
|
||||||
|
zlput_rname(base_address);
|
||||||
|
inst_flush(base_address, SIZEOF(rhdtyp) + CODE_SIZE + SIZEOF(lab_tabent) + CODE_LINES * SIZEOF(int4));
|
||||||
|
return base_address;
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
/****************************************************************
|
||||||
|
* *
|
||||||
|
* Copyright 2001 Sanchez Computer Associates, Inc. *
|
||||||
|
* *
|
||||||
|
* This source code contains the intellectual property *
|
||||||
|
* of its copyright holder(s), and is made available *
|
||||||
|
* under a license. If you do not know the terms of *
|
||||||
|
* the license, please stop and do not read further. *
|
||||||
|
* *
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
struct exec {
|
||||||
|
short a_magic; /* magic number */
|
||||||
|
short a_stamp; /* version stamp - RTU 2.0+ uses this - see below */
|
||||||
|
uint4 a_text; /* size of text segment */
|
||||||
|
uint4 a_data; /* size of initialized data */
|
||||||
|
uint4 a_bss; /* size of uninitialized data */
|
||||||
|
uint4 a_syms; /* size of symbol table */
|
||||||
|
uint4 a_entry; /* entry point */
|
||||||
|
uint4 a_trsize; /* size of text relocation */
|
||||||
|
uint4 a_drsize; /* size of data relocation */
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Format of a relocation datum.
|
||||||
|
*/
|
||||||
|
struct relocation_info {
|
||||||
|
int r_address; /* address which is relocated */
|
||||||
|
unsigned int r_symbolnum:24, /* local symbol ordinal */
|
||||||
|
r_pcrel:1, /* was relocated pc relative already */
|
||||||
|
r_length:2, /* 0=byte, 1=word, 2=int4 */
|
||||||
|
r_extern:1, /* does not include value of sym referenced */
|
||||||
|
r_pad:4; /* nothing, yet */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct rel_table {
|
||||||
|
struct rel_table *next, *resolve;
|
||||||
|
struct relocation_info r;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Format of a symbol table entry; this file is included by <a.out.h>
|
||||||
|
* and should be used if you aren't interested the a.out header
|
||||||
|
* or relocation information.
|
||||||
|
*/
|
||||||
|
struct nlist {
|
||||||
|
int4 n_strx; /* index into file string table */
|
||||||
|
unsigned char n_type; /* type flag, i.e. N_TEXT etc; see below */
|
||||||
|
char n_other; /* unused */
|
||||||
|
short n_desc; /* see <stab.h> */
|
||||||
|
uint4 n_value; /* value of this symbol (or sdb offset) */
|
||||||
|
};
|
||||||
|
|
||||||
|
struct sym_table {
|
||||||
|
struct sym_table *next;
|
||||||
|
struct nlist n;
|
||||||
|
struct rel_table *resolve;
|
||||||
|
unsigned short name_len;
|
||||||
|
unsigned char name[1];
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Simple values for n_type.
|
||||||
|
*/
|
||||||
|
#define N_UNDF 0x0 /* undefined */
|
||||||
|
#define N_ABS 0x2 /* absolute */
|
||||||
|
#define N_TEXT 0x4 /* text */
|
||||||
|
#define N_DATA 0x6 /* data */
|
||||||
|
#define N_BSS 0x8 /* bss */
|
||||||
|
#define N_COMM 0x12 /* common (internal to ld) */
|
||||||
|
#define N_IPCOMM 0x16 /* initialized private */
|
||||||
|
#define N_PCOMM 0x18 /* uninitialized private */
|
||||||
|
#define N_FN 0x1f /* file name symbol */
|
||||||
|
|
||||||
|
#define N_EXT 01 /* external bit, or'ed in */
|
||||||
|
#define N_TYPE 0x1e /* mask for all the type bits */
|
||||||
|
|
|
@ -427,8 +427,8 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* JNLINVEXT */
|
0, /* JNLINVEXT */
|
||||||
0, /* MUPCLIERR */
|
0, /* MUPCLIERR */
|
||||||
0, /* JNLTMQUAL4 */
|
0, /* JNLTMQUAL4 */
|
||||||
0, /* JNLBUFFTOOLG */
|
0, /* UNUSEDMSG594 */
|
||||||
0, /* JNLBUFFTOOSM */
|
0, /* UNUSEDMSG595 */
|
||||||
0, /* MUNODBNAME */
|
0, /* MUNODBNAME */
|
||||||
0, /* FILECREATE */
|
0, /* FILECREATE */
|
||||||
0, /* FILENOTCREATE */
|
0, /* FILENOTCREATE */
|
||||||
|
@ -642,7 +642,7 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* JNLRDONLY */
|
0, /* JNLRDONLY */
|
||||||
0, /* ANCOMPTINC */
|
0, /* ANCOMPTINC */
|
||||||
0, /* ABNCOMPTINC */
|
0, /* ABNCOMPTINC */
|
||||||
0, /* GTMSECSHRLOGF */
|
0, /* UNUSEDMSG809 */
|
||||||
0, /* SOCKNOTFND */
|
0, /* SOCKNOTFND */
|
||||||
0, /* CURRSOCKOFR */
|
0, /* CURRSOCKOFR */
|
||||||
79, /* SOCKETEXIST */
|
79, /* SOCKETEXIST */
|
||||||
|
@ -731,8 +731,8 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* SCNDDBNOUPD */
|
0, /* SCNDDBNOUPD */
|
||||||
0, /* MUINFOUINT4 */
|
0, /* MUINFOUINT4 */
|
||||||
0, /* NLMISMATCHCALC */
|
0, /* NLMISMATCHCALC */
|
||||||
0, /* GTMSECSHRLOGSWH */
|
0, /* UNUSEDMSG898 */
|
||||||
0, /* GTMSECSHRDEFLOG */
|
0, /* UNUSEDMSG899 */
|
||||||
0, /* DBBADNSUB */
|
0, /* DBBADNSUB */
|
||||||
0, /* DBBADKYNM */
|
0, /* DBBADKYNM */
|
||||||
0, /* DBBADPNTR */
|
0, /* DBBADPNTR */
|
||||||
|
@ -964,7 +964,7 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* PREVJNLLINKCUT */
|
0, /* PREVJNLLINKCUT */
|
||||||
0, /* PREVJNLLINKSET */
|
0, /* PREVJNLLINKSET */
|
||||||
0, /* FILENAMETOOLONG */
|
0, /* FILENAMETOOLONG */
|
||||||
0, /* UNUSEDMSG1131 */
|
0, /* REQRECOV */
|
||||||
0, /* JNLTRANS2BIG */
|
0, /* JNLTRANS2BIG */
|
||||||
0, /* JNLSWITCHTOOSM */
|
0, /* JNLSWITCHTOOSM */
|
||||||
0, /* JNLSWITCHSZCHG */
|
0, /* JNLSWITCHSZCHG */
|
||||||
|
@ -1088,7 +1088,7 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* REPLINSTSEQORD */
|
0, /* REPLINSTSEQORD */
|
||||||
0, /* REPLINSTSTNDALN */
|
0, /* REPLINSTSTNDALN */
|
||||||
0, /* REPLREQROLLBACK */
|
0, /* REPLREQROLLBACK */
|
||||||
0, /* UNUSEDMSG1255 */
|
0, /* REQROLLBACK */
|
||||||
0, /* UNUSEDMSG1256 */
|
0, /* UNUSEDMSG1256 */
|
||||||
0, /* SRCSRVEXISTS */
|
0, /* SRCSRVEXISTS */
|
||||||
0, /* SRCSRVNOTEXIST */
|
0, /* SRCSRVNOTEXIST */
|
||||||
|
@ -1246,12 +1246,12 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* NORESYNCUPDATERONLY */
|
0, /* NORESYNCUPDATERONLY */
|
||||||
0, /* NOSUPPLSUPPL */
|
0, /* NOSUPPLSUPPL */
|
||||||
0, /* REPL2OLD */
|
0, /* REPL2OLD */
|
||||||
0, /* RCVR2MANY */
|
0, /* UNUSEDMSG1413 */
|
||||||
0, /* RLBKCONFIGBNDRY */
|
0, /* UNUSEDMSG1414 */
|
||||||
0, /* SECNOTSUPPLEMENTARY */
|
0, /* SECNOTSUPPLEMENTARY */
|
||||||
0, /* SUPRCVRNEEDSSUPSRC */
|
0, /* SUPRCVRNEEDSSUPSRC */
|
||||||
0, /* SYNCTOSAMETYPE */
|
0, /* UNUSEDMSG1417 */
|
||||||
0, /* TARGINSRUNNING */
|
0, /* UNUSEDMSG1418 */
|
||||||
0, /* UPDSYNC2MTINS */
|
0, /* UPDSYNC2MTINS */
|
||||||
0, /* UPDSYNCINSTFILE */
|
0, /* UPDSYNCINSTFILE */
|
||||||
0, /* REUSEINSTNAME */
|
0, /* REUSEINSTNAME */
|
||||||
|
@ -1270,7 +1270,7 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* ORLBKNOV4BLK */
|
0, /* ORLBKNOV4BLK */
|
||||||
0, /* DBROLLEDBACK */
|
0, /* DBROLLEDBACK */
|
||||||
0, /* DSEWCREINIT */
|
0, /* DSEWCREINIT */
|
||||||
0, /* RNDWNSKIPCNT */
|
0, /* UNUSEDMSG1437 */
|
||||||
0, /* REPLONLNRLBK */
|
0, /* REPLONLNRLBK */
|
||||||
0, /* SRVLCKWT2LNG */
|
0, /* SRVLCKWT2LNG */
|
||||||
0, /* IGNBMPMRKFREE */
|
0, /* IGNBMPMRKFREE */
|
||||||
|
@ -1293,4 +1293,35 @@ const static readonly int error_ansi[] = {
|
||||||
0, /* STRMSEQMISMTCH */
|
0, /* STRMSEQMISMTCH */
|
||||||
0, /* LOCKSPACEINFO */
|
0, /* LOCKSPACEINFO */
|
||||||
0, /* JRTNULLFAIL */
|
0, /* JRTNULLFAIL */
|
||||||
|
0, /* LOCKSUB2LONG */
|
||||||
|
0, /* RESRCWAIT */
|
||||||
|
0, /* RESRCINTRLCKBYPAS */
|
||||||
|
0, /* DBFHEADERRANY */
|
||||||
|
0, /* REPLINSTFROZEN */
|
||||||
|
0, /* REPLINSTFREEZECOMMENT */
|
||||||
|
0, /* REPLINSTUNFROZEN */
|
||||||
|
0, /* DSKNOSPCAVAIL */
|
||||||
|
0, /* DSKNOSPCBLOCKED */
|
||||||
|
0, /* DSKSPCAVAILABLE */
|
||||||
|
0, /* ENOSPCQIODEFER */
|
||||||
|
0, /* CUSTOMFILOPERR */
|
||||||
|
0, /* CUSTERRNOTFND */
|
||||||
|
0, /* CUSTERRSYNTAX */
|
||||||
|
0, /* ORLBKINPROG */
|
||||||
|
0, /* DBSPANGLOINCMP */
|
||||||
|
0, /* DBSPANCHUNKORD */
|
||||||
|
0, /* DBDATAMX */
|
||||||
|
0, /* DBIOERR */
|
||||||
|
0, /* INITORRESUME */
|
||||||
|
0, /* GTMSECSHRNOARG0 */
|
||||||
|
0, /* GTMSECSHRISNOT */
|
||||||
|
0, /* GTMSECSHRBADDIR */
|
||||||
|
0, /* JNLBUFFREGUPD */
|
||||||
|
0, /* JNLBUFFDBUPD */
|
||||||
|
0, /* LOCKINCR2HIGH */
|
||||||
|
0, /* LOCKIS */
|
||||||
|
0, /* LDSPANGLOINCMP */
|
||||||
|
0, /* MUFILRNDWNFL2 */
|
||||||
|
0, /* MUINSTFROZEN */
|
||||||
|
0, /* MUINSTUNFROZEN */
|
||||||
};
|
};
|
|
@ -305,8 +305,8 @@ LITDEF err_msg merrors[] = {
|
||||||
"DBBLEVMN", "!AD Block level less than zero", 2,
|
"DBBLEVMN", "!AD Block level less than zero", 2,
|
||||||
"DBBSIZMN", "!AD Block too small", 2,
|
"DBBSIZMN", "!AD Block too small", 2,
|
||||||
"DBBSIZMX", "!AD Block larger than file block size", 2,
|
"DBBSIZMX", "!AD Block larger than file block size", 2,
|
||||||
"DBRSIZMN", "!AD Record too small", 2,
|
"DBRSIZMN", "!AD Physical record too small", 2,
|
||||||
"DBRSIZMX", "!AD Record too large", 2,
|
"DBRSIZMX", "!AD Physical record too large", 2,
|
||||||
"DBCMPNZRO", "!AD First record of block has nonzero compression count", 2,
|
"DBCMPNZRO", "!AD First record of block has nonzero compression count", 2,
|
||||||
"DBSTARSIZ", "!AD Star record has wrong size", 2,
|
"DBSTARSIZ", "!AD Star record has wrong size", 2,
|
||||||
"DBSTARCMP", "!AD Star record has nonzero compression count", 2,
|
"DBSTARCMP", "!AD Star record has nonzero compression count", 2,
|
||||||
|
@ -429,8 +429,8 @@ LITDEF err_msg merrors[] = {
|
||||||
"JNLINVEXT", "Journal file extension !UL is greater than the maximum allowed size of !UL. Journal file not created.", 2,
|
"JNLINVEXT", "Journal file extension !UL is greater than the maximum allowed size of !UL. Journal file not created.", 2,
|
||||||
"MUPCLIERR", "Action not taken due to CLI errors", 0,
|
"MUPCLIERR", "Action not taken due to CLI errors", 0,
|
||||||
"JNLTMQUAL4", "Time qualifier BEFORE_TIME=\"!AZ\" is less than AFTER_TIME=\"!AZ\"", 2,
|
"JNLTMQUAL4", "Time qualifier BEFORE_TIME=\"!AZ\" is less than AFTER_TIME=\"!AZ\"", 2,
|
||||||
"JNLBUFFTOOLG", "Journal file buffer !UL is greater than the maximum allowed size of !UL. Journal file not created.", 2,
|
"UNUSEDMSG594", "JNLBUFFTOOLG Last used in V5.5-000", 0,
|
||||||
"JNLBUFFTOOSM", "Journal file buffer !UL is less than minimum of database block size in 512 byte pages + 1 (!UL)", 2,
|
"UNUSEDMSG595", "JNLBUFFTOOSM Last used in V5.5-000", 0,
|
||||||
"MUNODBNAME", "A database name or the region qualifier must be specified", 0,
|
"MUNODBNAME", "A database name or the region qualifier must be specified", 0,
|
||||||
"FILECREATE", "!AD file !AD created", 4,
|
"FILECREATE", "!AD file !AD created", 4,
|
||||||
"FILENOTCREATE", "!AD file !AD not created", 4,
|
"FILENOTCREATE", "!AD file !AD not created", 4,
|
||||||
|
@ -505,7 +505,7 @@ LITDEF err_msg merrors[] = {
|
||||||
"CENOINDIR", "Indirection type information not available for compiler escape feature", 0,
|
"CENOINDIR", "Indirection type information not available for compiler escape feature", 0,
|
||||||
"COLLATIONUNDEF", "Collation type !UL is not defined", 1,
|
"COLLATIONUNDEF", "Collation type !UL is not defined", 1,
|
||||||
"RBWRNNOTCHG", "Not all specified database files were changed", 0,
|
"RBWRNNOTCHG", "Not all specified database files were changed", 0,
|
||||||
"GTMSECSHRSRVF", "!AD - !UL : Attempt to service request failed", 3,
|
"GTMSECSHRSRVF", "!AD - !UL : Attempt to service request failed (retry = !UL)", 4,
|
||||||
"FREEZECTRL", "Control Y or control C encountered during attempt to freeze the database. Aborting freeze.", 0,
|
"FREEZECTRL", "Control Y or control C encountered during attempt to freeze the database. Aborting freeze.", 0,
|
||||||
"JNLFLUSH", "Error flushing journal buffers to journal file !AD", 2,
|
"JNLFLUSH", "Error flushing journal buffers to journal file !AD", 2,
|
||||||
"CCPSIGDMP", "CCP non fatal dump, continuing operation. Report to your GT.M Support Channel.", 0,
|
"CCPSIGDMP", "CCP non fatal dump, continuing operation. Report to your GT.M Support Channel.", 0,
|
||||||
|
@ -583,11 +583,11 @@ LITDEF err_msg merrors[] = {
|
||||||
"BLKSIZ512", "Block size !UL rounds to !UL", 2,
|
"BLKSIZ512", "Block size !UL rounds to !UL", 2,
|
||||||
"MUTEXERR", "Mutual Exclusion subsystem failure", 0,
|
"MUTEXERR", "Mutual Exclusion subsystem failure", 0,
|
||||||
"JNLVSIZE", "Journal File !AD has incorrect virtual_filesize !UL. Allocation : !UL, Extension : !UL, Filesize : !UL, File system block size : !UL", 7,
|
"JNLVSIZE", "Journal File !AD has incorrect virtual_filesize !UL. Allocation : !UL, Extension : !UL, Filesize : !UL, File system block size : !UL", 7,
|
||||||
"MUTEXLCKALERT", "Mutual Exclusion subsystem ALERT - lock attempt threshold crossed for region !AD. Process !UL is in crit.", 3,
|
"MUTEXLCKALERT", "Mutual Exclusion subsystem ALERT - lock attempt threshold crossed for region !AD. Process !UL is in crit cycle !UL.", 4,
|
||||||
"MUTEXFRCDTERM", "Mutual Exclusion subsystem detected forced termination of process !UL. Crit salvaged from region !AD.", 3,
|
"MUTEXFRCDTERM", "Mutual Exclusion subsystem detected forced termination of process !UL. Crit salvaged from region !AD.", 3,
|
||||||
"GTMSECSHR", "!UL : Error during gtmsecshr operation", 1,
|
"GTMSECSHR", "!UL : Error during gtmsecshr operation", 1,
|
||||||
"GTMSECSHRSRVFID", "!AD: !UL - Attempt to service request failed.!/ client id: !UL, mesg type: !UL, mesg data: !UL.", 6,
|
"GTMSECSHRSRVFID", "!AD: !UL - Attempt to service request failed.!/ client id: !UL, mesg type: !UL, mesg data: !UL", 6,
|
||||||
"GTMSECSHRSRVFIL", "!AD: !UL - Attempt to service request failed.!/ client id: !UL, mesg type: !UL!/file: !AD.", 7,
|
"GTMSECSHRSRVFIL", "!AD: !UL - Attempt to service request failed.!/ client id: !UL, mesg type: !UL!/file: !AD", 7,
|
||||||
"SOCKACTNA", "Action not appropriate for current socket", 0,
|
"SOCKACTNA", "Action not appropriate for current socket", 0,
|
||||||
"PROTNOTSUP", "Protocol !AD not supported", 2,
|
"PROTNOTSUP", "Protocol !AD not supported", 2,
|
||||||
"DELIMSIZNA", "Delimiter size is not appropriate", 0,
|
"DELIMSIZNA", "Delimiter size is not appropriate", 0,
|
||||||
|
@ -644,7 +644,7 @@ LITDEF err_msg merrors[] = {
|
||||||
"JNLRDONLY", "Journal file !AD read only", 2,
|
"JNLRDONLY", "Journal file !AD read only", 2,
|
||||||
"ANCOMPTINC", "Deviceparameter !AD is not compatible with any other deviceparameters in the !AD command", 4,
|
"ANCOMPTINC", "Deviceparameter !AD is not compatible with any other deviceparameters in the !AD command", 4,
|
||||||
"ABNCOMPTINC", "Deviceparameter !AD and deviceparameter !AD are not compatible in the !AD command", 6,
|
"ABNCOMPTINC", "Deviceparameter !AD and deviceparameter !AD are not compatible in the !AD command", 6,
|
||||||
"GTMSECSHRLOGF", "!AD - !UL : Error while creating gtmsecshr log file", 3,
|
"UNUSEDMSG809", "GTMSECSHRLOGF last used in V5.5-000", 0,
|
||||||
"SOCKNOTFND", "Socket !AD not found", 2,
|
"SOCKNOTFND", "Socket !AD not found", 2,
|
||||||
"CURRSOCKOFR", "Current socket of index !UL is out of range. There are only !UL sockets.", 2,
|
"CURRSOCKOFR", "Current socket of index !UL is out of range. There are only !UL sockets.", 2,
|
||||||
"SOCKETEXIST", "Socket !AD already exists", 2,
|
"SOCKETEXIST", "Socket !AD already exists", 2,
|
||||||
|
@ -733,8 +733,8 @@ LITDEF err_msg merrors[] = {
|
||||||
"SCNDDBNOUPD", "Database Updates not allowed on the secondary", 0,
|
"SCNDDBNOUPD", "Database Updates not allowed on the secondary", 0,
|
||||||
"MUINFOUINT4", "!AD : !UL [0x!XL]", 4,
|
"MUINFOUINT4", "!AD : !UL [0x!XL]", 4,
|
||||||
"NLMISMATCHCALC", "Location of !AD expected at 0x!XL, but found at 0x!XL", 4,
|
"NLMISMATCHCALC", "Location of !AD expected at 0x!XL, but found at 0x!XL", 4,
|
||||||
"GTMSECSHRLOGSWH", "Error switching gtmsecshr log file gtmsecshr log -- !AD original log -- !AD error phase -- !AD process id -- !UL", 7,
|
"UNUSEDMSG898", "GTMSECSHRLOGSWH last used in V5.5-000", 0,
|
||||||
"GTMSECSHRDEFLOG", "$gtm_log is either undefined or not defined to an absolute path, thus gtm_log is set to its default !AD", 2,
|
"UNUSEDMSG899", "GTMSECSHRDEFLOG last used in V5.5-000", 0,
|
||||||
"DBBADNSUB", "!AD Bad numeric subscript", 2,
|
"DBBADNSUB", "!AD Bad numeric subscript", 2,
|
||||||
"DBBADKYNM", "!AD Bad key name", 2,
|
"DBBADKYNM", "!AD Bad key name", 2,
|
||||||
"DBBADPNTR", "!AD Bad pointer value in directory", 2,
|
"DBBADPNTR", "!AD Bad pointer value in directory", 2,
|
||||||
|
@ -813,8 +813,8 @@ LITDEF err_msg merrors[] = {
|
||||||
"DBADDRANGE8", "Database file !AD, element location 0x!XJ: blk = 0x!XL: control 0x!16@XQ was outside !AD range 0x!16@XQ to 0x!16@XQ", 9,
|
"DBADDRANGE8", "Database file !AD, element location 0x!XJ: blk = 0x!XL: control 0x!16@XQ was outside !AD range 0x!16@XQ to 0x!16@XQ", 9,
|
||||||
"RNDWNSEMFAIL", "Attempting to acquire gds_rundown semaphore when it is already owned", 0,
|
"RNDWNSEMFAIL", "Attempting to acquire gds_rundown semaphore when it is already owned", 0,
|
||||||
"GTMSECSHRSHUTDN", "gtmsecshr process has received a shutdown request -- shutting down", 0,
|
"GTMSECSHRSHUTDN", "gtmsecshr process has received a shutdown request -- shutting down", 0,
|
||||||
"NOSPACECRE", "Not enough space to create database file !AD. !UL blocks are needed, only !UL available.", 4,
|
"NOSPACECRE", "Not enough space to create database file !AD. !@ZQ blocks are needed, only !@ZQ available.", 4,
|
||||||
"LOWSPACECRE", "Disk space for database file !AD is not enough for !UL future extensions. !UL !UL-byte blocks are needed, only !UL available.", 6,
|
"LOWSPACECRE", "Disk space for database file !AD is not enough for !UL future extensions. !@ZQ !UL-byte blocks are needed, only !@ZQ available.", 6,
|
||||||
"WAITDSKSPACE", "Process 0x!XL will wait !UL seconds for necessary disk space to become available for !AD ", 4,
|
"WAITDSKSPACE", "Process 0x!XL will wait !UL seconds for necessary disk space to become available for !AD ", 4,
|
||||||
"OUTOFSPACE", "Database file !AD ran out of disk space. Detected by process !UL. !/Exit without clearing shared memory due to the disk space constraints. !/Make space and then perform mupip rundown to ensure database integrity.", 3,
|
"OUTOFSPACE", "Database file !AD ran out of disk space. Detected by process !UL. !/Exit without clearing shared memory due to the disk space constraints. !/Make space and then perform mupip rundown to ensure database integrity.", 3,
|
||||||
"JNLPVTINFO", "Pid 0x!XL!/ cycle 0x!XL fd_mismatch 0x!XL channel 0x!XL sync_io 0x!XL!/ pini_addr 0x!XL qio_active 0x!XL old_channel 0x!XL", 8,
|
"JNLPVTINFO", "Pid 0x!XL!/ cycle 0x!XL fd_mismatch 0x!XL channel 0x!XL sync_io 0x!XL!/ pini_addr 0x!XL qio_active 0x!XL old_channel 0x!XL", 8,
|
||||||
|
@ -966,7 +966,7 @@ LITDEF err_msg merrors[] = {
|
||||||
"PREVJNLLINKCUT", "Previous journal file name link set to NULL in new journal file !AD created for database file !AD", 4,
|
"PREVJNLLINKCUT", "Previous journal file name link set to NULL in new journal file !AD created for database file !AD", 4,
|
||||||
"PREVJNLLINKSET", "Previous generation journal file name is changed from !AD to !AD", 4,
|
"PREVJNLLINKSET", "Previous generation journal file name is changed from !AD to !AD", 4,
|
||||||
"FILENAMETOOLONG", "File name too long", 0,
|
"FILENAMETOOLONG", "File name too long", 0,
|
||||||
"UNUSEDMSG1131", "JNLCREATERR Last used in V5.4-001", 0,
|
"REQRECOV", "Error accessing database !AD. Must be recovered on cluster node !AD.", 4,
|
||||||
"JNLTRANS2BIG", "Transaction needs an estimated [!UL blocks] in journal file !AD which exceeds the AUTOSWITCHLIMIT of !UL blocks", 4,
|
"JNLTRANS2BIG", "Transaction needs an estimated [!UL blocks] in journal file !AD which exceeds the AUTOSWITCHLIMIT of !UL blocks", 4,
|
||||||
"JNLSWITCHTOOSM", "Journal AUTOSWITCHLIMIT [!UL blocks] is less than Journal ALLOCATION [!UL blocks] for database file !AD", 4,
|
"JNLSWITCHTOOSM", "Journal AUTOSWITCHLIMIT [!UL blocks] is less than Journal ALLOCATION [!UL blocks] for database file !AD", 4,
|
||||||
"JNLSWITCHSZCHG", "Journal AUTOSWITCHLIMIT [!UL blocks] is rounded down to [!UL blocks] to equal the sum of Journal ALLOCATION [!UL blocks] and a multiple of Journal EXTENSION [!UL blocks] for database file !AD", 6,
|
"JNLSWITCHSZCHG", "Journal AUTOSWITCHLIMIT [!UL blocks] is rounded down to [!UL blocks] to equal the sum of Journal ALLOCATION [!UL blocks] and a multiple of Journal EXTENSION [!UL blocks] for database file !AD", 6,
|
||||||
|
@ -1090,7 +1090,7 @@ LITDEF err_msg merrors[] = {
|
||||||
"REPLINSTSEQORD", "!AD has seqno [0x!16@XQ] which is less than last record seqno [0x!16@XQ] in replication instance file !AD", 6,
|
"REPLINSTSEQORD", "!AD has seqno [0x!16@XQ] which is less than last record seqno [0x!16@XQ] in replication instance file !AD", 6,
|
||||||
"REPLINSTSTNDALN", "Could not get exclusive access to replication instance file !AD", 2,
|
"REPLINSTSTNDALN", "Could not get exclusive access to replication instance file !AD", 2,
|
||||||
"REPLREQROLLBACK", "Replication instance file !AD indicates abnormal shutdown or an incomplete ROLLBACK. Run MUPIP JOURNAL ROLLBACK first", 2,
|
"REPLREQROLLBACK", "Replication instance file !AD indicates abnormal shutdown or an incomplete ROLLBACK. Run MUPIP JOURNAL ROLLBACK first", 2,
|
||||||
"UNUSEDMSG1255", "REPLUPGRADEPRI : Last used in V5.4-002B", 0,
|
"REQROLLBACK", "Error accessing database !AD. Run MUPIP JOURNAL ROLLBACK on cluster node !AD.", 4,
|
||||||
"UNUSEDMSG1256", "REPLUPGRADESEC : Last used in V5.4-002B", 0,
|
"UNUSEDMSG1256", "REPLUPGRADESEC : Last used in V5.4-002B", 0,
|
||||||
"SRCSRVEXISTS", "Source server for secondary instance !AD is already running with pid !UL", 3,
|
"SRCSRVEXISTS", "Source server for secondary instance !AD is already running with pid !UL", 3,
|
||||||
"SRCSRVNOTEXIST", "Source server for secondary instance !AD is not alive", 2,
|
"SRCSRVNOTEXIST", "Source server for secondary instance !AD is not alive", 2,
|
||||||
|
@ -1132,7 +1132,7 @@ LITDEF err_msg merrors[] = {
|
||||||
"COMMITWAITPID", "Pid !UL waited !UL minute(s) for pid !UL to finish commits to block 0x!XL in database file !AD", 6,
|
"COMMITWAITPID", "Pid !UL waited !UL minute(s) for pid !UL to finish commits to block 0x!XL in database file !AD", 6,
|
||||||
"UPDREPLSTATEOFF", "Error replicating global ^!AD as it maps to database !AD which has replication turned OFF", 4,
|
"UPDREPLSTATEOFF", "Error replicating global ^!AD as it maps to database !AD which has replication turned OFF", 4,
|
||||||
"LITNONGRAPH", "M standard requires graphics in string literals", 0,
|
"LITNONGRAPH", "M standard requires graphics in string literals", 0,
|
||||||
"DBFHEADERR8", "Database file !AD: control problem: !AD was 0x!XJ expecting 0x!XJ", 6,
|
"DBFHEADERR8", "Database file !AD: control problem: !AD was 0x!16@XQ expecting 0x!16@XQ", 6,
|
||||||
"MMBEFOREJNL", "BEFORE image journaling cannot be set with MM access method in database file !AD", 2,
|
"MMBEFOREJNL", "BEFORE image journaling cannot be set with MM access method in database file !AD", 2,
|
||||||
"MMNOBFORRPL", "Replication cannot be used in database file !AD which uses MM access method and NOBEFORE image journaling", 2,
|
"MMNOBFORRPL", "Replication cannot be used in database file !AD which uses MM access method and NOBEFORE image journaling", 2,
|
||||||
"KILLABANDONED", "Abandoned kills counter is greater than zero for file !AD, !AD", 4,
|
"KILLABANDONED", "Abandoned kills counter is greater than zero for file !AD, !AD", 4,
|
||||||
|
@ -1248,12 +1248,12 @@ LITDEF err_msg merrors[] = {
|
||||||
"NORESYNCUPDATERONLY", "NORESYNC qualifier only allowed on a Supplementary Instance which allows local updates", 0,
|
"NORESYNCUPDATERONLY", "NORESYNC qualifier only allowed on a Supplementary Instance which allows local updates", 0,
|
||||||
"NOSUPPLSUPPL", "Instance !AD is configured to perform local updates so it cannot receive from Supplementary Instance !AD", 4,
|
"NOSUPPLSUPPL", "Instance !AD is configured to perform local updates so it cannot receive from Supplementary Instance !AD", 4,
|
||||||
"REPL2OLD", "Instance !AD uses a GT.M version that does not support connection with the current version on instance !AD", 4,
|
"REPL2OLD", "Instance !AD uses a GT.M version that does not support connection with the current version on instance !AD", 4,
|
||||||
"RCVR2MANY", "The instance already has the maximum supportable number of receiver servers [!UL] active", 1,
|
"UNUSEDMSG1413", "RCVR2MANY: Never used before so slot free for reuse", 0,
|
||||||
"RLBKCONFIGBNDRY", "Rollback encountered journal records indicating current source !AD replaced old source !AD; cannot rollback past sequence number 0x!16@XQ", 5,
|
"UNUSEDMSG1414", "RLBKCONFIGBNDRY: Never used before so slot free for reuse", 0,
|
||||||
"SECNOTSUPPLEMENTARY", "!AD is a Supplementary Instance and so cannot act as a source to non-Supplementary Instance !AD ", 4,
|
"SECNOTSUPPLEMENTARY", "!AD is a Supplementary Instance and so cannot act as a source to non-Supplementary Instance !AD ", 4,
|
||||||
"SUPRCVRNEEDSSUPSRC", "Instance !AD is not configured to perform local updates so it cannot act as a receiver for non-Supplementary Instance !AD", 4,
|
"SUPRCVRNEEDSSUPSRC", "Instance !AD is not configured to perform local updates so it cannot act as a receiver for non-Supplementary Instance !AD", 4,
|
||||||
"SYNCTOSAMETYPE", "Source instance !AD and receiver instance !AD must either be both supplementary or both non-supplementary for them to synchronize their state", 4,
|
"UNUSEDMSG1417", "SYNCTOSAMETYPE: Never used before so slot free for reuse", 0,
|
||||||
"TARGINSRUNNING", "Cannot change the instance definition of instance !AD while it is running", 2,
|
"UNUSEDMSG1418", "TARGINSRUNNING: Never used before so slot free for reuse", 0,
|
||||||
"UPDSYNC2MTINS", "Can only UPDATERESYNC with an empty instance file", 0,
|
"UPDSYNC2MTINS", "Can only UPDATERESYNC with an empty instance file", 0,
|
||||||
"UPDSYNCINSTFILE", "Error with instance file name specified in UPDATERESYNC qualifier", 0,
|
"UPDSYNCINSTFILE", "Error with instance file name specified in UPDATERESYNC qualifier", 0,
|
||||||
"REUSEINSTNAME", "Error with instance name specified in REUSE qualifier", 0,
|
"REUSEINSTNAME", "Error with instance name specified in REUSE qualifier", 0,
|
||||||
|
@ -1272,7 +1272,7 @@ LITDEF err_msg merrors[] = {
|
||||||
"ORLBKNOV4BLK", "Region !AD (!AD) has V4 format blocks. Database upgrade required. ONLINE ROLLBACK cannot continue", 4,
|
"ORLBKNOV4BLK", "Region !AD (!AD) has V4 format blocks. Database upgrade required. ONLINE ROLLBACK cannot continue", 4,
|
||||||
"DBROLLEDBACK", "Concurrent ONLINE ROLLBACK detected on one or more regions. The current operation is no longer valid", 0,
|
"DBROLLEDBACK", "Concurrent ONLINE ROLLBACK detected on one or more regions. The current operation is no longer valid", 0,
|
||||||
"DSEWCREINIT", "Database cache reinitialized by DSE for region !AD", 2,
|
"DSEWCREINIT", "Database cache reinitialized by DSE for region !AD", 2,
|
||||||
"RNDWNSKIPCNT", "A total of !UL process(es) skipped database rundown due to a concurrent ONLINE ROLLBACK", 1,
|
"UNUSEDMSG1437", "A total of !UL process(es) skipped database rundown due to a concurrent ONLINE ROLLBACK", 1,
|
||||||
"REPLONLNRLBK", "ONLINE ROLLBACK detected. Starting afresh", 0,
|
"REPLONLNRLBK", "ONLINE ROLLBACK detected. Starting afresh", 0,
|
||||||
"SRVLCKWT2LNG", "PID !UL is holding the source server lock. Waited for !UL minute(s). Now exiting", 2,
|
"SRVLCKWT2LNG", "PID !UL is holding the source server lock. Waited for !UL minute(s). Now exiting", 2,
|
||||||
"IGNBMPMRKFREE", "Ignoring bitmap free-up operation for region !AD (!AD) due to concurrent ONLINE ROLLBACK", 4,
|
"IGNBMPMRKFREE", "Ignoring bitmap free-up operation for region !AD (!AD) due to concurrent ONLINE ROLLBACK", 4,
|
||||||
|
@ -1295,6 +1295,37 @@ LITDEF err_msg merrors[] = {
|
||||||
"STRMSEQMISMTCH", "Unable to play update on Stream !2UL with seqno [0x!16@XQ] as receiving instance has a different stream seqno [0x!16@XQ]", 3,
|
"STRMSEQMISMTCH", "Unable to play update on Stream !2UL with seqno [0x!16@XQ] as receiving instance has a different stream seqno [0x!16@XQ]", 3,
|
||||||
"LOCKSPACEINFO", "Region: !AD: processes on queue: !UL/!UL; LOCK slots in use: !UL/!UL; name space!ADfull", 8,
|
"LOCKSPACEINFO", "Region: !AD: processes on queue: !UL/!UL; LOCK slots in use: !UL/!UL; name space!ADfull", 8,
|
||||||
"JRTNULLFAIL", "Applying NULL journal record failed. Failure code: !AD.", 2,
|
"JRTNULLFAIL", "Applying NULL journal record failed. Failure code: !AD.", 2,
|
||||||
|
"LOCKSUB2LONG", "Following subscript is !UL bytes long which exceeds 255 byte limit.", 1,
|
||||||
|
"RESRCWAIT", "Waiting briefly for the !AD semaphore for region !AD (!AD) was held by PID !UL (Sem. ID: !UL).", 8,
|
||||||
|
"RESRCINTRLCKBYPAS", "!AD with PID !UL bypassing the !AD semaphore for region !AD (!AD) was held by PID !UL.", 10,
|
||||||
|
"DBFHEADERRANY", "Database file !AD: control problem: !AD was 0x!XJ expecting 0x!XJ", 6,
|
||||||
|
"REPLINSTFROZEN", "Instance !AZ is now Frozen", 1,
|
||||||
|
"REPLINSTFREEZECOMMENT", "Freeze Comment: !AZ", 1,
|
||||||
|
"REPLINSTUNFROZEN", "Instance !AZ is now Unfrozen", 1,
|
||||||
|
"DSKNOSPCAVAIL", "Attempted write to file !AD failed due to lack of disk space. Retrying indefinitely.", 2,
|
||||||
|
"DSKNOSPCBLOCKED", "Retry of write to file !AD suspended due to new instance freeze. Waiting for instance to be unfrozen.", 2,
|
||||||
|
"DSKSPCAVAILABLE", "Write to file !AD succeeded after out-of-space condition cleared", 2,
|
||||||
|
"ENOSPCQIODEFER", "Write to file !AD deferred due to lack of disk space", 2,
|
||||||
|
"CUSTOMFILOPERR", "Error while doing !AD operation on file !AD", 4,
|
||||||
|
"CUSTERRNOTFND", "Error mnemonic !AD specified in custom errors file is not valid for this version of GT.M", 2,
|
||||||
|
"CUSTERRSYNTAX", "Syntax error in file !AD at line number !UL", 3,
|
||||||
|
"ORLBKINPROG", "Online ROLLBACK in progress by PID !UL in region !AD", 3,
|
||||||
|
"DBSPANGLOINCMP", "!AD Spanning node is missing. Block no !UL of spanning node is missing", 3,
|
||||||
|
"DBSPANCHUNKORD", "!AD Chunk of !UL blocks is out of order", 3,
|
||||||
|
"DBDATAMX", "!AD Record too large", 2,
|
||||||
|
"DBIOERR", "Error while doing write operation on region !AD (!AD)", 4,
|
||||||
|
"INITORRESUME", "UPDATERESYNC on a Supplementary Instance must additionally specify INITIALIZE or RESUME", 0,
|
||||||
|
"GTMSECSHRNOARG0", "gtmsecshr cannot identify its origin - argv[0] is null", 0,
|
||||||
|
"GTMSECSHRISNOT", "gtmsecshr is not running as gtmsecshr but !AD - must be gtmsecshr", 2,
|
||||||
|
"GTMSECSHRBADDIR", "gtmsecshr is not running from $gtm_dist/gtmsecshrdir or $gtm_dist cannot be determined", 0,
|
||||||
|
"JNLBUFFREGUPD", "Journal file buffer size for region !AD has been adjusted from !UL to !UL.", 4,
|
||||||
|
"JNLBUFFDBUPD", "Journal file buffer size for database file !AD has been adjusted from !UL to !UL.", 4,
|
||||||
|
"LOCKINCR2HIGH", "Attempt to increment a LOCK more than !UL times", 1,
|
||||||
|
"LOCKIS", "!_!_Resource name: !AD", 2,
|
||||||
|
"LDSPANGLOINCMP", "Incomplete spanning node found during load", 0,
|
||||||
|
"MUFILRNDWNFL2", "Database section (id = !UL) belonging to database file !AD rundown failed", 3,
|
||||||
|
"MUINSTFROZEN", "!AD : Instance !AZ is frozen. Waiting for instance to be unfrozen before proceeding with writes to database file !AD", 5,
|
||||||
|
"MUINSTUNFROZEN", "!AD : Instance !AZ is now Unfrozen. Continuing with writes to database file !AD", 5,
|
||||||
};
|
};
|
||||||
|
|
||||||
LITDEF int ERR_ACK = 150372361;
|
LITDEF int ERR_ACK = 150372361;
|
||||||
|
@ -1383,7 +1414,7 @@ LITDEF int ERR_INDMAXNEST = 150373018;
|
||||||
LITDEF int ERR_INDRMAXLEN = 150373026;
|
LITDEF int ERR_INDRMAXLEN = 150373026;
|
||||||
LITDEF int ERR_INSFFBCNT = 150373034;
|
LITDEF int ERR_INSFFBCNT = 150373034;
|
||||||
LITDEF int ERR_INTEGERRS = 150373042;
|
LITDEF int ERR_INTEGERRS = 150373042;
|
||||||
LITDEF int ERR_INVCMD = 150373050;
|
LITDEF int ERR_INVCMD = 150373048;
|
||||||
LITDEF int ERR_INVFCN = 150373058;
|
LITDEF int ERR_INVFCN = 150373058;
|
||||||
LITDEF int ERR_INVOBJ = 150373066;
|
LITDEF int ERR_INVOBJ = 150373066;
|
||||||
LITDEF int ERR_INVSVN = 150373074;
|
LITDEF int ERR_INVSVN = 150373074;
|
||||||
|
@ -1713,8 +1744,8 @@ LITDEF int ERR_JNLINVALLOC = 150375656;
|
||||||
LITDEF int ERR_JNLINVEXT = 150375664;
|
LITDEF int ERR_JNLINVEXT = 150375664;
|
||||||
LITDEF int ERR_MUPCLIERR = 150375674;
|
LITDEF int ERR_MUPCLIERR = 150375674;
|
||||||
LITDEF int ERR_JNLTMQUAL4 = 150375682;
|
LITDEF int ERR_JNLTMQUAL4 = 150375682;
|
||||||
LITDEF int ERR_JNLBUFFTOOLG = 150375688;
|
LITDEF int ERR_UNUSEDMSG594 = 150375690;
|
||||||
LITDEF int ERR_JNLBUFFTOOSM = 150375696;
|
LITDEF int ERR_UNUSEDMSG595 = 150375698;
|
||||||
LITDEF int ERR_MUNODBNAME = 150375706;
|
LITDEF int ERR_MUNODBNAME = 150375706;
|
||||||
LITDEF int ERR_FILECREATE = 150375715;
|
LITDEF int ERR_FILECREATE = 150375715;
|
||||||
LITDEF int ERR_FILENOTCREATE = 150375723;
|
LITDEF int ERR_FILENOTCREATE = 150375723;
|
||||||
|
@ -1928,7 +1959,7 @@ LITDEF int ERR_MUKILLIP = 150377376;
|
||||||
LITDEF int ERR_JNLRDONLY = 150377386;
|
LITDEF int ERR_JNLRDONLY = 150377386;
|
||||||
LITDEF int ERR_ANCOMPTINC = 150377394;
|
LITDEF int ERR_ANCOMPTINC = 150377394;
|
||||||
LITDEF int ERR_ABNCOMPTINC = 150377402;
|
LITDEF int ERR_ABNCOMPTINC = 150377402;
|
||||||
LITDEF int ERR_GTMSECSHRLOGF = 150377410;
|
LITDEF int ERR_UNUSEDMSG809 = 150377410;
|
||||||
LITDEF int ERR_SOCKNOTFND = 150377418;
|
LITDEF int ERR_SOCKNOTFND = 150377418;
|
||||||
LITDEF int ERR_CURRSOCKOFR = 150377426;
|
LITDEF int ERR_CURRSOCKOFR = 150377426;
|
||||||
LITDEF int ERR_SOCKETEXIST = 150377434;
|
LITDEF int ERR_SOCKETEXIST = 150377434;
|
||||||
|
@ -2017,8 +2048,8 @@ LITDEF int ERR_SECONDAHEAD = 150378090;
|
||||||
LITDEF int ERR_SCNDDBNOUPD = 150378098;
|
LITDEF int ERR_SCNDDBNOUPD = 150378098;
|
||||||
LITDEF int ERR_MUINFOUINT4 = 150378107;
|
LITDEF int ERR_MUINFOUINT4 = 150378107;
|
||||||
LITDEF int ERR_NLMISMATCHCALC = 150378114;
|
LITDEF int ERR_NLMISMATCHCALC = 150378114;
|
||||||
LITDEF int ERR_GTMSECSHRLOGSWH = 150378122;
|
LITDEF int ERR_UNUSEDMSG898 = 150378122;
|
||||||
LITDEF int ERR_GTMSECSHRDEFLOG = 150378131;
|
LITDEF int ERR_UNUSEDMSG899 = 150378131;
|
||||||
LITDEF int ERR_DBBADNSUB = 150378138;
|
LITDEF int ERR_DBBADNSUB = 150378138;
|
||||||
LITDEF int ERR_DBBADKYNM = 150378146;
|
LITDEF int ERR_DBBADKYNM = 150378146;
|
||||||
LITDEF int ERR_DBBADPNTR = 150378154;
|
LITDEF int ERR_DBBADPNTR = 150378154;
|
||||||
|
@ -2250,7 +2281,7 @@ LITDEF int ERR_JNLFNF = 150379955;
|
||||||
LITDEF int ERR_PREVJNLLINKCUT = 150379963;
|
LITDEF int ERR_PREVJNLLINKCUT = 150379963;
|
||||||
LITDEF int ERR_PREVJNLLINKSET = 150379971;
|
LITDEF int ERR_PREVJNLLINKSET = 150379971;
|
||||||
LITDEF int ERR_FILENAMETOOLONG = 150379978;
|
LITDEF int ERR_FILENAMETOOLONG = 150379978;
|
||||||
LITDEF int ERR_UNUSEDMSG1131 = 150379986;
|
LITDEF int ERR_REQRECOV = 150379986;
|
||||||
LITDEF int ERR_JNLTRANS2BIG = 150379994;
|
LITDEF int ERR_JNLTRANS2BIG = 150379994;
|
||||||
LITDEF int ERR_JNLSWITCHTOOSM = 150380002;
|
LITDEF int ERR_JNLSWITCHTOOSM = 150380002;
|
||||||
LITDEF int ERR_JNLSWITCHSZCHG = 150380011;
|
LITDEF int ERR_JNLSWITCHSZCHG = 150380011;
|
||||||
|
@ -2374,7 +2405,7 @@ LITDEF int ERR_REPLINSTSECUNDF = 150380946;
|
||||||
LITDEF int ERR_REPLINSTSEQORD = 150380954;
|
LITDEF int ERR_REPLINSTSEQORD = 150380954;
|
||||||
LITDEF int ERR_REPLINSTSTNDALN = 150380962;
|
LITDEF int ERR_REPLINSTSTNDALN = 150380962;
|
||||||
LITDEF int ERR_REPLREQROLLBACK = 150380970;
|
LITDEF int ERR_REPLREQROLLBACK = 150380970;
|
||||||
LITDEF int ERR_UNUSEDMSG1255 = 150380978;
|
LITDEF int ERR_REQROLLBACK = 150380978;
|
||||||
LITDEF int ERR_UNUSEDMSG1256 = 150380986;
|
LITDEF int ERR_UNUSEDMSG1256 = 150380986;
|
||||||
LITDEF int ERR_SRCSRVEXISTS = 150380994;
|
LITDEF int ERR_SRCSRVEXISTS = 150380994;
|
||||||
LITDEF int ERR_SRCSRVNOTEXIST = 150381002;
|
LITDEF int ERR_SRCSRVNOTEXIST = 150381002;
|
||||||
|
@ -2532,12 +2563,12 @@ LITDEF int ERR_NORESYNCSUPPLONLY = 150382210;
|
||||||
LITDEF int ERR_NORESYNCUPDATERONLY = 150382218;
|
LITDEF int ERR_NORESYNCUPDATERONLY = 150382218;
|
||||||
LITDEF int ERR_NOSUPPLSUPPL = 150382226;
|
LITDEF int ERR_NOSUPPLSUPPL = 150382226;
|
||||||
LITDEF int ERR_REPL2OLD = 150382234;
|
LITDEF int ERR_REPL2OLD = 150382234;
|
||||||
LITDEF int ERR_RCVR2MANY = 150382242;
|
LITDEF int ERR_UNUSEDMSG1413 = 150382243;
|
||||||
LITDEF int ERR_RLBKCONFIGBNDRY = 150382250;
|
LITDEF int ERR_UNUSEDMSG1414 = 150382251;
|
||||||
LITDEF int ERR_SECNOTSUPPLEMENTARY = 150382258;
|
LITDEF int ERR_SECNOTSUPPLEMENTARY = 150382258;
|
||||||
LITDEF int ERR_SUPRCVRNEEDSSUPSRC = 150382266;
|
LITDEF int ERR_SUPRCVRNEEDSSUPSRC = 150382266;
|
||||||
LITDEF int ERR_SYNCTOSAMETYPE = 150382274;
|
LITDEF int ERR_UNUSEDMSG1417 = 150382275;
|
||||||
LITDEF int ERR_TARGINSRUNNING = 150382282;
|
LITDEF int ERR_UNUSEDMSG1418 = 150382283;
|
||||||
LITDEF int ERR_UPDSYNC2MTINS = 150382290;
|
LITDEF int ERR_UPDSYNC2MTINS = 150382290;
|
||||||
LITDEF int ERR_UPDSYNCINSTFILE = 150382298;
|
LITDEF int ERR_UPDSYNCINSTFILE = 150382298;
|
||||||
LITDEF int ERR_REUSEINSTNAME = 150382306;
|
LITDEF int ERR_REUSEINSTNAME = 150382306;
|
||||||
|
@ -2556,7 +2587,7 @@ LITDEF int ERR_ORLBKFRZOVER = 150382403;
|
||||||
LITDEF int ERR_ORLBKNOV4BLK = 150382410;
|
LITDEF int ERR_ORLBKNOV4BLK = 150382410;
|
||||||
LITDEF int ERR_DBROLLEDBACK = 150382418;
|
LITDEF int ERR_DBROLLEDBACK = 150382418;
|
||||||
LITDEF int ERR_DSEWCREINIT = 150382427;
|
LITDEF int ERR_DSEWCREINIT = 150382427;
|
||||||
LITDEF int ERR_RNDWNSKIPCNT = 150382435;
|
LITDEF int ERR_UNUSEDMSG1437 = 150382435;
|
||||||
LITDEF int ERR_REPLONLNRLBK = 150382442;
|
LITDEF int ERR_REPLONLNRLBK = 150382442;
|
||||||
LITDEF int ERR_SRVLCKWT2LNG = 150382450;
|
LITDEF int ERR_SRVLCKWT2LNG = 150382450;
|
||||||
LITDEF int ERR_IGNBMPMRKFREE = 150382459;
|
LITDEF int ERR_IGNBMPMRKFREE = 150382459;
|
||||||
|
@ -2579,9 +2610,40 @@ LITDEF int ERR_STRMNUMMISMTCH2 = 150382586;
|
||||||
LITDEF int ERR_STRMSEQMISMTCH = 150382594;
|
LITDEF int ERR_STRMSEQMISMTCH = 150382594;
|
||||||
LITDEF int ERR_LOCKSPACEINFO = 150382603;
|
LITDEF int ERR_LOCKSPACEINFO = 150382603;
|
||||||
LITDEF int ERR_JRTNULLFAIL = 150382610;
|
LITDEF int ERR_JRTNULLFAIL = 150382610;
|
||||||
|
LITDEF int ERR_LOCKSUB2LONG = 150382618;
|
||||||
|
LITDEF int ERR_RESRCWAIT = 150382627;
|
||||||
|
LITDEF int ERR_RESRCINTRLCKBYPAS = 150382635;
|
||||||
|
LITDEF int ERR_DBFHEADERRANY = 150382643;
|
||||||
|
LITDEF int ERR_REPLINSTFROZEN = 150382650;
|
||||||
|
LITDEF int ERR_REPLINSTFREEZECOMMENT = 150382659;
|
||||||
|
LITDEF int ERR_REPLINSTUNFROZEN = 150382667;
|
||||||
|
LITDEF int ERR_DSKNOSPCAVAIL = 150382675;
|
||||||
|
LITDEF int ERR_DSKNOSPCBLOCKED = 150382682;
|
||||||
|
LITDEF int ERR_DSKSPCAVAILABLE = 150382691;
|
||||||
|
LITDEF int ERR_ENOSPCQIODEFER = 150382699;
|
||||||
|
LITDEF int ERR_CUSTOMFILOPERR = 150382706;
|
||||||
|
LITDEF int ERR_CUSTERRNOTFND = 150382714;
|
||||||
|
LITDEF int ERR_CUSTERRSYNTAX = 150382722;
|
||||||
|
LITDEF int ERR_ORLBKINPROG = 150382731;
|
||||||
|
LITDEF int ERR_DBSPANGLOINCMP = 150382738;
|
||||||
|
LITDEF int ERR_DBSPANCHUNKORD = 150382746;
|
||||||
|
LITDEF int ERR_DBDATAMX = 150382754;
|
||||||
|
LITDEF int ERR_DBIOERR = 150382762;
|
||||||
|
LITDEF int ERR_INITORRESUME = 150382770;
|
||||||
|
LITDEF int ERR_GTMSECSHRNOARG0 = 150382778;
|
||||||
|
LITDEF int ERR_GTMSECSHRISNOT = 150382786;
|
||||||
|
LITDEF int ERR_GTMSECSHRBADDIR = 150382794;
|
||||||
|
LITDEF int ERR_JNLBUFFREGUPD = 150382800;
|
||||||
|
LITDEF int ERR_JNLBUFFDBUPD = 150382808;
|
||||||
|
LITDEF int ERR_LOCKINCR2HIGH = 150382818;
|
||||||
|
LITDEF int ERR_LOCKIS = 150382827;
|
||||||
|
LITDEF int ERR_LDSPANGLOINCMP = 150382834;
|
||||||
|
LITDEF int ERR_MUFILRNDWNFL2 = 150382843;
|
||||||
|
LITDEF int ERR_MUINSTFROZEN = 150382851;
|
||||||
|
LITDEF int ERR_MUINSTUNFROZEN = 150382859;
|
||||||
|
|
||||||
GBLDEF err_ctl merrors_ctl = {
|
GBLDEF err_ctl merrors_ctl = {
|
||||||
246,
|
246,
|
||||||
"GTM",
|
"GTM",
|
||||||
&merrors[0],
|
&merrors[0],
|
||||||
1282};
|
1313};
|
|
@ -0,0 +1,32 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global mint2mval
|
||||||
|
.type mint2mval, %function
|
||||||
|
mint2mval:
|
||||||
|
@ args = 0, pretend = 0, frame = 8
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #12
|
||||||
|
str r0, [fp, #-8]
|
||||||
|
ldr r3, [fp, #-8]
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size mint2mval, .-mint2mval
|
|
@ -1,6 +1,6 @@
|
||||||
/****************************************************************
|
/****************************************************************
|
||||||
* *
|
* *
|
||||||
* Copyright 2013 Fidelity Information Services, Inc *
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
||||||
* *
|
* *
|
||||||
* This source code contains the intellectual property *
|
* This source code contains the intellectual property *
|
||||||
* of its copyright holder(s), and is made available *
|
* of its copyright holder(s), and is made available *
|
||||||
|
@ -9,8 +9,14 @@
|
||||||
* *
|
* *
|
||||||
****************************************************************/
|
****************************************************************/
|
||||||
|
|
||||||
#ifndef UTIL_HELP_INCLUDED
|
int mum_tstart(void)
|
||||||
#define UTIL_HELP_INCLUDED
|
{
|
||||||
|
if(1)
|
||||||
void util_help(void);
|
{
|
||||||
#endif
|
getframe();
|
||||||
|
} else
|
||||||
|
{
|
||||||
|
trans_code();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,28 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global mum_tstart_arm
|
||||||
|
.type mum_tstart_arm, %function
|
||||||
|
mum_tstart_arm:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size mum_tstart_arm, .-mum_tstart_arm
|
|
@ -0,0 +1,32 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global mval2bool
|
||||||
|
.type mval2bool, %function
|
||||||
|
mval2bool:
|
||||||
|
@ args = 0, pretend = 0, frame = 8
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #12
|
||||||
|
str r0, [fp, #-8]
|
||||||
|
ldr r3, [fp, #-8]
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size mval2bool, .-mval2bool
|
|
@ -0,0 +1,32 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global mval2mint
|
||||||
|
.type mval2mint, %function
|
||||||
|
mval2mint:
|
||||||
|
@ args = 0, pretend = 0, frame = 8
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #12
|
||||||
|
str r0, [fp, #-8]
|
||||||
|
ldr r3, [fp, #-8]
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size mval2mint, .-mval2mint
|
|
@ -0,0 +1,32 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global mval2num
|
||||||
|
.type mval2num, %function
|
||||||
|
mval2num:
|
||||||
|
@ args = 0, pretend = 0, frame = 8
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
sub sp, sp, #12
|
||||||
|
str r0, [fp, #-8]
|
||||||
|
ldr r3, [fp, #-8]
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size mval2num, .-mval2num
|
|
@ -0,0 +1,479 @@
|
||||||
|
/****************************************************************
|
||||||
|
* *
|
||||||
|
* Copyright 2001, 2009 Fidelity Information Services, Inc *
|
||||||
|
* *
|
||||||
|
* This source code contains the intellectual property *
|
||||||
|
* of its copyright holder(s), and is made available *
|
||||||
|
* under a license. If you do not know the terms of *
|
||||||
|
* the license, please stop and do not read further. *
|
||||||
|
* *
|
||||||
|
****************************************************************/
|
||||||
|
|
||||||
|
#include "mdef.h"
|
||||||
|
|
||||||
|
#include "gtm_string.h"
|
||||||
|
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
#include "compiler.h"
|
||||||
|
#include <rtnhdr.h>
|
||||||
|
#include "obj_gen.h"
|
||||||
|
#include "cgp.h"
|
||||||
|
#include "mdq.h"
|
||||||
|
#include "cmd_qlf.h"
|
||||||
|
#include "objlabel.h" /* needed for masscomp.h */
|
||||||
|
#include "masscomp.h"
|
||||||
|
#include "stringpool.h"
|
||||||
|
#include "parse_file.h"
|
||||||
|
#include "gtm_fcntl.h"
|
||||||
|
#include "gtm_unistd.h"
|
||||||
|
#include "gtmio.h"
|
||||||
|
#include "mmemory.h"
|
||||||
|
#include "obj_file.h"
|
||||||
|
|
||||||
|
LITREF char gtm_release_name[];
|
||||||
|
LITREF int4 gtm_release_name_len;
|
||||||
|
|
||||||
|
GBLREF mliteral literal_chain;
|
||||||
|
GBLREF char source_file_name[];
|
||||||
|
GBLREF unsigned short source_name_len;
|
||||||
|
|
||||||
|
GBLREF command_qualifier cmd_qlf;
|
||||||
|
GBLREF mident routine_name;
|
||||||
|
GBLREF mident module_name;
|
||||||
|
GBLREF boolean_t run_time;
|
||||||
|
GBLREF int4 mlmax, mvmax;
|
||||||
|
GBLREF int4 code_size, lit_addrs, lits_size;
|
||||||
|
|
||||||
|
GBLDEF int4 psect_use_tab[GTM_LASTPSECT]; /* bytes of each psect in this module */
|
||||||
|
GBLREF char object_file_name[];
|
||||||
|
GBLREF short object_name_len;
|
||||||
|
GBLREF int object_file_des;
|
||||||
|
|
||||||
|
static short int current_psect;
|
||||||
|
static char emit_buff[OBJ_EMIT_BUF_SIZE]; /* buffer for emit output */
|
||||||
|
static short int emit_buff_used; /* number of chars in emit_buff */
|
||||||
|
|
||||||
|
GBLREF uint4 txtrel_cnt;
|
||||||
|
static uint4 cdlits;
|
||||||
|
static struct rel_table *data_rel, *data_rel_end;
|
||||||
|
static struct rel_table *text_rel, *text_rel_end;
|
||||||
|
DEBUG_ONLY(static uint4 txtrel_cnt_in_hdr;)
|
||||||
|
|
||||||
|
error_def(ERR_OBJFILERR);
|
||||||
|
|
||||||
|
void create_object_file(rhdtyp *rhead)
|
||||||
|
{
|
||||||
|
int status;
|
||||||
|
unsigned char rout_len;
|
||||||
|
uint4 stat;
|
||||||
|
char obj_name[SIZEOF(mident_fixed) + 5];
|
||||||
|
mstr fstr;
|
||||||
|
parse_blk pblk;
|
||||||
|
struct exec hdr;
|
||||||
|
error_def(ERR_FILEPARSE);
|
||||||
|
|
||||||
|
assert(!run_time);
|
||||||
|
|
||||||
|
memset(&pblk, 0, SIZEOF(pblk));
|
||||||
|
pblk.buffer = object_file_name;
|
||||||
|
pblk.buff_size = MAX_FBUFF;
|
||||||
|
/* create the object file */
|
||||||
|
fstr.len = (MV_DEFINED(&cmd_qlf.object_file) ? cmd_qlf.object_file.str.len : 0);
|
||||||
|
fstr.addr = cmd_qlf.object_file.str.addr;
|
||||||
|
rout_len = module_name.len;
|
||||||
|
memcpy(&obj_name[0], module_name.addr, rout_len);
|
||||||
|
obj_name[rout_len] = '.';
|
||||||
|
obj_name[rout_len + 1] = 'o';
|
||||||
|
obj_name[rout_len + 2] = 0;
|
||||||
|
pblk.def1_size = rout_len + 2;
|
||||||
|
pblk.def1_buf = obj_name;
|
||||||
|
status = parse_file(&fstr, &pblk);
|
||||||
|
if (!(status & 1))
|
||||||
|
rts_error(VARLSTCNT(5) ERR_FILEPARSE, 2, fstr.len, fstr.addr, status);
|
||||||
|
|
||||||
|
object_name_len = pblk.b_esl;
|
||||||
|
object_file_name[object_name_len] = 0;
|
||||||
|
|
||||||
|
OPEN_OBJECT_FILE(object_file_name, O_CREAT | O_RDWR, object_file_des);
|
||||||
|
if (FD_INVALID == object_file_des)
|
||||||
|
rts_error(VARLSTCNT(5) ERR_OBJFILERR, 2, object_name_len, object_file_name, errno);
|
||||||
|
memcpy(&rhead->jsb[0], "GTM_CODE", SIZEOF(rhead->jsb));
|
||||||
|
emit_addr((char *)&rhead->src_full_name.addr - (char *)rhead,
|
||||||
|
(int4)rhead->src_full_name.addr, (int4 *)&rhead->src_full_name.addr);
|
||||||
|
emit_addr((char *)&rhead->routine_name.addr - (char *)rhead,
|
||||||
|
(int4)rhead->routine_name.addr, (int4 *)&rhead->routine_name.addr);
|
||||||
|
txtrel_cnt += 2;
|
||||||
|
DEBUG_ONLY(txtrel_cnt_in_hdr = txtrel_cnt;)
|
||||||
|
|
||||||
|
set_psect(GTM_CODE, 0);
|
||||||
|
hdr.a_magic = OMAGIC;
|
||||||
|
hdr.a_stamp = OBJ_LABEL;
|
||||||
|
hdr.a_entry = 0;
|
||||||
|
hdr.a_bss = 0;
|
||||||
|
hdr.a_text = code_size;
|
||||||
|
assert(0 == PADLEN(lits_size, NATIVE_WSIZE));
|
||||||
|
hdr.a_data = lits_size; /* and pad to even # */
|
||||||
|
hdr.a_syms = (mlmax + cdlits) * SIZEOF(struct nlist);
|
||||||
|
hdr.a_trsize = txtrel_cnt * SIZEOF(struct relocation_info);
|
||||||
|
hdr.a_drsize = lit_addrs * SIZEOF(struct relocation_info);
|
||||||
|
emit_immed((char *)&hdr, SIZEOF(hdr));
|
||||||
|
memset(psect_use_tab, 0, SIZEOF(psect_use_tab));
|
||||||
|
emit_immed((char *)rhead, SIZEOF(*rhead));
|
||||||
|
}
|
||||||
|
|
||||||
|
void close_object_file(void)
|
||||||
|
{
|
||||||
|
assert(0 == PADLEN(lits_size, NATIVE_WSIZE));
|
||||||
|
resolve_sym();
|
||||||
|
output_relocation();
|
||||||
|
output_symbol();
|
||||||
|
if (emit_buff_used)
|
||||||
|
buff_emit();
|
||||||
|
if ((off_t)-1 == lseek(object_file_des, (off_t)0, SEEK_SET))
|
||||||
|
rts_error(VARLSTCNT(5) ERR_OBJFILERR, 2, object_name_len, object_file_name, errno);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void drop_object_file(void)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
|
||||||
|
if (FD_INVALID != object_file_des)
|
||||||
|
{
|
||||||
|
UNLINK(object_file_name);
|
||||||
|
CLOSEFILE_RESET(object_file_des, rc); /* resets "object_file_des" to FD_INVALID */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
GBLREF spdesc stringpool;
|
||||||
|
|
||||||
|
void emit_addr(int4 refaddr, int4 offset, int4 *result)
|
||||||
|
{
|
||||||
|
struct rel_table *newrel;
|
||||||
|
|
||||||
|
if (run_time)
|
||||||
|
{
|
||||||
|
unsigned char *ptr;
|
||||||
|
ptr = stringpool.free;
|
||||||
|
*result = offset - (int4) ptr;
|
||||||
|
} else
|
||||||
|
{ *result = offset + code_size;
|
||||||
|
newrel = (struct rel_table *) mcalloc(SIZEOF(struct rel_table));
|
||||||
|
newrel->next = (struct rel_table *) 0;
|
||||||
|
newrel->resolve = 0;
|
||||||
|
newrel->r.r_address = refaddr;
|
||||||
|
newrel->r.r_symbolnum = N_DATA;
|
||||||
|
newrel->r.r_pcrel = 0;
|
||||||
|
newrel->r.r_length = 2;
|
||||||
|
newrel->r.r_extern = 0;
|
||||||
|
newrel->r.r_pad = 0;
|
||||||
|
if (!text_rel)
|
||||||
|
text_rel = text_rel_end = newrel;
|
||||||
|
else
|
||||||
|
{ text_rel_end->next = newrel;
|
||||||
|
text_rel_end = newrel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void emit_pidr(int4 refoffset, int4 data_offset, int4 *result)
|
||||||
|
{
|
||||||
|
struct rel_table *newrel;
|
||||||
|
|
||||||
|
assert(!run_time);
|
||||||
|
refoffset += code_size;
|
||||||
|
data_offset += code_size;
|
||||||
|
*result = data_offset;
|
||||||
|
newrel = (struct rel_table *) mcalloc(SIZEOF(struct rel_table));
|
||||||
|
newrel->next = (struct rel_table *)0;
|
||||||
|
newrel->resolve = 0;
|
||||||
|
newrel->r.r_address = refoffset;
|
||||||
|
newrel->r.r_symbolnum = N_DATA;
|
||||||
|
newrel->r.r_pcrel = 0;
|
||||||
|
newrel->r.r_length = 2;
|
||||||
|
newrel->r.r_extern = 0;
|
||||||
|
newrel->r.r_pad = 0;
|
||||||
|
if (!data_rel)
|
||||||
|
data_rel = data_rel_end = newrel;
|
||||||
|
else
|
||||||
|
{ data_rel_end->next = newrel;
|
||||||
|
data_rel_end = newrel;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void emit_reference(uint4 refaddr, mstr *name, uint4 *result)
|
||||||
|
{
|
||||||
|
struct sym_table *sym;
|
||||||
|
struct rel_table *newrel;
|
||||||
|
|
||||||
|
sym = define_symbol(0, name, 0);
|
||||||
|
assert(sym);
|
||||||
|
if (sym->n.n_type == (N_TEXT | N_EXT))
|
||||||
|
*result = sym->n.n_value;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
newrel = (struct rel_table *) mcalloc(SIZEOF(struct rel_table));
|
||||||
|
newrel->next = (struct rel_table *)0;
|
||||||
|
newrel->resolve = 0;
|
||||||
|
newrel->r.r_address = refaddr;
|
||||||
|
newrel->r.r_symbolnum = 0;
|
||||||
|
newrel->r.r_pcrel = 0;
|
||||||
|
newrel->r.r_length = 2;
|
||||||
|
newrel->r.r_extern = 1;
|
||||||
|
newrel->r.r_pad = 0;
|
||||||
|
if (!text_rel)
|
||||||
|
text_rel = text_rel_end = newrel;
|
||||||
|
else
|
||||||
|
{ text_rel_end->next = newrel;
|
||||||
|
text_rel_end = newrel;
|
||||||
|
}
|
||||||
|
if (sym->resolve)
|
||||||
|
newrel->resolve = sym->resolve;
|
||||||
|
sym->resolve = newrel;
|
||||||
|
*result = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* emit_immed
|
||||||
|
*
|
||||||
|
* Args: buffer of executable code, and byte count to be output.
|
||||||
|
*/
|
||||||
|
|
||||||
|
error_def(ERR_STRINGOFLOW);
|
||||||
|
void emit_immed(char *source, uint4 size)
|
||||||
|
{
|
||||||
|
short int write;
|
||||||
|
|
||||||
|
if (run_time)
|
||||||
|
{
|
||||||
|
if (stringpool.free + size > stringpool.top)
|
||||||
|
rts_error(VARLSTCNT(1) ERR_STRINGOFLOW);
|
||||||
|
memcpy(stringpool.free, source, size);
|
||||||
|
stringpool.free += size;
|
||||||
|
} else
|
||||||
|
{ while(size > 0)
|
||||||
|
{
|
||||||
|
write = SIZEOF(emit_buff) - emit_buff_used;
|
||||||
|
write = size < write ? size : write;
|
||||||
|
memcpy(emit_buff + emit_buff_used, source, write);
|
||||||
|
size -= write;
|
||||||
|
source += write;
|
||||||
|
emit_buff_used += write;
|
||||||
|
psect_use_tab[current_psect] += write;
|
||||||
|
if (size)
|
||||||
|
buff_emit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* buff_emit
|
||||||
|
*
|
||||||
|
* Args: buffer pointer, number of bytes to emit
|
||||||
|
*/
|
||||||
|
|
||||||
|
void buff_emit(void)
|
||||||
|
{
|
||||||
|
uint4 stat;
|
||||||
|
|
||||||
|
if (-1 == write(object_file_des, emit_buff, emit_buff_used))
|
||||||
|
rts_error(VARLSTCNT(5) ERR_OBJFILERR, 2, object_name_len, object_file_name, errno);
|
||||||
|
emit_buff_used = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void set_psect(unsigned char psect,unsigned char offset)
|
||||||
|
{
|
||||||
|
current_psect = psect;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* define_symbol
|
||||||
|
*
|
||||||
|
* Args: psect index, symbol name, symbol value.
|
||||||
|
*
|
||||||
|
* Description: Buffers a definition of a global symbol with the
|
||||||
|
* given name and value in the given psect.
|
||||||
|
*/
|
||||||
|
|
||||||
|
static struct sym_table *symbols;
|
||||||
|
struct sym_table *define_symbol(unsigned char psect, mstr *name, int4 value)
|
||||||
|
{
|
||||||
|
int cmp;
|
||||||
|
struct sym_table *sym, *sym1, *newsym;
|
||||||
|
|
||||||
|
sym = symbols;
|
||||||
|
sym1 = 0;
|
||||||
|
while(sym)
|
||||||
|
{
|
||||||
|
if ((cmp = memvcmp(name->addr, name->len, &sym->name[0], sym->name_len - 1)) <= 0)
|
||||||
|
break;
|
||||||
|
sym1 = sym;
|
||||||
|
sym = sym->next;
|
||||||
|
}
|
||||||
|
if (cmp || !sym)
|
||||||
|
{ newsym = (struct sym_table *) mcalloc(SIZEOF(struct sym_table) + name->len);
|
||||||
|
newsym->name_len = name->len + 1;
|
||||||
|
memcpy(&newsym->name[0], name->addr, name->len);
|
||||||
|
newsym->name[ name->len ] = 0;
|
||||||
|
newsym->n.n_strx = 0;
|
||||||
|
newsym->n.n_type = N_EXT;
|
||||||
|
if (psect == GTM_CODE)
|
||||||
|
newsym->n.n_type |= N_TEXT; /* if symbol is in GTM_CODE, it is defined */
|
||||||
|
else
|
||||||
|
txtrel_cnt++;
|
||||||
|
newsym->n.n_other = 0;
|
||||||
|
newsym->n.n_desc = 0;
|
||||||
|
newsym->n.n_value = value;
|
||||||
|
newsym->resolve = 0;
|
||||||
|
newsym->next = sym;
|
||||||
|
if (sym1)
|
||||||
|
sym1->next = newsym;
|
||||||
|
else
|
||||||
|
symbols = newsym;
|
||||||
|
cdlits++;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (!(sym->n.n_type & N_TEXT))
|
||||||
|
txtrel_cnt++;
|
||||||
|
return sym;
|
||||||
|
}
|
||||||
|
|
||||||
|
void resolve_sym(void)
|
||||||
|
{
|
||||||
|
uint4 symnum;
|
||||||
|
struct sym_table *sym;
|
||||||
|
struct rel_table *rel;
|
||||||
|
|
||||||
|
symnum = 0;
|
||||||
|
sym = symbols;
|
||||||
|
while (sym)
|
||||||
|
{ if (sym->resolve)
|
||||||
|
{ rel = sym->resolve;
|
||||||
|
while (rel)
|
||||||
|
{ rel->r.r_symbolnum = symnum;
|
||||||
|
rel = rel->resolve;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
symnum++;
|
||||||
|
sym = sym->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void output_relocation(void)
|
||||||
|
{
|
||||||
|
struct rel_table *rel;
|
||||||
|
DEBUG_ONLY(int cnt;)
|
||||||
|
|
||||||
|
DEBUG_ONLY(cnt = 0;)
|
||||||
|
rel = text_rel;
|
||||||
|
while (rel)
|
||||||
|
{
|
||||||
|
emit_immed((char *)&rel->r, SIZEOF(rel->r));
|
||||||
|
rel = rel->next;
|
||||||
|
DEBUG_ONLY(cnt++;)
|
||||||
|
}
|
||||||
|
assert(cnt == txtrel_cnt_in_hdr);
|
||||||
|
|
||||||
|
DEBUG_ONLY(cnt = 0;)
|
||||||
|
rel = data_rel;
|
||||||
|
while (rel)
|
||||||
|
{
|
||||||
|
emit_immed((char *)&rel->r, SIZEOF(rel->r));
|
||||||
|
rel = rel->next;
|
||||||
|
DEBUG_ONLY(cnt++;)
|
||||||
|
}
|
||||||
|
assert(cnt == lit_addrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void output_symbol(void)
|
||||||
|
{
|
||||||
|
uint4 string_length;
|
||||||
|
struct sym_table *sym;
|
||||||
|
|
||||||
|
string_length = SIZEOF(int4);
|
||||||
|
sym = symbols;
|
||||||
|
while (sym)
|
||||||
|
{
|
||||||
|
sym->n.n_strx = string_length;
|
||||||
|
emit_immed((char *)&sym->n, SIZEOF(sym->n));
|
||||||
|
string_length += sym->name_len;
|
||||||
|
sym = sym->next;
|
||||||
|
}
|
||||||
|
emit_immed((char *)&string_length, SIZEOF(string_length));
|
||||||
|
sym = symbols;
|
||||||
|
while (sym)
|
||||||
|
{
|
||||||
|
emit_immed((char *)&sym->name[0], sym->name_len);
|
||||||
|
sym = sym->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void obj_init(void)
|
||||||
|
{
|
||||||
|
cdlits = txtrel_cnt = 0;
|
||||||
|
data_rel = text_rel = data_rel_end = text_rel_end = 0;
|
||||||
|
symbols = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void emit_literals(void)
|
||||||
|
{
|
||||||
|
uint4 offset, padsize;
|
||||||
|
mliteral *p;
|
||||||
|
|
||||||
|
set_psect(GTM_LITERALS, 0);
|
||||||
|
offset = stringpool.free - stringpool.base;
|
||||||
|
emit_immed((char *)stringpool.base, offset);
|
||||||
|
/* comp_lits aligns the start of source path on a NATIVE_WSIZE boundary.*/
|
||||||
|
padsize = PADLEN(offset, NATIVE_WSIZE);
|
||||||
|
if (padsize)
|
||||||
|
{
|
||||||
|
emit_immed(PADCHARS, padsize);
|
||||||
|
offset += padsize;
|
||||||
|
}
|
||||||
|
emit_immed(source_file_name, source_name_len);
|
||||||
|
offset += source_name_len;
|
||||||
|
/* comp_lits aligns the start of routine_name on a NATIVE_WSIZE boundary.*/
|
||||||
|
padsize = PADLEN(offset, NATIVE_WSIZE);
|
||||||
|
if (padsize)
|
||||||
|
{
|
||||||
|
emit_immed(PADCHARS, padsize);
|
||||||
|
offset += padsize;
|
||||||
|
}
|
||||||
|
emit_immed(routine_name.addr, routine_name.len);
|
||||||
|
offset += routine_name.len;
|
||||||
|
/* comp_lits aligns the start of the literal area on a NATIVE_WSIZE boundary.*/
|
||||||
|
padsize = PADLEN(offset, NATIVE_WSIZE);
|
||||||
|
if (padsize)
|
||||||
|
{
|
||||||
|
emit_immed(PADCHARS, padsize);
|
||||||
|
offset += padsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
dqloop(&literal_chain, que, p)
|
||||||
|
{
|
||||||
|
assert (p->rt_addr == offset);
|
||||||
|
MV_FORCE_NUMD(&p->v);
|
||||||
|
if (p->v.str.len)
|
||||||
|
emit_pidr(p->rt_addr + ((char *) &p->v.str.addr - (char *)&p->v),
|
||||||
|
p->v.str.addr - (char *) stringpool.base, (int4 *)&p->v.str.addr);
|
||||||
|
else
|
||||||
|
p->v.str.addr = 0;
|
||||||
|
emit_immed((char *)&p->v, SIZEOF(p->v));
|
||||||
|
offset += SIZEOF(p->v);
|
||||||
|
}
|
||||||
|
assert(lits_size == offset);
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_callb
|
||||||
|
.type op_callb, %function
|
||||||
|
op_callb:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_callb, .-op_callb
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_calll
|
||||||
|
.type op_calll, %function
|
||||||
|
op_calll:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_calll, .-op_calll
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_callw
|
||||||
|
.type op_callw, %function
|
||||||
|
op_callw:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_callw, .-op_callw
|
|
@ -0,0 +1,56 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_callspb
|
||||||
|
.type op_callspb, %function
|
||||||
|
op_callspb:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_callspb, .-op_callspb
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_callspl
|
||||||
|
.type op_callspl, %function
|
||||||
|
op_callspl:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_callspl, .-op_callspl
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_callspw
|
||||||
|
.type op_callspw, %function
|
||||||
|
op_callspw:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_callspw, .-op_callspw
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_contain
|
||||||
|
.type op_contain, %function
|
||||||
|
op_contain:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_contain, .-op_contain
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_currtn
|
||||||
|
.type op_currtn, %function
|
||||||
|
op_currtn:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_currtn, .-op_currtn
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_equ
|
||||||
|
.type op_equ, %function
|
||||||
|
op_equ:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_equ, .-op_equ
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_equnul
|
||||||
|
.type op_equnul, %function
|
||||||
|
op_equnul:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_equnul, .-op_equnul
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_exfun
|
||||||
|
.type op_exfun, %function
|
||||||
|
op_exfun:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_exfun, .-op_exfun
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_extcall
|
||||||
|
.type op_extcall, %function
|
||||||
|
op_extcall:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_extcall, .-op_extcall
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_extexfun
|
||||||
|
.type op_extexfun, %function
|
||||||
|
op_extexfun:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_extexfun, .-op_extexfun
|
|
@ -0,0 +1,27 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
.align 2
|
||||||
|
.global op_extjmp
|
||||||
|
.type op_extjmp, %function
|
||||||
|
op_extjmp:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_extjmp, .-op_extjmp
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_fetchintrrpt
|
||||||
|
.type op_fetchintrrpt, %function
|
||||||
|
op_fetchintrrpt:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_fetchintrrpt, .-op_fetchintrrpt
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_fnget
|
||||||
|
.type op_fnget, %function
|
||||||
|
op_fnget:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_fnget, .-op_fnget
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_fnzextract
|
||||||
|
.type op_fnzextract, %function
|
||||||
|
op_fnzextract:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_fnzextract, .-op_fnzextract
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_follow
|
||||||
|
.type op_follow, %function
|
||||||
|
op_follow:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_follow, .-op_follow
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forcenum
|
||||||
|
.type op_forcenum, %function
|
||||||
|
op_forcenum:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forcenum, .-op_forcenum
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forchk1
|
||||||
|
.type op_forchk1, %function
|
||||||
|
op_forchk1:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forchk1, .-op_forchk1
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forinit
|
||||||
|
.type op_forinit, %function
|
||||||
|
op_forinit:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forinit, .-op_forinit
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forintrrpt
|
||||||
|
.type op_forintrrpt, %function
|
||||||
|
op_forintrrpt:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forintrrpt, .-op_forintrrpt
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forlcldob
|
||||||
|
.type op_forlcldob, %function
|
||||||
|
op_forlcldob:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forlcldob, .-op_forlcldob
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forlcldol
|
||||||
|
.type op_forlcldol, %function
|
||||||
|
op_forlcldol:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forlcldol, .-op_forlcldol
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forlcldow
|
||||||
|
.type op_forlcldow, %function
|
||||||
|
op_forlcldow:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forlcldow, .-op_forlcldow
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_forloop
|
||||||
|
.type op_forloop, %function
|
||||||
|
op_forloop:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_forloop, .-op_forloop
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_gettruth
|
||||||
|
.type op_gettruth, %function
|
||||||
|
op_gettruth:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_gettruth, .-op_gettruth
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_iretmvad
|
||||||
|
.type op_iretmvad, %function
|
||||||
|
op_iretmvad:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_iretmvad, .-op_iretmvad
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_linefetch
|
||||||
|
.type op_linefetch, %function
|
||||||
|
op_linefetch:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_linefetch, .-op_linefetch
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_linestart
|
||||||
|
.type op_linestart, %function
|
||||||
|
op_linestart:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_linestart, .-op_linestart
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofcallb
|
||||||
|
.type op_mprofcallb, %function
|
||||||
|
op_mprofcallb:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofcallb, .-op_mprofcallb
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofcalll
|
||||||
|
.type op_mprofcalll, %function
|
||||||
|
op_mprofcalll:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofcalll, .-op_mprofcalll
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofcallspb
|
||||||
|
.type op_mprofcallspb, %function
|
||||||
|
op_mprofcallspb:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofcallspb, .-op_mprofcallspb
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofcallspl
|
||||||
|
.type op_mprofcallspl, %function
|
||||||
|
op_mprofcallspl:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofcallspl, .-op_mprofcallspl
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofcallspw
|
||||||
|
.type op_mprofcallspw, %function
|
||||||
|
op_mprofcallspw:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofcallspw, .-op_mprofcallspw
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofcallw
|
||||||
|
.type op_mprofcallw, %function
|
||||||
|
op_mprofcallw:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofcallw, .-op_mprofcallw
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofexfun
|
||||||
|
.type op_mprofexfun, %function
|
||||||
|
op_mprofexfun:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofexfun, .-op_mprofexfun
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofextcall
|
||||||
|
.type op_mprofextcall, %function
|
||||||
|
op_mprofextcall:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofextcall, .-op_mprofextcall
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofextexfun
|
||||||
|
.type op_mprofextexfun, %function
|
||||||
|
op_mprofextexfun:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofextexfun, .-op_mprofextexfun
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofforchk1
|
||||||
|
.type op_mprofforchk1, %function
|
||||||
|
op_mprofforchk1:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofforchk1, .-op_mprofforchk1
|
|
@ -0,0 +1,30 @@
|
||||||
|
#################################################################
|
||||||
|
# #
|
||||||
|
# Copyright 2001 Sanchez Computer Associates, Inc. #
|
||||||
|
# #
|
||||||
|
# This source code contains the intellectual property #
|
||||||
|
# of its copyright holder(s), and is made available #
|
||||||
|
# under a license. If you do not know the terms of #
|
||||||
|
# the license, please stop and do not read further. #
|
||||||
|
# #
|
||||||
|
#################################################################
|
||||||
|
|
||||||
|
.arch armv6
|
||||||
|
.fpu vfp
|
||||||
|
.text
|
||||||
|
|
||||||
|
.align 2
|
||||||
|
.global op_mprofforlcldob
|
||||||
|
.type op_mprofforlcldob, %function
|
||||||
|
op_mprofforlcldob:
|
||||||
|
@ args = 0, pretend = 0, frame = 0
|
||||||
|
@ frame_needed = 1, uses_anonymous_args = 0
|
||||||
|
@ link register save eliminated.
|
||||||
|
str fp, [sp, #-4]!
|
||||||
|
add fp, sp, #0
|
||||||
|
mov r3, #0
|
||||||
|
mov r0, r3
|
||||||
|
add sp, fp, #0
|
||||||
|
ldmfd sp!, {fp}
|
||||||
|
bx lr
|
||||||
|
.size op_mprofforlcldob, .-op_mprofforlcldob
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue