Patch title: Release 94 bulk changes
Abstract:
File: /pliant/language/declare/call.c
Key:
    Removed line
    Added line
   
// Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
//
// This program is free software; you can redistribute it an
// modify it under the terms of the GNU General Public Licen
// as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be u
// but WITHOUT ANY WARRANTY; without even the implied warran
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// version 2 along with this program; if not, write to the F
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA


#if defined(_LINUX_API_) && defined(_i386_)
// Copyright  Hubert Tonneau  hubert.tonneau@pliant.cx
//
// This program is free software; you can redistribute it an
// modify it under the terms of the GNU General Public Licen
// as published by the Free Software Foundation.
//
// This program is distributed in the hope that it will be u
// but WITHOUT ANY WARRANTY; without even the implied warran
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public
// version 2 along with this program; if not, write to the F
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA


#if defined(_LINUX_API_) && defined(_i386_)
  static Int kernel_call_registers[5] = {Register_EBX,Regist
  static Int kernel_call_registers[6] = {Register_EBX,Register_ECX,Register_EDX,Register_ESI,Register_EDI,Register_EBP};
  static Int kernel_modify_registers[1] = {Register_EAX};
  static Int kernel_return_registers[1] = {Register_EAX};
  static struct CompilingRules kernel_rules = {
    Function_flag_has_side_effects|
    Function_flag_byvalue_result_first|
    Function_flag_mapped_result_first|
    Function_flag_ro_byvalue|
    Function_flag_result_byvalue,
  static Int kernel_modify_registers[1] = {Register_EAX};
  static Int kernel_return_registers[1] = {Register_EAX};
  static struct CompilingRules kernel_rules = {
    Function_flag_has_side_effects|
    Function_flag_byvalue_result_first|
    Function_flag_mapped_result_first|
    Function_flag_ro_byvalue|
    Function_flag_result_byvalue,
    kernel_call_registers, 5,
    kernel_call_registers, 6,
    kernel_modify_registers, 1,
    kernel_modify_registers, 1,
    kernel_return_registers, 1 };
#else
  #define kernel_rules external_rules
#endif



#if (defined(_LINUX_API_) || defined(_POSIX_API_)) && define
  static Int external_call_registers[6] = {16,17,18,19,20,21
  static Int external_modify_registers[6] = {16,17,18,19,20,
  static Int external_return_registers[1] = {0};
  static struct CompilingRules external_rules = {
    Function_flag_has_side_effects|
    Function_flag_byvalue_result_first|
    Function_flag_mapped_result_first|
    Function_flag_ro_byvalue|
    Function_flag_result_byvalue,
    external_call_registers, 6,
    external_modify_registers, 6,
    external_return_registers, 1 };
#endif
    kernel_modify_registers, 1,
    kernel_modify_registers, 1,
    kernel_return_registers, 1 };
#else
  #define kernel_rules external_rules
#endif



#if (defined(_LINUX_API_) || defined(_POSIX_API_)) && define
  static Int external_call_registers[6] = {16,17,18,19,20,21
  static Int external_modify_registers[6] = {16,17,18,19,20,
  static Int external_return_registers[1] = {0};
  static struct CompilingRules external_rules = {
    Function_flag_has_side_effects|
    Function_flag_byvalue_result_first|
    Function_flag_mapped_result_first|
    Function_flag_ro_byvalue|
    Function_flag_result_byvalue,
    external_call_registers, 6,
    external_modify_registers, 6,
    external_return_registers, 1 };
#endif