root/src/cmd/6g/galign.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. linkarchinit
  2. betypeinit

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include <u.h>
#include <libc.h>
#include "gg.h"

int     thechar = '6';
char*   thestring       = "amd64";
LinkArch*       thelinkarch = &linkamd64;

void
linkarchinit(void)
{
        if(strcmp(getgoarch(), "amd64p32") == 0)
                thelinkarch = &linkamd64p32;
}

vlong MAXWIDTH = 1LL<<50;

int     addptr = AADDQ;
int     movptr = AMOVQ;
int     leaptr = ALEAQ;
int     cmpptr = ACMPQ;

/*
 * go declares several platform-specific type aliases:
 * int, uint, float, and uintptr
 */
Typedef typedefs[] =
{
        "int",          TINT,           TINT64,
        "uint",         TUINT,          TUINT64,
        "uintptr",      TUINTPTR,       TUINT64,
        0
};

void
betypeinit(void)
{
        widthptr = 8;
        widthint = 8;
        widthreg = 8;
        if(strcmp(getgoarch(), "amd64p32") == 0) {
                widthptr = 4;
                widthint = 4;
                addptr = AADDL;
                movptr = AMOVL;
                leaptr = ALEAL;
                cmpptr = ACMPL;
                typedefs[0].sameas = TINT32;
                typedefs[1].sameas = TUINT32;
                typedefs[2].sameas = TUINT32;
                
        }

        zprog.link = P;
        zprog.as = AGOK;
        zprog.from.type = D_NONE;
        zprog.from.index = D_NONE;
        zprog.from.scale = 0;
        zprog.to = zprog.from;

        listinit6();
}

/* [<][>][^][v][top][bottom][index][help] */