This is link_code.c in view mode; [Download] [Up]
/*
* PCN System Linker -- pcnlink
* Author: Steve Tuecke
* Argonne National Laboratory
*
* Please see the DISCLAIMER file in the top level directory of the
* distribution regarding the provisions under which this software
* is distributed.
*
* link_code.c - Support routines for link_code.pcn
*
* Foreign procedures used for code generation into the custom info file.
*/
#include "link_internal.h"
/*
* _p_link_code_header()
*/
void _p_link_code_header(buf, buf_len, file_number, module_number,
proc_number)
char_t *buf;
int_t *buf_len;
int_t *file_number;
int_t *module_number;
int_t *proc_number;
{
sprintf((char *) buf,
"SC pc_%ld_%ld_%ld[] = {\n",
(long) *file_number, (long) *module_number, (long) *proc_number);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_header(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_header() */
/*
* _p_link_code_fork()
*/
void _p_link_code_fork(buf, buf_len, opcode, opword, file_number,
module_number, proc_number)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
int_t *file_number;
int_t *module_number;
int_t *proc_number;
{
sprintf((char *) buf,
"0x%lx,(code_t)(&_p_%ld_%ld_%ld),\n",
(unsigned long) *opword, (long) *file_number,
(long) *module_number, (long) *proc_number);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_fork(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_fork() */
/*
* _p_link_code_recurse()
*/
void _p_link_code_recurse(buf, buf_len, opcode, opword, file_number,
module_number, proc_number)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
int_t *file_number;
int_t *module_number;
int_t *proc_number;
{
sprintf((char *) buf,
"0x%lx,(code_t)(&_p_%ld_%ld_%ld),",
(unsigned long) *opword, (long) *file_number,
(long) *module_number, (long) *proc_number);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_recurse(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_recurse() */
/*
* _p_link_code_halt()
*/
void _p_link_code_halt(buf, buf_len, opcode, opword)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
{
sprintf((char *) buf,
"0x%lx,",
(unsigned long) *opword);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_halt(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_halt() */
/*
* _p_link_code_default()
*/
void _p_link_code_default(buf, buf_len, opcode, opword)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
{
sprintf((char *) buf,
"0x%lx,",
(unsigned long) *opword);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_default(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_default() */
/*
* _p_link_code_try()
*/
void _p_link_code_try(buf, buf_len, opcode, opword, file_number,
module_number, proc_number, jump_offset)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
int_t *file_number;
int_t *module_number;
int_t *proc_number;
int_t *jump_offset;
{
sprintf((char *) buf,
"0x%lx,(code_t)(&(pc_%ld_%ld_%ld[%ld])),\n",
(unsigned long) *opword, (long) *file_number,
(long) *module_number, (long) *proc_number, (long) *jump_offset);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_try(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_try() */
/*
* _p_link_code_put_data()
*/
void _p_link_code_put_data(buf, buf_len, opcode, opword, tag_string,
file_number, module_number,
proc_number, data_loc)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
char_t *tag_string;
int_t *file_number;
int_t *module_number;
int_t *proc_number;
int_t *data_loc;
{
sprintf((char *) buf,
"0x%lx,(code_t)(&%s_%ld_%ld_%ld_%ld),\n",
(unsigned long) *opword, tag_string, (long) *file_number,
(long) *module_number, (long) *proc_number, (long) *data_loc);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_put_data(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_put_data() */
/*
* _p_link_code_copy_mut()
*/
void _p_link_code_copy_mut(buf, buf_len, opcode, opword)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
{
sprintf((char *) buf,
"0x%lx,",
(unsigned long) *opword);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_copy_mut(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_copy_mut() */
/*
* _p_link_code_call_foreign()
*/
void _p_link_code_call_foreign(buf, buf_len, opcode, opword)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
{
sprintf((char *) buf,
"0x%lx,(code_t)",
(unsigned long) *opword);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_call_foreign(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_call_foreign() */
/*
* _p_link_code_1_cell()
*/
void _p_link_code_1_cell(buf, buf_len, opcode, opword)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
{
sprintf((char *) buf,
"0x%lx,\n",
(unsigned long) *opword);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_1_cell(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_1_cell() */
/*
* _p_link_code_2_cell()
*/
void _p_link_code_2_cell(buf, buf_len, opcode, opword, word2)
char_t *buf;
int_t *buf_len;
int_t *opcode;
u_int_t *opword;
u_int_t *word2;
{
sprintf((char *) buf,
"0x%lx,0x%lx,\n",
(unsigned long) *opword, (unsigned long) *word2);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_2_cell(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_2_cell() */
/*
* _p_link_code_counter()
*/
void _p_link_code_counter(buf, buf_len, file_number, module_number,
proc_number, counter_number)
char_t *buf;
int_t *buf_len;
int_t *file_number;
int_t *module_number;
int_t *proc_number;
int_t *counter_number;
{
sprintf((char *) buf,
"\n#ifdef GAUGE\n(code_t)(&cnt_%ld_%ld_%ld[%ld]),\n#else\n0,\n#endif\n",
(long) *file_number, (long) *module_number,
(long) *proc_number, (long) *counter_number);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_counter(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_counter() */
/*
* _p_link_code_timer()
*/
void _p_link_code_timer(buf, buf_len, file_number, module_number,
proc_number, timer_number)
char_t *buf;
int_t *buf_len;
int_t *file_number;
int_t *module_number;
int_t *proc_number;
int_t *timer_number;
{
sprintf((char *) buf,
"\n#ifdef GAUGE\n(code_t)(&tm_%ld_%ld_%ld[%ld]),\n#else\n0,\n#endif\n",
(long) *file_number, (long) *module_number,
(long) *proc_number, (long) *timer_number);
#ifdef DEBUG_BUF_OVERFLOW
if (strlen((char *) buf) >= *buf_len)
{
fprintf(stderr,
"Fatal Error: _p_link_code_timer(): Buffer overflow\n");
exit_from_c(1);
}
#endif
} /* _p_link_code_timer() */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.