1f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===- NullaryOp.cpp ------------------------------------------------------===//
2f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
3f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//                     The MCLinker Project
4f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
5f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// This file is distributed under the University of Illinois Open Source
6f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// License. See LICENSE.TXT for details.
7f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//
8f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
937b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Script/NullaryOp.h"
10f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
1137b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Script/Operand.h"
1237b74a387bb3993387029859c2d9d051c41c724eStephen Hines#include "mcld/Target/TargetLDBackend.h"
1337b74a387bb3993387029859c2d9d051c41c724eStephen Hines
1437b74a387bb3993387029859c2d9d051c41c724eStephen Hinesnamespace mcld {
15f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
16f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines// NullaryOp
17f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines//===----------------------------------------------------------------------===//
1837b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <>
1937b74a387bb3993387029859c2d9d051c41c724eStephen HinesIntOperand* NullaryOp<Operator::SIZEOF_HEADERS>::eval(
2037b74a387bb3993387029859c2d9d051c41c724eStephen Hines    const Module& pModule,
2137b74a387bb3993387029859c2d9d051c41c724eStephen Hines    const TargetLDBackend& pBackend) {
22f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  IntOperand* res = result();
23f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  res->setValue(pBackend.sectionStartOffset());
24f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  return res;
25f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
26f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
2737b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <>
2837b74a387bb3993387029859c2d9d051c41c724eStephen HinesIntOperand* NullaryOp<Operator::MAXPAGESIZE>::eval(
2937b74a387bb3993387029859c2d9d051c41c724eStephen Hines    const Module& pModule,
3037b74a387bb3993387029859c2d9d051c41c724eStephen Hines    const TargetLDBackend& pBackend) {
31f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  IntOperand* res = result();
32f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  res->setValue(pBackend.abiPageSize());
33f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  return res;
34f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
35f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines
3637b74a387bb3993387029859c2d9d051c41c724eStephen Hinestemplate <>
3737b74a387bb3993387029859c2d9d051c41c724eStephen HinesIntOperand* NullaryOp<Operator::COMMONPAGESIZE>::eval(
3837b74a387bb3993387029859c2d9d051c41c724eStephen Hines    const Module& pModule,
3937b74a387bb3993387029859c2d9d051c41c724eStephen Hines    const TargetLDBackend& pBackend) {
40f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  IntOperand* res = result();
41f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  res->setValue(pBackend.commonPageSize());
42f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines  return res;
43f33f6de54db174aa679a4b6d1e040d37e95541c0Stephen Hines}
4437b74a387bb3993387029859c2d9d051c41c724eStephen Hines
4537b74a387bb3993387029859c2d9d051c41c724eStephen Hines}  // namespace mcld
46